apache和mysql连接性能优化

上一篇 / 下一篇  2011-12-19 12:53:47 / 个人分类:服务器运维相关

一、关于apache

1、首先,在页面访问变慢情况发生时,使用 top 命令查看了服务器的负载情况,发现负载并不高,初步估计不是程序的问题。
2、然后,查看了线程中的 httpd 的数量, ps -aux | grep httpd | wc -l 发现,线程数已经达到了 apache 设置的最大值。由此断定是网站访问人数过多造成了访问过慢。 

3、为了验证,查看了连接数和当前的连接数,分别是
    netstat -ant | grep $ip:80 | wc -l
    netstat -ant | grep $ip:80 | grep EST | wc -l
    发现果然,连接数特别多,远远超过我们的估计值。

开始修改:

apache配置文件:httpd.conf

默认配置如下:

<IfModule mpm_prefork_module>
    StartServers          5                  起始进程数
    MinSpareServers       5                  最小空闲进程数(等待)
    MaxSpareServers       10                 最大等待进程数
    ServerLimit           256              允许最大连接数上线
    MaxClients            150              可同时处理的最大请求数
    MaxRequestsPerChild   0              每个子进程能够处理的最大请求数,0为无限
</IfModule>

更改配置如下:

<IfModule mpm_prefork_module>
    StartServers          10
    MinSpareServers       10
    MaxSpareServers       15
    ServerLimit           2000
    MaxClients            1500
    MaxRequestsPerChild   10000
</IfModule>

 此更改后,web服务器性能会大大提高,LR测试时,就不会老出现server has shutdown the connecttions或者connect timeout之类的错误了,剩下的就是程序代码优化的问题了

二、关于mysql

另外,数据库比如mysql之类的,还有一个max_connections之类的配置,一般需要打开,使得不会因为数据库的限制导致连接数上不来

MYSQL数据库安装完成后,默认最大连接数是100,一般流量稍微大一点的论坛或网站这个连接数是远远不够的,增加默认MYSQL连接数的方法有两个

方法一:进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100   修改为 max_connections=1000 服务里重起MYSQL即可

方法二:MySQL的最大连接数默认是100客户端登录:mysql -uusername -ppassword

设置新的最大连接数为200:mysql> set GLOBAL max_connections=200

显示当前运行的Query:mysql> show processlist

显示当前状态:mysql> show status

退出客户端:mysql> exit

查看当前最大连接数:mysqladmin -uusername -ppassword variables

ps:增加mysql的连接数对系统消耗其实影响不大


TAG:

引用 删除 yh2010   /   2011-12-19 18:39:51
5
引用 删除 patty123456   /   2011-12-19 14:52:14
Good. Thanks.
 

评分:0

我来说两句

Open Toolbar