Recibo esta advertencia en mysql,
[Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' host: 'localhost' (Got an error reading communication packets)
He pasado por algunos de los temas en google y de acuerdo con alguna sugerencia he aumentado la max_allowed_packet
del 128 to 512 to 1024
sigue siendo el mismo comportamiento.
Estoy utilizando Drupal 7, y sí hay un montón de tipos de datos BLOB, pero 1024 Mb
de max_allowed_packet
debería ser suficiente en mi opinión.
¿Alguna otra solución para superar esta advertencia?
EDITAR:
Se agregaron algunas configuraciones como las sugerencias / respuestas de @ Rolando, todavía recibo la misma advertencia.
Mi configuración mysql se ve así:
[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
Mi aplicación usa solo InnoDB, pero hay pocas bases de datos como mysql, que viene con las instalaciones estándar de mysql que son solo las que usan el tipo de motor MyISAM, supongo que eso no debería ser mi preocupación.
Como puede ver, también tengo replicación, la advertencia es la misma en el servidor replicado, cuya configuración es idéntica a esta.
Respuestas:
Me alegra que haya dicho que todos sus datos son InnoDB, por lo que puedo responder de la siguiente manera: si max_allowed_packet está maximizado en 1G y todavía tiene problemas, en realidad solo hay dos lugares para buscar:
Me dirigí a algo así como hace 2 años.
Aug 01, 2011
: ¿Cómo afecta max_allowed_packet a la copia de seguridad y restauración de una base de datos?Apr 20, 2011
: MySQL da el error "Sin memoria" al insertar un archivo grande. ¿De dónde surge esta limitación de tamaño de archivo?SUGERENCIAS
Necesita aumentar los registros de transacciones de InnoDB . Estos son los pasos para aumentar de forma segura innodb_log_buffer_size e innodb_log_file_size :
Paso 01: agréguelos a
/etc/my.cnf
Paso 02: ejecuta esto en mysql
Paso 03: cierre mysql
Paso 04: Mueva los registros antiguos a un lado
Paso 05: Inicie mysql
Eso es.
La infraestructura de InnoDB ahora debería tener suficiente espacio de registro para BLOB de diferentes tamaños.
Darle una oportunidad !!!
fuente
mysql.cnf
archivo. Hice lo que sugeriste, pero aún recibí las advertencias. Puedo vermax_allowed_packet
enmysqldump
que es simplemente16Mb
pero supongo que no es la causa.key_buffer_size
es una16Kb
y otra vez, debería ser algoMyISAM
y no estoy usandoMyISAM
el motor de almacenamiento en la aplicación.Después de leer el comentario de @ user19292 en Jan '16 sobre esta vieja pregunta, actualicé de 5.7.9 a 5.7.12 y el problema desapareció.
fuente
Acabo de pasar alrededor de 5-6 horas cambiando las opciones y probando diferentes versiones de MySQL, siempre recibí el error.
Creo que es eider porque:
mysql_close()
o equivalente.fuente