You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache实际创建线程数约为MaxRequestWorkers配置值3倍的问题排查求助

Apache实际创建线程数约为MaxRequestWorkers配置值3倍的问题排查求助

我正在为即将上线的游戏《博德之门3》运营一个非盈利社区wiki。考虑到这款游戏可能会有数百万玩家,我们开始担心服务器容量的问题。

目前我用的是Apache 2.4.57(最新稳定版),当前的mpm_event.conf配置如下(后续可能会调整):

ServerLimit             8
StartServers            2
ThreadLimit             32
ThreadsPerChild         32
MaxRequestWorkers       256
MinSpareThreads         32
MaxSpareThreads         128
MaxConnectionsPerChild  0

按照这个配置,Apache任何时候最多应该有256个工作线程。加上每个MPM进程的8个主线程和1个根主线程,总共应该是265个线程左右(可能还有少数其他线程,但总数大概在这个范围)。

但当我用ab -n 1500 -c 500 <url>模拟最大负载,并且通过mod_status的状态页看到256个工作线程都占满时,执行pgrep -wc apache却得到了高达632的结果。我还试过pgrep -wal apache | wc -l和ps -eL | grep -c apache,结果差不多,所以我觉得我的线程计数方法应该是准确的?

这到底是怎么回事呢?

我的系统(其实不是真正的VPS,是个便宜的容器)总线程数上限是1100,所以搞清楚给定配置下Apache实际会创建多少线程对我来说非常重要。

会不会和PHP FPM有关?我的FPM配置文件pool.d/www.conf目前是这样的(还没调整到和MPM event的配置匹配):

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

就算每个工作线程都额外关联一个PHP线程,那总共也才512个线程,加上之前提到的那些(MPM主线程+根进程线程),总数是521,还是有112个线程找不到来源。

我的PHP版本是8.1.2-1ubuntu2.13。

备注:内容来源于stack exchange,提问作者TaylanKammer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 08:23:14