Вчера ночью возникла проблема на боевом сервере. Mysqli сначала ругался в логах:
(HY000/2013): Lost connection to MySQL server at 'reading authorization packet', system error: 0
А затем был забанен сервером за излишек ошибок
(HY000/1129): Host 'server' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
Само обновление с mysql до mysqli было порядка двух недель назад, а упасть все решило в ночь с субботы на воскресенье, а сегодня еще и повторило на бис.
Возможно что сервер не успевает отработать изза малого connect_timeout.
Какое у него значение? Попробуйте увеличить его.
Вот боле подробное описание этого случая
connect_timeout дефолтовый, 10 секунд.
С mysql (не mysqli) подобных ошибок не было и при гораздо бОльшей нагрузке со стороны хоста.
Да ли mysqli падает именно ночью, когда ничего сверхестественного не происходит.
Хм… наверняка тут есть какая-то взаимосвязь.
Однако так или иначе скорее всего срывается связь с сервером на этапе подключения т.е. или проблема сети (пусть и на localhost, к примеру iptables внезапно жует пакеты) или сброс связи со стороны sql сервера или сброс связи со стороны mysqli.
Может выполняется какой-то приоритетный рутовый запрос?
Гугль говорит, что сервер рвет соединение с ошибкой, и это логично — иначе (если бы клиент не мог достучаться) он бы не знал, что было множество ошибок подключения.
Я грешу на mysqli, но не понимаю, лечится ли это :)
PHP поднят как php-fpm через nginx.
У меня используется spawn-php.
Попробуйте другую версию PHP — вдруг поможет…
А iptables активен на сервере? Я как-то давно встречал конфигурацию при которой он начинал иногда (редко но метко) жевать пакеты.
Да кто его знает — гдето чтото поменяли — и при совпадении свиста рака на горе, наступления воскресенье и коровьего нового года происходит крах внутреннего потока.
Ну в принципе да, обновиться никогда не мешает, тем более 5.3.8 в стейбл-репозитории уже.
Еще поговаривают про mysqlnd с его Improved persistent connections.