"顶部"显示了httpd-Child-process如何消耗内存的结果。 大多数子进程使用400MB。我认为这太大了。
通常,我知道Child进程占用的内存最多为50MB。
你知道知道为什么子进程使用大量内存的任何好方法吗?
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1039 nobody 20 0 32.7g 412m 55m S 0.0 0.3 0:50.76 httpd
10366 nobody 20 0 32.7g 411m 54m S 0.0 0.3 1:11.28 httpd
16115 nobody 20 0 32.7g 410m 53m S 0.0 0.3 0:44.23 httpd
26472 nobody 20 0 32.7g 410m 52m S 0.0 0.3 0:45.95 httpd
・・・・
・・・・
答案 0 :(得分:0)
如果子进程正在主动运行并处理大型脚本(如数据导入或其他内容),那么它们在运行时可能会在内存中保存大量数据。这实际上取决于脚本的运行方式。
通常情况下,如果Apache将请求转交给像PHP这样的模块(在这个问题上你有php作为标记),那么脚本引擎有责任对内存使用等内容强制执行一些常识性限制或时间限制,以防止人们创建试图吸收所有服务器资源的脚本。
我建议尝试追踪这些童工回到特定的请求,以确认它们只是失控的PHP脚本或其他东西,然后搜索这些脚本的内容,看看他们是否试图覆盖任何限制(比如set_time_limit(0)或ini_set(“memory_limit”,...))。如果他们这样做,那么你将不得不与脚本的开发人员交谈以确定他们是否真的需要(例如,开发人员可能同时读取一个巨大的数据文件并将其保存在内存中而不是在内存中读取小块)。