我有一个MySQL 5.1.61数据库运行在两个负载平衡的Apache Web服务器后面,托管一个相当繁忙的(每天100K唯一身份)Wordpress站点.我正在使用Cloudflare,W3TC和Varnish进行缓存.大多数情况下,数据库服务器处理流量非常好."show full processlist"在任何给定时间显示20-40个查询,其中大多数处于睡眠状态.
但是,周期性地(特别是当流量高峰或清除大量注释时),MySQL停止响应.我会发现1000-1500个查询正在运行,许多"发送数据"等等.没有特定的查询似乎使数据库紧张(它们都是标准的Wordpress查询),但它似乎同时发出的请求量会导致所有查询挂断.我(通常)仍然可以登录,运行"显示完整的流程列表"或其他查询,但已经存在的1000多个查询.唯一的解决方案似乎是重启mysql(如果我无法连接,有时会通过kill -9暴力).
所有表都是innodb,服务器有8个内核,24GB内存,足够的磁盘空间,以下是我的my.cnf:
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
port=3306
skip-external-locking
skip-name-resolve
user=mysql
query_cache_type=1
query_cache_limit=16M
wait_timeout = 300
query_cache_size=128M
key_buffer_size=400M
thread_cache_size=50
table_cache=8192
skip-name-resolve
max_heap_table_size = 256M
tmp_table_size = 256M
innodb_file_per_table
innodb_buffer_pool_size = 5G
innodb_log_file_size=1G
#innodb_commit_concurrency = 32
#innodb_thread_concurrency = 32
innodb_flush_log_at_trx_commit = 0
thread_concurrency = 8
join_buffer_size = 256k
innodb_log_file_size = 256M
#innodb_concurrency_tickets = 220
thread_stack = 256K
max_allowed_packet=512M
max_connections=2500
# Default to using old password format for compatibility with mysql 3.x
# clients (those using the mysqlclient10 …Run Code Online (Sandbox Code Playgroud)