Назад | Перейти на главную страницу

Периодически «потеряно соединение с сервером MySQL при« чтении начального пакета связи »»

Наша веб-среда состоит из двух серверов.

  1. Веб-интерфейс. Dell PowerEdge R610, RHEL 5.5, Apache 2.2.17, php 5.2.14.
  2. Сервер базы данных. Dell PowerEdge R710, Windows 2008 R2 Standard x64, MySQL 5.5.11-log x64.

Обычно эти двое прекрасно работают вместе. Однако, когда я пытаюсь заставить их разговаривать через выделенную локальную сеть на их дополнительных сетевых адаптерах (на каждой машине их четыре), все становится нестабильно. У меня есть сетевая карта №2 на обеих машинах, настроенных в подсети 172.16.1.0/24, без шлюза или DNS-серверов (очевидно, поскольку это только эти две системы), и я помещаю частный IP-адрес каждой машины в файл hosts другой. После этого таблицы маршрутизации на обеих машинах выглядят нормально.

Я пробовал это как с перекрестным кабелем, проложенным непосредственно между двумя сетевыми адаптерами, так и через выделенный vlan на коммутаторе в стойке. В любом случае у меня периодически возникают проблемы с подключением. Это довольно небольшой процент подключений, которые терпят неудачу, но этого достаточно, чтобы вызвать серьезную проблему, и мне нужно вернуться к основному сетевому подключению, которое будет бороться со всем остальным трафиком и хостами на коммутаторе.

Полное сообщение об ошибке, которое появляется в журнале приложения:

SQLSTATE[HY000] [2013] Lost connection to MySQL server at 'reading initial communication packet', system error: 110

Я делаю что-то действительно глупое, из-за чего это не работает должным образом? Что-нибудь, что я могу проверить в MySQL, чтобы объяснить, почему он иногда не может подключиться?

Проверьте свои журналы, у меня недавно была такая же проблема, и оказалось, что это было поврежденное пространство имен innodb, из-за которого MySQL терял соединение при любом простом запросе.

-Тони

Первое, что я бы исключил, - это размер пакета не для сети, а для MySQL. Убедитесь, что вы установили max_allow_packet до достаточно большого значения, особенно если ваш веб-сайт использует данные BLOB.

Я видел странный форум по этой же проблеме. На форуме обсуждается удаление или игра с адресом привязки, несмотря на удаленные подключения.

Пожалуйста, посмотрите на это и посмотрите, поможет ли это.

Ошибка MySQL 110 выглядит как «Превышено время ожидания соединения». Убедитесь, что соединение работает за пределами MySQL (проверьте связь с другим хостом, попробуйте подключиться к порту 3306 MySQL). Если это не сработает, проверьте настройки брандмауэра на сервере. Попробуйте установить тип сети «Профиль домена». В остальном Windows Server 2008 любит вести себя очень странно.