如果我检查 top 命令,我会看到很多 Apache2 工作进程打开(通常空闲时最多有 10 个工作进程),并且消耗了大量资源。事实上,如果我在发生这种情况时访问该服务器中的 Web,加载速度会非常慢。
但如果我执行 netstat 命令:
# netstat -ant | grep :80
tcp6 0 0 :::80 :::* LISTEN
系统中没有用户(只有我尝试加载网站时的连接)
发生了什么事?我以为是 cronjob,但当时也没有 cronjob
是否有可能“调试”此类行为?
答案1
很可能之前存在 Apache 连接并且进程保持打开状态,这是 Apache 的标准做法。
根据您使用的 MPM(多处理模块)的不同,情况会有所不同,但可以通过修改相应的 mpm 配置来调整这些类型的设置。例如,我的服务器具有以下内容 -
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 0
</IfModule>
MPM 负责处理连接,并在响应能力和资源利用率之间做出各种权衡。