VPS内存优化的一点心得

jackxiang 2011-3-19 14:46 | |

才买的Godaddy 256内存的vps 还没有开始正式用就Cannot allocate memory!没办法还是地优化。

服务器资源
对于网站来说主要是CPU、TCP连接数这两者。 CPU表现在任务数上,在Linux下使用平均负载(loadavg)来衡量。可通过以下命令来查看

    cat /proc/loadavg

该文件显示了系统当前的平均负载和进程状况。

    0.20 0.18 0.12 1/80 11206

前三列分别为前1分钟、5分钟、15分钟内的平均负载。第四列为正在执行的进程数和系统的总进程数。第五列为上次执行的进程id。

对于单CPU的服务器,loadavg高于1,表明任务队列出现了等待,CPU忙不过来了。超过2以上就会明显感到性能降低了。
TCP连接数可通过以下命令查看:

    netstat -ant | grep :80 | wc -l

    netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’

  返回结果示例:
  LAST_ACK 5
  SYN_RECV 30
  ESTABLISHED 1597
  FIN_WAIT1 51
  FIN_WAIT2 504
  TIME_WAIT 1057
  其中的SYN_RECV表示正在等待处理的请求数;ESTABLISHED表示正常数据传输状态;TIME_WAIT表示处理完毕,等待超时结束的请求数。

Apcche内存使用量可以使用下面命令:

    ps -U apache u|awk ‘{S+=$6} END {print S}’

优化Apache(httpd)

KeepAlive 是否允许持续连接
MaxKeepAliveRequests 允许的持续连接的最大数
KeepAliveTimeout 持续连接在没有请求多少秒后切断
StartServers 最初启动时启动多少个服务器进程
MinSpareServers 空闲服务器进程的最小数
MaxSpareServers 空闲服务器进程的最大数
MaxRequestsPerChild 每个子进程处理的最大请求数

KeepAlive

前三个KeepAlive相关的指令用来设置持续连接。通常都是每个HTTP请求对应一个TCP连接,但对于一个包含许多图片的网页来说,客户端会在瞬间发出多个HTTP请求,此时多次建立TCP连接会大大降低响应速度。此时通过持续连接,可以允许用户在一个TCP连接中发出多个HTTP请求,减少 TCP连接建立次数,提高响应速度。

这种情况下,应当通过access_log统计出连续HTTP请求出现的次数、间隔时间、访问量,以确定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小发挥不了持续连接的作用;太大了,持续连接迟迟不断,浪费TCP连接数不说,更糟糕的是系统中的 httpd 进程数目会因此不断增加,使得系统负载升高,甚至会导致服务器失去响应。

但是在处理动态网页请求时,由于用户很少会瞬间请求多个动态网页(一般都是打开页面之后阅读好半天才点下一页),此时打开KeepAlive无异于浪费TCP连接数。

结论就是,放动态网页的就 KeepAlive Off 以提高吞吐量,放静态内容如图片、js代码等就 KeepAlive On 以减少TCP连接建立次数。

服务器进程数

再说说下面的 StartServers、MinSpareServers、MaxSpareServers。 StartServers基本不用修改,因为Apache会自动调节子进程数。 MinSpareServers和MaxSpareServers是空闲子进程数目,何为空闲子进程?假设某一时刻系统中共有30个httpd进程,其中一个是父进程,20个在处理请求,那么空闲子进程数就是9个。

空闲进程少了,大量的突发请求会使服务器疲于进程创建,降低效率;而太多反而会增加系统进程数,增大系统负载。

实际上,默认值已足够处理一般的突发请求,所以除非是流量特别特别巨大的网站,否则不要修改这些设置。

MaxRequestsPerChild

这个值设置子进程在处理多少个请求之后自动结束。这个选项是用来防止进程由于内存泄漏等使用内存过多。一般默认值即可。

总结

说来说去其实最重要的还是 KeepAlive 的设置,而性能调节也就是调整 KeepAlive、KeepAliveTimeout 值。
来源:http://www.javawo.com/vps-memory-optimization/

作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:http://jackxiang.com/post/4122/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!

评论列表
发表评论

昵称

网址

电邮

打开HTML 打开UBB 打开表情 隐藏 记住我 [登入] [注册]