Je reçois cet avertissement dans mysql,
[Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' Host: 'localhost' (Got an error reading communication packets)
J'ai parcouru quelques sujets sur Google et, selon certaines suggestions, j'ai augmenté le max_allowed_packet
de 128 to 512 to 1024
toujours le même comportement.
J'utilise Drupal 7, et oui il y a beaucoup de types de données blob, mais 1024 Mb
de max_allowed_packet
devrait suffire à mon avis.
Une autre solution de contournement pour surmonter cet avertissement?
ÉDITER:
Ajout de certains paramètres comme suggestions/réponse de @ Rolando, je reçois toujours le même avertissement.
Ma configuration mysql ressemble à ceci:
[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
Mon application utilise uniquement InnoDB, mais il existe peu de bases de données comme mysql, fournies avec les installations mysql standard, seules celles qui utilisent le type de moteur MyISAM, je suppose que cela ne devrait pas être mon souci cependant.
Comme vous pouvez le voir, j'ai également une réplication, l'avertissement est le même sur le serveur répliqué également, dont la configuration est identique à celle-ci.
Je suis heureux que vous ayez dit que toutes vos données sont InnoDB, je peux donc répondre comme suit: Si max_allowed_packet est au maximum à 1G et vous avez toujours des problèmes, il n'y a vraiment que deux endroits à regarder:
J'ai abordé quelque chose comme il y a environ 2 ans
Aug 01, 2011
: Comment max_allowed_packet affecte-t-il la sauvegarde et la restauration d'une base de données?Apr 20, 2011
: MySQL donne l'erreur "Out of Memory" lors de l'insertion d'un gros fichier. D'où cette limitation de taille de fichier se produit-elle?Vous devez augmenter les journaux de transactions InnoDB . Voici les étapes pour augmenter en toute sécurité innodb_log_buffer_size et innodb_log_file_size :
Étape 01: ajoutez-les à /etc/my.cnf
[mysqld]
innodb_log_buffer_size = 32M
innodb_log_file_size = 2047M
Étape 02: exécutez cela dans mysql
mysql> SET GLOBAL innodb_fast_shutdown = 0;
Étape 03: Arrêtez mysql
service mysql stop
Étape 04: Écarter les anciens journaux
mv ib_logfile0 ib_logfile0.bak
mv ib_logfile1 ib_logfile1.bak
Étape 05: démarrez mysql
service mysql start
C'est ça.
L'infrastructure InnoDB devrait maintenant avoir suffisamment d'espace de journalisation pour les BLOB de différentes tailles.
Essaie !!!
Après avoir lu le commentaire de @ user19292 en janvier '16 sur cette ancienne question, j'ai mis à jour de 5.7.9 à 5.7.12 et le problème a disparu.
Je viens de passer environ 5-6 heures à changer les options et à essayer différentes versions de MySQL, j'ai toujours eu l'erreur.
Je pense que c'est de l'eider parce que:
mysql_close()
ou équivalent.