我发现有很多与Apache工作相关的东西MPM工作比Prefork MPM快,我知道nginx是另一种select,但我想坚持在Apache上使用htaccess和一些其他function,所以我做了比较使用Apache基准testing服务静态内容(bg.png)文件(大小= 232KB),我很惊讶地看到,Apache的prefork服务静态内容比工人更快的结果,差异不是那么大,但结果让我怀疑,我不是对下面的testing做出决定,请指导和帮助我。 两个testing都是在同一台服务器上使用loopback接口(127.0.0.1)localhost来完成的,以避免与networking/带宽延迟相关的疑惑,而且也不保持活动状态。 1)使用apache prefork进行testing prefork MPM StartServers 5 MinSpareServers 3 MaxSpareServers 5 ServerLimit 256 MaxClients 256 MaxRequestsPerChild 4000 ab -n 1000 -c 900 http://localhost/bg.png 文档path:/bg.png文档长度:235354字节 并发级别:900testing时间:1.053秒完成请求:1000失败请求:0写错误:0总传输:235983024字节HTML传输:235738292字节每秒请求数:949.68 [#/ sec] 947.690 [ms](mean)每个请求的时间:1.053 [ms](所有并发请求的平均值)传输速率:收到218855.25 [KB / sec] 连接次数(ms)最小平均值[+/- sd]中位数最大值连接:0 111 295.5 1 1000处理:3 137 207.8 59 631等待中:0 136 208.1 58 631总计:22 248 334.4 73 1024 (ms)50%73 […]
我在Ubuntu 10.04服务器上运行Apache prefork MPM。 它监听端口8080.一个进程以root身份运行,subprocess以www-data运行。 这是广告。 但是, root进程也会回答请求! 因此,一些请求以root身份被回答,最多的是www-data 。 当然这是不幸的。 这是什么原因? httpd.conf说 MinSpareServers 2 MaxSpareServers 5 StartServers 1 MaxClients 50
我为Apache进程分配了5GB的内存。 虽然基于每个Apache进程平均消耗42.5MB的事实,我已经在我的服务器上设置了以下内容(同时计算好像每个进程消耗50MB的内存): <IfModule mpm_prefork_module> StartServers 5 MinSpareServers 5 MaxSpareServers 10 MaxClients 100 MaxRequestsPerChild 0 </IfModule> 现在提问: 我如何确定要设置多lessStartServers ? 虽然无法设置Worker mpm (PHP等),负载平衡是我的高stream量的最佳select? 我如何减lessApache进程内存? 我的网站使用CDN为用户提供资源,而服务器最终只提供HTML。 我已经阅读了这里的答案,并在Google中search了很多这样的问题,但是找不到任何具体的东西。
我遇到了apache2 httpd问题。 Apache使用mpm_prefork和Web应用程序使用PHP。 我注意到,apache运行的机器在夜间突然下降到0%CPU使用率。 当我去调查问题时,我看到75个apache进程(75个是MaxClients),他们什么也没做。 当我把apache进程放大时,他们每个人都输出了下面的结果 Process 18845 attached – interrupt to quit restart_syscall(<… resuming interrupted call …>) = 0 poll([{fd=22, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) poll([{fd=22, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout) poll([{fd=22, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) poll([{fd=22, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 1000) = 0 (Timeout) poll([{fd=22, events=POLLIN|POLLPRI|POLLRDNORM|POLLRDBAND}], 1, 0) = 0 (Timeout) […]
我编辑我的httpd.conf有以下几点 StartServers 2 MinSpareServers 2 MaxSpareServers 4 MaxClients 150 MaxRequestsPerChild 0 但是当我做一个 root@server [/usr/local/apache/conf]# ps aux | grep httpd | wc -l 我得到65-75个进程。 任何想法,为什么设置不生效? 我正在使用prefork,以防万一。
我使用Apache来提供静态内容,然后反向代理到Rails服务器来处理dynamic内容,其中一些可能需要很长时间才能生成。 当Apache向一个反向代理发出一个请求时,Apache进程已经用完了,只是坐在那里等待响应(即时使用prefork mpm),或者它可以closures并处理其他请求,只处理来自Rails服务器的响应当答复准备好了?
Apache的mod_status输出是否能够帮助您调整Apache preforkconfiguration? 例如,使用Apache的mod_status,我明白了这一点 我的服务器平均得到3个请求/秒,范围是2-10个请求/秒,而一个秒杀是28个请求/秒。 我的服务器有7个平均请求正在处理,范围是1-86。 我的服务器有10个平均闲置的工人,范围是0-99。 这是否提供了什么我的Apache prefork设置应该是什么 – 特别是,MinSpareServers,MaxSpareServers,MaxClients和MaxRequestsPerChild? 或者这个数据是不相关的?
我得到错误,无法启动Apache时,我将我的ThreadPerChild设置为200,虽然我仍然有60%的可用RAM。 服务器是Windows Server 2008 R2,带有4GB RAM。 如何在这种情况下使用更多的RAM到Apache? 我的Apache MPMconfiguration: # WinNT MPM # ThreadsPerChild: constant number of worker threads in the server process # MaxRequestsPerChild: maximum number of requests a server process serves # Win32DisableAcceptEx: Use accept() rather than AcceptEx() to accept network connections <IfModule mpm_winnt_module> ThreadStackSize 8388608 ThreadsPerChild 170 MaxRequestsPerChild 0 #Win32DisableAcceptEx </IfModule> 我在apache的error_log中得到了什么: […]
我正在使用prefork Apache 2.2,我似乎无法弄清楚为什么有一个MaxClients指令和ServerLimit指令。 我明白,你需要增加这两个这一步 – 谷歌已经告诉我一遍又一遍。 据我所知,他们都可以随时控制Apache进程的最大数量。 他们为什么都存在? 对于prefork,他们似乎是多余的。 我错过了一个微妙的差异?
我们有一个LAMP设置,当Apache服务器(MySQL服务器不在这个盒子上)刚刚开始死掉时,它已经运行了半年了。 随着时间的推移,似乎已经开始产生越来越多的进程。 最终它会消耗所有的内存,服务器就会死亡。 我们正在使用prefork。 与此同时,我们只是不断增加内存,并将MaxClients和ServerLimit参数增加到512.但是,我们只是延长了崩溃。 数字仍然缓慢上升。 也许在一天之内,它会达到这个极限。 到底是怎么回事? 我们每秒只有15-20个请求。 我们有1 GB的内存,它不是一半使用。 没有交换。 为什么Apache创build越来越多的stream程? 这几乎就像是有一个泄漏的地方! 数据库框很好,它们不会延迟请求。 我们testing了一些查询一切都很快!