當mysql用戶超過max_user_connections時,訪問者會收到Mysql錯誤,並返回當前值爲30 ,但max_connections和max_user_connections設置爲1000.發生問題時,CPU達到幾乎98%。錯誤!:SQLSTATE [42000] [1226]'max_user_connections'資源(當前值:30),但max_user_connections配置爲1000
在mysql錯誤日誌中,我們收到了來自其他用戶的大量拒絕訪問錯誤,約有5000個拒絕連接。我的問題不是爲什麼PHP腳本需要所有這些連接,而是知道爲什麼不應用配置的變量max_user_connections和max_connections。那些配置爲1000,但錯誤消息返回30.它是如何可能的?
我激活了log_warnings = 2,以獲得更多信息,但我們沒有獲得額外的信息。任何想法爲什麼這種行爲?或者如何審計mysql以查找此問題的來源?
接收到的錯誤信息是:
錯誤!:SQLSTATE [42000] [1226]用戶 'some_user' 已經超過了 'MAX_USER_CONNECTIONS' 資源(當前值:30)
select @@session.max_user_connections, @@global.max_connections;
+--------------------------------+--------------------------+
| @@session.max_user_connections | @@global.max_connections |
+--------------------------------+--------------------------+
| 1000 | 1000 |
+--------------------------------+--------------------------+`
show global variables like '%connections%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| extra_max_connections | 1 |
| max_connections | 1000 |
| max_user_connections | 1000 |
+-----------------------+-------+
show status like '%connected%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_connected | 4 |
+-------------------+-------+
select user,max_user_connections from mysql.user where host='localhost'\G
user: some_user
max_user_connections: 0
user: another_user
max_user_connections: 0`
誤差似乎是: 錯誤:1226 SQLSTATE:42000(ER_USER_LIMIT_REACHED)
消息:用戶 '%s' 的已超過 '%s' 的資源(當前值:%LD)
而不是:
錯誤:1203 SQLSTATE:42000(ER_TOO_MANY_USER_CONNECTIONS)
消息:用戶%s已經具有比 'MAX_USER_CONNECTIONS' 活動連接更
我們使用MariaDB的,版本:
select version();
+------------------------+
| version() |
+------------------------+
| 5.5.44-MariaDB-cll-lve |
+------------------------+
我會通過檢查每個腳本只有每腳本一次,而不是多次連接開始。 – RiggsFolly
如果錯誤消息標識正在運行的腳本,請向我們顯示腳本 – RiggsFolly
您還正在使用哪種版本的MYSQL? – RiggsFolly