wordpress php和mysql连接经常断开连接

时间:2016-05-01 04:04:28

标签: php mysql wordpress server

我有一台配备160GB内存和40个CPU内核的ubuntu 15.04服务器。我正在运行一个高流量的wordpress网站,每天有近20万访客。网络服务器是nginx,缓存服务器是清漆。我的www.conf php配置是

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配置尝试了不同的值,但实际上没有任何调整。

日志中也没有任何内容。如何调试这两种服务之间的连接问题?

2 个答案:

答案 0 :(得分:0)

使用mysqltuner调整您的mysql配置。您很可能耗尽了已分配的资源,导致数据库连接超时/失败。

答案 1 :(得分:0)

所以,这就是我解决这个问题的方法。实际上mysql连接只有214,即使我设置它2000.我使用mysql中的命令检查它:

mysql> show variables like 'max_connections';

结果是:

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 214   |
+-----------------+-------+
1 row in set (0.00 sec)

问题是允许的最大打开文件数量太小,默认为1024.所以我使用打开文件限制来增加文件打开限制:

[mysqld]
.........
open_files_limit = 8192
max_connections = 2000
.........

...而mysqld_safe会在调用实际的mysqld守护进程之前自行增加ulimit。

正在运行的MySQL服务器将显示此次所需的max_connections设置:

mysql> show variables like 'max_connections';

+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 2000  |
+-----------------+-------+
1 row in set (0.00 sec)

因此解决了问题。