我在我的RaspberryPi上运行apache2,主要是为了与流媒体音频的mpd php客户端连接。大约一个月后,我看到以下内容:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1496 www-data 20 0 55900 17m 2112 S 0.0 9.3 0:30.32 apache2
7198 www-data 20 0 54868 15m 2188 S 0.0 8.4 0:10.57 apache2
7182 www-data 20 0 54868 15m 2168 S 0.0 8.3 0:11.67 apache2
1497 www-data 20 0 53844 15m 2132 S 0.0 8.2 0:07.58 apache2
2609 mysql 20 0 314m 15m 280 S 0.7 8.1 71:58.52 mysqld
7185 www-data 20 0 54868 14m 2180 S 0.0 8.1 0:08.71 apache2
7183 www-data 20 0 54868 14m 2120 S 0.0 8.1 0:14.36 apache2
1499 www-data 20 0 53844 14m 2144 S 0.0 8.0 0:07.73 apache2
1932 mpd 20 0 81204 8152 584 S 0.0 4.3 145:46.25 mpd
7211 www-data 20 0 45652 8004 2204 S 0.0 4.2 0:01.65 apache2
3318 www-data 20 0 45652 7944 2140 S 0.0 4.2 0:03.43 apache2
7210 www-data 20 0 45652 7784 2176 S 0.0 4.1 0:01.28 apache2
1965 root 20 0 44532 5268 216 S 0.0 2.8 1:53.06 apache2
7168 www-data 20 0 45652 7956 2140 S 0.0 4.2 0:02.42 apache2
随着mpd和mysql以及root apache2进程,11个apache2进程作为www-data运行。重启后,我在www-data下看到了5个apache2进程。
为什么更多进程会被抛弃,而不是关闭?我继续看到这种情况一直在增长,直到有20多个进程,这会在资源有限的情况下放慢这个小的速度。
为什么新进程会产生,然后会持续存在?我可以在conf.d中控制它吗(我已经尝试过,但反馈过程需要几天或一周,所以很难说出来。)
答案 0 :(得分:3)
Apache - 在前叉模式下运行时 - 生成一个工作进程池,以便将响应时间保持在较低水平。每个工人都要对某个要求负责。因此,如果有11名工作人员在运行,那么apache可以在“并行”中提供11个请求,而不会产生新进程(需要花费大量时间)
Apache会生成工人/并使他们智能地保持活着,但您可以在apache2.conf