一次linux web服务器优化记录

来源:互联网 发布:lol末日人工智能怎么玩 编辑:程序博客网 时间:2024/06/17 13:44

服务器是一个四核cpu、6G内存的linux主机

服务器上是以前同事装的apache2 php5 mysql5环境,放着两个没有访问量的网站和几个测试站。

前一周转过来一个上线有段时间的人才网站,采用Joomla开源CMS进行二次开发而成。

跑了几天后,网站还搞了个投票活动,有人刷票。

服务器开始出问题,主要表现在:

1、通过top查看的服务器压力40左右,cpu使用82%以上

2、服务器同时开了n(20-40)个httpd线程,其中10+个线程占用cpu 8%+,其它2-5%不等

3、网站页面打开速度缓慢,经常有mysql无法连接的提示

4、重启apache和mysql会缓解一下,尤其是mysql,mysql的cpu使用30%以上

5、跟踪apache访问,几乎所有访问都来自人才网。跟踪mysql的慢查询记录(2秒以上),每妙都会有2-5条慢查询,多数都是3-6妙,且都来自人才网。

 

做出以下应对:

1、减少apache不必要的log日志

apache中,提高loglevel的级别,由warn(警告)调整为crit(致命)

关闭所有网站的访问日志和错误日志

2、注释掉httpd.conf中用不到的模块

3、调整apache prefork模式的配置

ServerLimit        256
StartServers         5
MinSpareServers      5
MaxSpareServers     10
MaxClients         256
MaxRequestsPerChild  10000
其中,最重要的是 MaxRequestsPerChild ,默认设置为0,直接导致apache开了过多进程

 

4、mysql的配置没有调整,只是通过slow query log,判断哪些数据库查询效率底。

但因为不能动别人的库结构和php代码,只能向对方网站技术人员提交慢查询记录。建议对方尽量cache数据,确认所有的查询语句都使用了索引。

Joomla 也有过较多接触,运行效率确实不高。

 

mysql中几个比较重要的参数如下:

skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
set-variable=max_connections=1000

此类参数要根据环境需要做不同的调整

 

调整后,目前的服务器状态如下:

top - 12:36:34 up 24 days, 18:29,  1 user,  load average: 0.10, 0.22, 0.20
Tasks: 135 total,   1 running, 134 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.4%us,  0.2%sy,  0.0%ni, 97.3%id,  0.1%wa,  0.0%hi,  0.0%si,  0.0%st

 

服务器压力0.2 ,Cpu占用2-16%

httpd线程减少到2-10个, cpu占用超过8%的也明显减少

原创粉丝点击