1. 程式人生 > >Mysql max_allowed_packet自動重置為1024的情況

Mysql max_allowed_packet自動重置為1024的情況

 

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命令,因為耗費效能,預設是關閉。