Ошибка error #2013: Lost connection to MySQL server

denisimus77

Новичок
Плавающая ошибка error #2013: Lost connection to MySQL server

Есть два сервака в сетке 150 мбит
1)CentOS 5.0, PHP Version 5.2.9, Mysql Client API version 5.1.34; 4 * Intel Xeon CPU 3.2GHz; 8Gb оперативы
2)CentOS 5.0, MySQL 5.0.45; 4 * Intel Xeon CPU 3.06GHz; 8Gb оперативы
Эти два сервака работают в связке, все обращения к MySql второго сервака идут только с первого.
При всем при этом LA на мускульном серваке не большой от 1 до 3, CPU используется даже не на 50%, память свободная имеется.
Сервак с которого идут запросы, на котором PHP, загружен сильно, LA в среднем наверно в районе 10-20, пики 50, основной ресурс которого не хватает это проц. (над этим работаем ведется оптимизация)

Это стата за 19 дней работы, что бы было понятно на сколько нагружен Mysql
(с max_connections = 512 в конфиге, сейчас уже стоит max_connections = 1024)
Соединения ø в час %
Максимально одновременных 513 --- ---
Неудачных попыток 8,566 18.69 0.14%
Прерваны 2,866 6.25 0.05%
Всего 5,947 k 12.98 k 100.00%

Имеют место такие ошибки, они появляются как-то случайно можно перезагружать страницу одну и туже по многу раз и ошибка редко, но появляется, таким образом ошибки проявляются на любой странице.
Я так понимаю этих ошибок по стате за 19 дней набежало 8,5К
error #2013: Lost connection to MySQL server at 'reading authorization packet', system error: 0 или
error #2013: Lost connection to MySQL server at 'reading final connect information', system error: 0

По логам видно, что обрывы случаются когда коннект не происходит в основном в течение 10 сек,
но бывает что обрыв случается при задержках от 5 до 9 сек и от 11 до 15, но реже.

Что бы было понятнее код для коннекта и фиксирования времени такой примерно:
$querytime_before = array_sum(explode(' ', microtime()));
$conn = mysql_connect($CONN['_HOST'], $CONN['_USER'], $CONN['_PASSWORD']);
if (!$conn) {
$querytime_after = array_sum(explode(' ', microtime()));
$query_time = $querytime_after - $querytime_before;
return check_mysql_error($conn, 'Cannot connect to the database '.$query_time);
}

В мускуле
max_connections = 1024
connect_timeout = 5
max_allowed_packet = 5M
wait_timeout = 28800
interactive_timeout = 28800
В пхп
mysql.connect_timeout = 60

Вопросы такие:
В какой лимит может упираться система при такой ошибке?
По сути это должен быть connect_timeout=5, но почему тогда есть 10 секундные задержки?
Почему же соединение не происходит так долго в чем проблема может быть и как с этим справиться?

Спасибо )
 

denisimus77

Новичок
Там пусто, мускул в свой лог не ругается
Он там пишет только что остановился да запустился, пару ошибок выводил при старте, а во время работы ни чего не пишет, может что-то включить нада дополнительно...?
есть такая переменная она в 1 установлена
log warnings = 1
 

svetasmirnova

маленький монстрик
Если опция log_error указана - этого достаточно. Чтобы писать ошибки соединений (а в данном случае это хорошо бы) log_warnings должна быть установлена в 2
 

denisimus77

Новичок
Да log_error указан
log_warnings поставил в 2
посмотрим что будет

-~{}~ 09.06.09 17:55:

пока таких ошибок произошло как минимум 5
в логе мускульном появился за это время один варнинг, который по времени совпадает с одной из ошибок, из манульного PHP лога.
Может случайно совпало, куда остальные то делись..
Мускул пишет:
090609 15:20:43 [Warning] Aborted connection 1998 to db: 'database' user: 'user' host: 'host' (Got an error reading communication packets)
в принципе тоже самое. что и клиент возвращает... что бы это значило?
 

svetasmirnova

маленький монстрик
Сервер не валится - это уже хорошо :)

> (с max_connections = 512 в конфиге, сейчас уже стоит max_connections = 1024)
> Соединения ø в час %
> Максимально одновременных 513 --- ---

А лимиты ОС смотрел?

Вообще тут инструменты типа tcpdump и системные логи - помощники.

Таймауты, кстати, проверь в скрипте ещё - может не ту секцию [client] читать/не читать вообще == дефолтные использовать.
 
Сверху