在問這個問題之前,我已經完成了很多的閱讀工作,所以讓我先說我沒有用完連接,內存或者cpu,我可以告訴,我也沒有用完文件描述符。通過mysql.sock在重負載下的PHP/MYSQL連接失敗
這裏的PHP拋出什麼我當MySQL是在重負載下:
無法通過套接字「/var/lib/mysql/mysql.sock」(11「資源連接到本地MySQL服務器暫時不可用「)
這種情況在負載下隨機發生 - 但是我按的越多,php越頻繁地向我拋出這個。發生這種情況時,我總是可以通過控制檯本地連接,並通過127.0.0.1從PHP連接到本地,而不是使用速度更快的unix套接字的「localhost」。
下面的幾個系統變量淘汰的常見問題:
cat /proc/sys/fs/file-max = 4895952
lsof | wc -l = 215778 (during "outages")
可用連接的最高使用率:26%(1000分之261)
InnoDB緩衝池/數據大小:10.0G/3.7G(充足ö室)
- 軟NOFILE 999999
- 硬NOFILE 999999
我實際運行MariaDB的(服務器版本:10.0.17-MariaDB的MariaDB的服務器)
這些結果都在正常負載下產生的,並在非工作時間運行mysqlslap,因此,查詢速度慢是不是一個問題 - 高連接。
有什麼建議嗎?我可以報告額外的設置/數據,如果有必要 - mysqltuner.pl說一切都好 -
並再次,這裏揭示的事情是通過IP連接工作得很好,在這些中斷快 - 我只是不能找出原因。
編輯:這裏是我的my.ini(一些值可能似乎從我最近的故障排除的變化有點高了,請記住,有在MySQL日誌中沒有錯誤,系統日誌,或dmesg的)
socket=/var/lib/mysql/mysql.sock
skip-external-locking
skip-name-resolve
table_open_cache=8092
thread_cache_size=16
back_log=3000
max_connect_errors=10000
interactive_timeout=3600
wait_timeout=600
max_connections=1000
max_allowed_packet=16M
tmp_table_size=64M
max_heap_table_size=64M
sort_buffer_size=1M
read_buffer_size=1M
read_rnd_buffer_size=8M
join_buffer_size=1M
innodb_log_file_size=256M
innodb_log_buffer_size=8M
innodb_buffer_pool_size=10G
[mysql.server]
user=mysql
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
open-files-limit=65535
什麼是你的磁盤I/O是怎樣的?如果你的瓶頸沒有被內存,CPU或連接命中,它最有可能與加載時的磁盤I/O無法跟上.sock相關。你有沒有嘗試過使用套接字? – user3036342 2015-03-03 10:14:17
在我絕對最糟糕的時候,仍然有0%的iowait(並且html頁面服務很好,速度很快,控制檯速度很快等,所以不是磁盤IO問題) - 我可以嘗試不使用本地套接字 - 但這隻會導致網絡問題引入一堆更多的加載已經繁忙的服務器的TCP堆棧。我寧願留在本地套接字的更快和推薦的方法。 – 2015-03-03 10:19:06
它是一個可能的錯誤。試着改變你的版本 – 2015-03-05 13:27:26