请稍等,正在为您加载...

2011-12-04 | 作者: | 评论:0 条 | 打印 | 收藏 | 字体:增大 减小 | 已阅读:117 views

有一台服务器 IBM P550 小型机上的 IHS 在连续运行几天后,其中的一个 httpd 进程占用内存接近几百兆。 IHS 其实就是Apache ,AIX 5.3 下运行在 worker 方式下,它被看作 未来的主流工作模式,它是一种多进程与多线程混合的模式。

Apache的主流工作模式MPM模式。MPM是Multi-Processing-Modules的简称,意思是多道处理模块。MPM模块有不同的种类。现在用的比较多的MPM种类主要是prefork和worker。prefork的工作方式是多个进程工作,每个进程会在处理一定数量的请求后结束(这个数量可能是无穷),没有线程的概念。worker被看作apache未来的主流工作模式,它是一种多进程与多线程混合的模式。

配置文件 httpd.conf 中 work 的参数配置项:

<IfModule worker.c>

ThreadLimit 100

ServerLimit 256

StartServers 8

MaxClients 1200

MinSpareThreads 100

MaxSpareThreads 300

ThreadsPerChild 100

MaxRequestsPerChild 0

</IfModule>

关键的问题出现在 MaxRequestsPerChild参数。MaxRequestsPerChild这个指令设定一个独立的子进程将能处理的请求数量。 在处理“MaxRequestsPerChild数字”个请求之后,子进程将会被父进程终止,这时候子进程占用的内存就会释放,如果再有访问请求,父进程会重新产生子进程进行处理。

如果MaxRequestsPerChild缺省设为0(无限)可以使每个子进程处理更多的请求,不会因为不断终止、启动子进程降低访问效率。 但如果占用了200~300M内存,即使负载下来时占用的内存也不会减少。内存较大的服务器可以设置为0或较大的数字。内存较小的服务器不妨设置成30、50、100,以防内存溢出。

1 Star2 Stars3 Stars4 Stars5 Stars6 Stars7 Stars8 Stars9 Stars10 Stars (还没有人给此篇文章打分)
Loading ... Loading ...
给 大愚网 投稿>>
  • 赶紧抢沙发

Comments are closed.