我有一个使用 ubuntu 9.10、apache2、mysql5 和 php5 的 LAMP 服务器。
当我通过 shell 以 root 身份登录时,我运行“ps aux”命令并看到类似以下内容
www-data 3151 0.1 4.3 220024 31032 ? S 12:22 0:00 /usr/sbin/apache2 -k start
www-data 3153 0.2 3.6 214776 26020 ? S 12:22 0:01 /usr/sbin/apache2 -k start
www-data 3162 0.3 5.1 225060 36920 ? S 12:26 0:01 /usr/sbin/apache2 -k start
www-data 3163 0.1 4.1 218872 29664 ? S 12:26 0:00 /usr/sbin/apache2 -k start
我怎么看到 www-data 有多行?每行代表我网站上的一个实际用户吗?
我有时会遇到内存问题,所以我试图确定这些 www-data 统计数据是否相关。
答案1
大多数 Linux 发行版上的 Apache 默认使用预分叉工作模块。这会生成多个进程,每个进程处理一些请求。
Apache 保持多个进程处于就绪状态并等待,以减少分叉新进程的延迟/开销 - 这些是您在 ps 中看到的额外行。
您看到的流程并不直接 1:1 映射到用户/请求。
http://httpd.apache.org/docs/2.2/mod/prefork.html更详细地介绍了这一点。
要检查您在 Ubuntu/Debian 上使用哪个工作模块,请运行apache2 -V
并查找 APACHE_MPM_DIR 行。或者运行dpkg -l | grep apache
- 每个 MPM 都是一个不同的包。
答案2
Apache 运行多个进程。有关详细信息,请阅读http://httpd.apache.org/docs/2.2/mpm.html