Saya mendapatkan peringatan ini di mysql,
[Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' host: 'localhost' (Got an error reading communication packets)
Saya telah melalui beberapa topik di google dan menurut beberapa saran saya meningkatkan max_allowed_packet
dari 128 to 512 to 1024
masih perilaku yang sama.
Saya menggunakan Drupal 7, dan ya ada banyak jenis gumpalan data, tetapi 1024 Mb
dari max_allowed_packet
harus cukup menurut saya.
Adakah solusi lain untuk mengatasi peringatan ini?
EDIT:
Menambahkan beberapa pengaturan sebagai saran / jawaban @ Rolando, saya masih mendapatkan peringatan yang sama.
Konfigurasi mysql saya terlihat seperti ini:
[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
Aplikasi saya hanya menggunakan InnoDB, tetapi ada beberapa database seperti mysql, yang datang dengan instalasi standar mysql hanya yang menggunakan tipe mesin MyISAM, saya kira itu seharusnya tidak menjadi perhatian saya.
Seperti yang Anda lihat, saya juga memiliki replikasi, peringatannya juga sama di server yang direplikasi, yang konfigurasinya sama dengan ini.
Jawaban:
Saya senang Anda mengatakan semua data Anda adalah InnoDB sehingga saya dapat menjawab sebagai berikut: Jika max_allowed_packet maks. 1G dan Anda masih mengalami masalah, hanya ada dua tempat untuk dilihat:
Saya membahas sekitar 2 tahun yang lalu
Aug 01, 2011
: Bagaimana max_allowed_packet memengaruhi cadangan dan pemulihan database?Apr 20, 2011
: MySQL memberikan kesalahan "Kehabisan Memori" saat memasukkan file besar. Dari mana batasan filesize ini muncul?SARAN
Anda perlu menambah log transaksi InnoDB . Berikut adalah langkah-langkah untuk meningkatkan innodb_log_buffer_size dan innodb_log_file_size dengan aman :
Langkah 01: Tambahkan ini ke
/etc/my.cnf
Langkah 02: Jalankan ini di mysql
Langkah 03: Matikan mysql
Langkah 04: Pindahkan log lama ke samping
Langkah 05: Mulai mysql
Itu dia.
Infrastruktur InnoDB sekarang harus memiliki ruang logging yang cukup untuk berbagai ukuran BLOB.
Cobalah !!!
sumber
mysql.cnf
file. Saya melakukan seperti yang Anda sarankan, tetapi masih mendapatkan peringatan. Aku bisa melihatmax_allowed_packet
dimysqldump
hanya16Mb
tapi saya rasa itu tidak penyebabnya.key_buffer_size
hanya16Kb
dan sekali lagi itu harus sesuatu denganMyISAM
dan saya tidak menggunakanMyISAM
mesin penyimpanan dalam aplikasi.Setelah membaca komentar @ user19292 di Jan '16 pada pertanyaan lama ini, saya memutakhirkan dari 5.7.9 ke 5.7.12 dan masalahnya hilang.
sumber
Saya hanya menghabiskan waktu sekitar 5-6 jam untuk mengubah opsi dan mencoba berbagai versi MySQL, saya selalu mendapatkan kesalahan.
Saya pikir ini eider karena:
mysql_close()
atau setara.sumber