为啥有这么多 apache 进程在运行?
Posted
技术标签:
【中文标题】为啥有这么多 apache 进程在运行?【英文标题】:Why there are so many apache processes running?为什么有这么多 apache 进程在运行? 【发布时间】:2014-01-01 08:32:15 【问题描述】:我正在使用免费的 EC2 Micro 实例托管一个在 Linux 上运行 Apache 的小型测试网站。
当我尝试用“top”查看后台进程时,我看到了很多(30+)个“apache”用户
PID user PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
12104 apache 20 0 429m 9024 2420 S 1.0 0.2 0:02.91 httpd
12273 apache 20 0 429m 9108 2504 S 1.0 0.2 0:01.20 httpd
...
我不确定这是否正常。这是否意味着我可能被某人/病毒附身?
附: 我现在只希望 2-3 个测试用户使用它。这是一个 php + apache + mysql 架构师。
谢谢。
【问题讨论】:
您能澄清几件事:网站有多小?您希望网站上有几十个用户还是少数几个?多少是很多? 100 个 apache 进程还是十几个? 另外,您使用的是什么语言和 Apache 绑定? 我现在只希望 2-3 个测试用户使用它。这是一个 php + apache + mysql 架构师。 您的 Apache 配置对此有何看法? 【参考方案1】:Apache 将预先创建工作进程,因此,当出现负载峰值时,这些进程可以立即接收请求,而不是等待主进程产生足够多的请求。检查您的 httpd.conf 中的 MinSpareServers、MaxSpareServers 和 ServerLimit。
【讨论】:
这是有道理的。但是,我将 MaxSpareSevers 更改为 12(保持 ServerLimit 和 MaxClient 为 128),重新启动 apache,但我仍然看到 30 多个 apache 进程。有什么想法吗?谢谢! 在您的 httpd 配置文件中搜索字符串“server-status”。默认配置文件有一个示例,已注释掉,说明特殊 URL your.server/server-status 如何提供有关服务器和进程正在做什么的各种信息。删除 cmets,更改“接受自”部分以允许从您的客户端访问(默认拒绝任何地方),重新启动服务器,并检查特殊 URL。 server-info 也有类似的东西,但 server-status 有更多信息。以上是关于为啥有这么多 apache 进程在运行?的主要内容,如果未能解决你的问题,请参考以下文章