Dostaję to ostrzeżenie w mysql,
[Warning] Aborted connection 21 to db: 'MyDB' user: 'MyUser' host: 'localhost' (Got an error reading communication packets)
Przejrzałem kilka tematów w google i według niektórych sugestii zwiększyłem max_allowed_packet
z 128 to 512 to 1024
wciąż tego samego zachowania.
Używam Drupal 7, i tak istnieje wiele typów danych kropelka, ale 1024 Mb
od max_allowed_packet
powinna być na tyle moim zdaniem.
Jakieś inne obejście, jak pokonać to ostrzeżenie?
EDYTOWAĆ:
Dodano niektóre ustawienia jako sugestie / odpowiedzi @ Rolando, nadal otrzymuję to samo ostrzeżenie.
Moja konfiguracja mysql wygląda następująco:
[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
Moja aplikacja korzysta tylko z InnoDB, ale istnieje niewiele baz danych, takich jak mysql, które są dostarczane ze standardowymi instalacjami mysql. Są to tylko te, które używają silnika MyISAM, ale chyba nie powinienem się tym przejmować.
Jak widać, mam również replikację, ostrzeżenie jest takie samo jak na replikowanym serwerze, którego konfiguracja jest identyczna jak ta.
Odpowiedzi:
Cieszę się, że powiedziałeś, że wszystkie twoje dane to InnoDB, więc mogę odpowiedzieć w następujący sposób: Jeśli max_allowed_packet jest maksymalny przy 1G i nadal masz problemy, tak naprawdę są tylko dwa miejsca:
Zajmowałem się czymś około 2 lata temu
Aug 01, 2011
: W jaki sposób pakiet max_allowed_packet wpływa na tworzenie kopii zapasowych i przywracanie bazy danych?Apr 20, 2011
: MySQL podaje błąd „Brak pamięci” podczas wstawiania dużego pliku. Skąd bierze się to ograniczenie rozmiaru pliku?PROPOZYCJE
Musisz zwiększyć dzienniki transakcji InnoDB . Oto kroki, aby bezpiecznie zwiększyć innodb_log_buffer_size i innodb_log_file_sile :
Krok 01: Dodaj je do
/etc/my.cnf
Krok 02: Uruchom to w mysql
Krok 03: Zamknij mysql
Krok 04: Odsuń stare dzienniki na bok
Krok 05: Uruchom mysql
Otóż to.
Infrastruktura InnoDB powinna teraz mieć wystarczającą ilość miejsca do rejestrowania dla obiektów BLOB o różnych rozmiarach.
Spróbuj !!!
źródło
mysql.cnf
plik. Zrobiłem tak, jak sugerowałeś, ale wciąż otrzymuję ostrzeżenia. Widzęmax_allowed_packet
wmysqldump
to tylko16Mb
, ale myślę, że nie jest przyczyną.key_buffer_size
jest po prostu16Kb
i znowu powinno być coś z tymMyISAM
i nie używamMyISAM
silnika pamięci masowej w aplikacji.Po przeczytaniu komentarza @ user19292 w styczniu '16 na temat tego starego pytania zaktualizowałem wersję z 5.7.9 do 5.7.12 i problem zniknął.
źródło
Właśnie spędziłem około 5-6 godzin zmieniając opcje i wypróbowując różne wersje MySQL, zawsze dostaję błąd.
Myślę, że to edredon, ponieważ:
mysql_close()
lub równoważny.źródło