web服务器负载过高,怎么办?

web服务器负载过高,怎么办?

如题,服务器是dell2650双至强2.4Ghz CPU,2G内存。SCSI硬盘没做RAID,系统为RHAS3,主要跑一个论坛访问量比较大。现在机器负载一直很高,CPU一直在50%以上,这样是否表示机器带不动了要换更好的机器呢?
16:18:28  up 5 days,  9:22,  1 user,  load average: 17.99, 10.26, 8.22
440 processes: 414 sleeping, 25 running, 1 zombie, 0 stopped
CPU states:  cpu    user    nice  system    irq  softirq  iowait    idle
           total   80.7%    0.0%   10.7%   0.0%     2.1%    6.3%    0.0%
           cpu00   79.2%    0.0%    7.5%   0.0%     6.6%    6.6%    0.0%
           cpu01   80.3%    0.0%   12.1%   0.0%     0.9%    6.5%    0.0%
           cpu02   85.0%    0.0%    9.3%   0.0%     0.0%    5.6%    0.0%
           cpu03   78.5%    0.0%   14.0%   0.0%     0.9%    6.5%    0.0%


Mem:  2055440k av, 2028688k used,   26752k free,       0k shrd,   30396k buff
                   1541232k actv,  290644k in_d,   30040k in_c
Swap: 2096472k av,  219220k used, 1877252k free                  803016k cached


# vmstat 5 5
procs                      memory      swap          io     system         cpu
r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
22  6 219220  25200  49056 948332    2    1     1     0    0     0  0  0  0  0
2  2 219220  26116  49412 962984    4    0  3184   179 3600  3412 65  6  9 20
0  5 219220  26500  49632 974712    3    0  2376   168 2471  2677 49  5 23 22
13  3 219220  18608  49772 989628    1    0  3094   162 2594  2532 45  6 23 25
4  0 219220  27380  49908 993340    2    0  1897   158 2729  2768 60 11 14 14

Apache进程数也很多
# ps aux |grep httpd |wc -l
    253


另外发现有些SYN_RECV的连接,是否跟这个有关。请各位帮忙看下..

主要是看用户的访问速度怎么样?
如果速度太慢,有两种选择,换更好的机器or换更好的程序。
磁盘I/O过高,可能是访问量过大,

服务器不能尽快的发数据发送出去,大家在排队等待,http进程数就大了,看看是不是数据库sql语句
访问量是比较大,程序是Discuz,数据库为MYSQL现有1G多数据了,磁盘I/O等待确实也有,磁盘是老SCSI的接口SCSI-160的接口不是SCSI320的,传输速度可能比较低,如果加内存会好些吗?或者是做些什么优化?
可以试试将apache换为lighttpd,可以极大提高性能。


QUOTE:
原帖由 luocy2008 于 2007-3-24 23:17 发表
访问量是比较大,程序是Discuz,数据库为MYSQL现有1G多数据了,磁盘I/O等待确实也有,磁盘是老SCSI的接口SCSI-160的接口不是SCSI320的,传输速度可能比较低,如果加内存会好些吗?或者是做些什么优化?

可以试试将apache换为lighttpd,可以极大提高性能。
.................愚以为只是提供的模块相应少点吧,所以相对简洁,能提高性能!
至于到底能提高多少,为什么能提高:)
有理论或者实际的例子吗??
对于优化
内存少 ,空闲cpu少,加cpu,加内存
一。首先这种状况的出现是否平凡,不是爬虫等引起
二。考虑mysql能否优化
三。apache 能否优化
四。加机子:)

PHPWind负载能力大一些 更好的是是FireBird,还有不值得一提的偶的M2BBS
还有一些商用的分布论坛程序,当然价格很高
总之楼主要在硬件和软件之间有所选择,如果考虑到以后的发展就要弄一套性能和机器数目能成线性增长的分布式程序。
lighttpd的性能很强的,你一试就会知道的。
需要首先分析哪个部分是瓶颈。