Почему возникает Error while sending QUERY packet в MariaDb?

Приветствую.
В наличии сервер с Centos 7.2 и 5.5.52-MariaDB; крутится около 200 php демонов, у каждого свой коннект к БД через PDO; в БД таблица на 300 тысяч строк и весом в 50 Мб.
Периодически (в час по 5-7 штук) демоны отваливаются по ошибке "Error while sending QUERY packet". При то запросов каждый делает по 200-300 в час, т.е. демоны умирают не при первом обращении к БД. Все запросы - update строки по id (primary key) или select по id - выполняются за десятую долю секунды.

Прочитал, что возможная проблема - wait_timeout или max_allowed_packet , сменил их на 600 и 1024M соответственно, перезапустил демона БД, но проблема повторилась вновь.

Какие у вас есть мысли по этому поводу?
Спасибо.
  • Вопрос задан
  • 13125 просмотров
Решения вопроса 1
@dahujika Автор вопроса
Отвечу сам.
Короткая версия: в конструкторе pdo четвертым параметром добавить массив сPDO::MYSQL_ATTR_MAX_BUFFER_SIZE=>1024*1024*50,
где число - размер пакета в байтах.

Полная версия:
Частая рекомендация при подобной ошибке - увеличение wait_timeout и max_allowed_packet
в конфигурационном файле (/etc/my.cnf в моем случае), мне не помогло. Подробно тут.

Помогли же:
1. документация msyql, где указано, что you must increase this variable both in the client and in the server
2. топик о том, что во всем виноват pdo
3. комментарий на php.net о том, что у pdo есть свой собственный параметр MYSQL_ATTR_MAX_BUFFER_SIZE, который и надо увеличить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
modx4web-n-mobile
@modx4web-n-mobile
Привет Даниил,
спасибо что поделились данным вопросом - а Вы случайно не знаете как это же побороть в xPDO котрый юзается в MODX CMS? Может даже и хардкодом сделать временно... Буду рад отзыву
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы