Я получаю это предупреждение в MySQL,
[Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' host: 'localhost' (Got an error reading communication packets)
Я прошел через несколько тем в Google и по некоторым предположениям я увеличил max_allowed_packet
с 128 to 512 to 1024
того же поведения.
Я использую Drupal 7, и да, есть много типов данных BLOB-объектов, но , по моему мнению , 1024 Mb
этого max_allowed_packet
должно быть достаточно.
Любой другой обходной путь, как преодолеть это предупреждение?
РЕДАКТИРОВАТЬ:
Добавлены некоторые настройки в качестве предложений / ответа @ Rolando, но я получаю то же предупреждение.
Мой конфиг mysql выглядит так:
[client]
port = 3306
socket = /tmp/mysql.sock
default-character-set = utf8
[mysqld]
port = 3306
socket = /tmp/mysql.sock
skip-external-locking
key_buffer_size = 16K
max_allowed_packet = 1024M
table_open_cache = 128
sort_buffer_size = 64K
read_buffer_size = 256K
read_rnd_buffer_size = 256K
net_buffer_length = 2K
thread_stack = 192K
# Query cache disabled
thread_cache_size = 8
myisam-recover = BACKUP
max_connections = 100
thread_concurrency = 10
tmp_table_size = 128M
max_heap_table_size = 128M
log_error = /var/log/mysql/mysql-error.log
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log_warnings = 2
server-id = 1
binlog-format = row
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 1
log_bin = mysql-bin
log-slave-updates
relay-log=mysqld-relay-bin
expire_logs_days = 10
max_binlog_size = 100M
innodb_data_home_dir = /var/db/mysql
innodb_data_file_path = ibdata1:10M:autoextend
innodb_log_group_home_dir = /var/db/mysql
innodb_buffer_pool_size = 8G
character-set-server = utf8
#innodb_additional_mem_pool_size = 2M
innodb_log_file_size = 2047M
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 2
innodb_thread_concurrency = 8
innodb_lock_wait_timeout = 50
innodb_flush_method = O_DIRECT
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
default-character-set = utf8
[mysql]
default-character-set = utf8
[myisamchk]
key_buffer_size = 32M
sort_buffer_size = 32M
[mysqlhotcopy]
interactive-timeout
[mysqld_save]
syslog
Мое приложение использует только InnoDB, но есть несколько баз данных, подобных mysql, которые поставляются со стандартными установками mysql, и только те, которые используют тип движка MyISAM, я думаю, это не должно меня беспокоить.
Как вы видите, у меня тоже есть репликация, предупреждение тоже самое и на реплицированном сервере, конфигурация которого такая же.
Ответы:
Я рад, что вы сказали, что все ваши данные - InnoDB, поэтому я могу ответить следующим образом: Если max_allowed_packet увеличен до 1G, и у вас все еще есть проблемы, на самом деле есть только два места для поиска:
Я обратился что-то около 2 лет назад
Aug 01, 2011
: Как max_allowed_packet влияет на резервное копирование и восстановление базы данных?Apr 20, 2011
: MySQL выдает ошибку «Недостаточно памяти» при вставке большого файла. Откуда возникает это ограничение размера файла?SUGGESTIONS
Вам необходимо увеличить журналы транзакций InnoDB . Вот шаги для безопасного увеличения innodb_log_buffer_size и innodb_log_file_size :
Шаг 01: Добавьте это к
/etc/my.cnf
Шаг 02: Запустите это в MySQL
Шаг 03: Выключение MySQL
Шаг 04: отодвиньте старые бревна в сторону
Шаг 05: Запустите MySQL
Вот и все.
Инфраструктура InnoDB теперь должна иметь достаточно места для ведения журнала для BLOB-объектов различного размера.
Попробуйте!
источник
mysql.cnf
файл. Я сделал, как вы предложили, но все равно получил предупреждения. Я могу видеть ,max_allowed_packet
вmysqldump
это просто ,16Mb
но я думаю , что это не причина.key_buffer_size
просто16Kb
и снова это должно быть что-то с,MyISAM
и я не используюMyISAM
движок хранения в приложении.Прочитав комментарий @ user19292 в январе '16 по этому старому вопросу, я обновился с 5.7.9 до 5.7.12, и проблема исчезла.
источник
Я просто потратил около 5-6 часов, меняя опции и пробуя разные версии MySQL, я всегда получал ошибку.
Я думаю, что это eider, потому что:
mysql_close()
или эквивалентный.источник