Eu recebo este aviso no mysql,
[Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' host: 'localhost' (Got an error reading communication packets)
Já passei por alguns tópicos no google e de acordo com alguma sugestão aumentei o max_allowed_packet
de 128 to 512 to 1024
ainda o mesmo comportamento.
Estou usando o Drupal 7, e sim, existem muitos tipos de dados blob, mas 1024 Mb
deve max_allowed_packet
ser suficiente na minha opinião.
Alguma outra solução alternativa para superar esse aviso?
EDITAR:
Adicionadas algumas configurações como sugestões/respostas do @Rolando, ainda recebo o mesmo aviso.
Minha configuração do mysql está assim:
[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
Minha aplicação usa apenas o InnoDB, mas existem poucos bancos de dados como o mysql, que vem com as instalações padrão do mysql são apenas os que usam o tipo de mecanismo MyISAM, acho que isso não deve ser minha preocupação.
Como você pode ver eu também tenho replicação, o aviso é o mesmo no servidor replicado também, cuja configuração é idêntica a esta.
Fico feliz que você tenha dito que todos os seus dados são InnoDB para que eu possa responder da seguinte forma: Se max_allowed_packet estiver no máximo em 1G e você ainda estiver tendo problemas, há apenas dois lugares para procurar:
Eu abordei algo como cerca de 2 anos atrás
Aug 01, 2011
: Como max_allowed_packet afeta o backup e a restauração de um banco de dados?Apr 20, 2011
: MySQL dá erro "Out of Memory" ao inserir um arquivo grande. De onde vem essa limitação de tamanho de arquivo?SUGESTÕES
Você precisa aumentar os logs de transação do InnoDB . Aqui estão as etapas para aumentar com segurança innodb_log_buffer_size e innodb_log_file_size :
Passo 01: Adicione-os a
/etc/my.cnf
Etapa 02: execute isso no mysql
Etapa 03: Desligar o mysql
Passo 04: Mova os logs antigos de lado
Passo 05: Inicie o mysql
É isso.
A InnoDB Infrastructure agora deve ter espaço de log suficiente para BLOBs de tamanhos diferentes.
De uma chance !!!
Depois de ler o comentário de @ user19292 em janeiro de 16 sobre esta pergunta antiga, atualizei de 5.7.9 para 5.7.12 e o problema desapareceu.
Passei cerca de 5-6 horas alterando as opções e tentando diferentes versões do MySQL, sempre recebi o erro.
Eu acho que é eider porque:
mysql_close()
ou equivalente.