我有一個Ubuntu的15.04服務器,160GB的RAM和40個CPU核心。我正在運行一個高流量的wordpress站點,每天有近20萬名訪客。網絡服務器是nginx,緩存服務器是清漆。我www.conf PHP配置是wordpress php和mysql的連接頻繁斷開
pm = ondemand
pm.max_children = 300
pm.start_servers = 80
pm.min_spare_servers = 50
pm.max_spare_servers = 300
pm.process_idle_timeout = 10s
pm.max_requests = 1000
MySQL連接配置
sam-recover = BACKUP
max_connections = 2000
query_cache_limit = 0
query_cache_size = 0
log_error = /var/log/mysql/error.log
expire_logs_days = 10
max_binlog_size = 100M
innodb_log_file_size=268435456
innodb_log_buffer_size = 4G
innodb_buffer_pool_size = 8G
innodb_fast_shutdown = 0
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit=0
[mysqldump]
quick
quote-names
[mysql]
[isamchk]
key_buffer = 16M
sort_buffer_size = 32M
主要問題是,在PHP和MySQL數據庫的連接經常斷開連接,它顯示「錯誤建立數據庫連接」。 Mysql服務正常運行。當我重新啓動php5-fpm服務時,網站開始工作,但有時候以後會發生同樣的事情。
我已經嘗試了不同的pm配置值,但沒有任何調整實際工作。
日誌中也沒有任何內容。我怎樣才能調試這兩個服務之間的連接問題?
如果你有160GB的內存,你爲什麼只分配8到'innodb_buffer_pool_size'?對於專用數據庫實例,該事物應該佔可用內存的70-80%左右。此外,你需要檢查你的連接限制,「max_connections」應該比你需要的高得多,可能是4096或更多,這取決於系統負載。這一切都基於InnoDB的表格。 MyISAM很難擴展,應該避免。 – tadman
我正在考慮運行其他網站,所以我這樣做。 'innodb_buffer_pool_size'是否必須使用70-80%的內存。我會嘗試提高'max_connctions'的價值。 – uvishere
這不是強制性的,但你可以拋出的內存越多,你的InnoDB性能就會越快。如果你不在MySQL 5.7中,這也是需要考慮的事情,它是最快的版本。 – tadman