Mysql max_allowed_packet自動重置為1024的情況
阿新 • • 發佈:2018-12-17
max_allowed_packet指的是伺服器接收的包的大小,該值設定過小,可能導致資料寫入失敗,通常可以通過修改my.cnf或者在命令列通過set max_allowed_packet來實現。
但是在實際情況中,我們很多時候會遇到這樣的一種情況:通過各種方式設定了max_allowed_packet的值,但是一段時間後,max_allowed_packet還是莫名其妙的變成了1024,而my.cnf裡面的值還是之前設定的大於1024的值。
這個問題看起來很詭異,但是至少可以確定一點,那就是該值通過某某連線,在連線裡面通過set命令給重置了。
一般來說,引起該問題不外乎如下幾種情況:
設定不當:設定該值需要修改my.cnf配置,但是一共需要設定兩處,如下:
[client]
max_allowed_packet=10240
[mysqld]
max_allowed_packet=10240
mysqld裡面控制的是服務端,mysql裡面控制的是客戶端,如果只設置一處,則當有客戶端連線的時候,該值會被重置。
記憶體不足:當mysql執行大批次查詢語句大時候,因為伺服器記憶體不足,引起預警,mysql會重置這個值,已保證資料庫的穩定。
黑客攻擊:其實在生產環境下,大多數的情況,還真是被攻擊了,針對這個情況,需要集中檢視,安全不容小覷,mysql 有general_log, 會記錄所有執行的sql命令,因為耗費效能,預設是關閉。