点击在新窗口中浏览此图片

几天前阿权和陕兄调整服务器,陕兄和我一样头晕,他居然把一个机器的ssh远程登录服务去掉,然后重启了,结果直接叫机房帮忙开服务了。而我却忘记把apache的mpm模式的注释打开了,但我们找问题找了快一个小时,我还以为是服务器硬盘很有问题,差点去找另外一个服务器做尝试,陕兄也差点希望把原先的环境复制一份过来,后来发现了mpm没打开。

看看apache手册的说明:

引用
Apache HTTP服务器被设计为一个强大的、灵活的能够在多种平台以及不同环境下工作的服务器。不同的平台和不同的环境经常产生不同的需求,或是为了达到同样的最佳效果而采用不同的方法。Apache凭借它的模块化设计很好的适应了大量不同的环境。这一设计使得网站管理员能够在编译时和运行时凭借载入不同的模块来决定服务器的不同附加功能。

Apache2.0将这种模块化的设计延伸到了web服务器的基础功能上。这个版本带有多路处理模块(MPM)的选择以处理网络端口绑定、接受请求并指派子进程来处理这些请求。

将模块化设计延伸到这一层次主要有以下两大好处:

Apache可以更简洁、更有效地支持各种操作系统。尤其是在mpm_winnt中使用本地网络特性代替Apache1.3中使用的POSIX模拟层后,Windows版本的Apache现在具有更好的性能。这个优势借助特定的MPM同样延伸到了其他各种操作系统。
服务器可以为某些特定的站点进行定制。比如,需要更好伸缩性的站点可以选择象worker或event这样线程化的MPM,而需要更好的稳定性和兼容性以适应一些旧的软件的站点可以用prefork 。
从用户角度来看,MPM更像其他的Apache模块。主要的不同在于:不论何时,必须有且仅有一个MPM被载入到服务器中。现有的MPM列表可以在模块索引中找到。


linux下默认安装是 prefork 模式:

引用
这个多路处理模块(MPM)实现了一个非线程型的、预派生的web服务器,它的工作方式类似于Apache 1.3。它适合于没有线程安全库,需要避免线程兼容性问题的系统。它是要求将每个请求相互独立的情况下最好的MPM,这样若一个请求出现问题就不会影响到其他请求。

这个MPM具有很强的自我调节能力,只需要很少的配置指令调整。最重要的是将MaxClients设置为一个足够大的数值以处理潜在的请求高峰,同时又不能太大,以致需要使用的内存超出物理内存的大小。


如果没有打开,默认的连接数量是很小的,所以一般不能满足正常的服务器需求。可以看到第一个图片的变化,连接数一定的情况下,包含了图片的访问,所以带宽占用比后段要多,把图片访问转移,则余下网页,带宽变小,但连接数还没变化,所以持续在一定的带宽占用而无法上涨。后来打开了mpm的设置,设置好StartServers, MinSpareServers, MaxSpareServers, MaxClients就正常了,代码也是从别的地方参考的,自行调节:

<IfModule mpm_prefork_module>
   StartServers          5
   MinSpareServers       5
   MaxSpareServers      10
   ServerLimit        4000
   MaxClients         4000
   MaxRequestsPerChild   0
</IfModule>



原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
Tags:
发表评论
AD
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐