Apache和Mysql的并发配置

在测试页面并发压力的时候,并发到 80以后,响应速度急剧下降, CPU占用率急剧上升。经分析,是 Apache并发数和 Mysql并发数匹配问题。

Mysql 并发瓶颈
Mysql 的连接数到达 150 以上的时候,服务器 4 cpu 占有率会急增,性能会急剧下降。 Apache 并发 80 的情况下, mysql 连接数基本上到了配置的满额 200 max-connections=200 )。
 
Apache mysql 的并发关系
Apache 最大并发数配置是 600 ,大于 mysql 最大并发数 200 ,每个 apache 请求要对应一个 mysql 连接,而 Apache 的并发能力要远大于 mysql 服务器的并发能力。高并发情况下, mysql 的查询还没有返回结果,但下一次的 apache 请求已经到了,堆积效果就是 mysql 都是满额并发运行,可能导致连接 mysql 错误:“ too many connections …”。
 
Apache Mysql 的连接池
从上面分析可以看出, mysql_pconnect 连接 Mysql ,但没有控制和管理 mysql 连接数,可能导致 Mysql 服务器忙死。只要有连接池,就可以解决问题。
利用 apache mysql 的连接池,即控制 apache 的并发数。 apache 配置最大并发数(如 20 )小于 mysql 最大连接数。当并发过大的时候,就自动利用 apache 的队列来达到连接池的目的。虽然牺牲了 apache 性能,但保证了业务的稳定性和安全性,也不会导致 Mysql 服务器忙死。
apache 最大并发数配置的一个缺陷是:无法配置虚拟主机的并发数,只能配置全局并发数。
使用 Apache prefork 模式配置并发数:
http://www.shenmiguo.com/archives/2009/318_apache-mpm.html
Mysql 持久连接介绍:
http://www.shenmiguo.com/archives/2009/319_mysql-pconnect.html

你可能感兴趣的:(apache,mysql,测试,服务器)