Apache 发生了什么?我无法追踪对我的服务器造成这种情况的进程。我再也追踪不到了,服务器每天都会崩溃几次。不知道该怎么办了,试过了这里的所有答案,我找不到问题所在。
apache 5978 0.0 1.4 34060 14000 ? S 10:13 0:00 /usr/sbin/httpd
apache 5979 1.8 3.6 61660 35632 ? S 10:13 0:02 /usr/sbin/httpd
apache 5982 1.9 3.6 61712 35640 ? S 10:13 0:02 /usr/sbin/httpd
apache 5983 0.0 1.7 46000 17480 ? S 10:13 0:00 /usr/sbin/httpd
apache 5984 1.4 4.3 70880 42644 ? S 10:13 0:02 /usr/sbin/httpd
apache 5985 2.6 4.3 69864 42888 ? S 10:13 0:04 /usr/sbin/httpd
apache 5986 0.7 3.9 67240 39220 ? S 10:13 0:01 /usr/sbin/httpd
apache 5987 0.8 3.9 67240 39228 ? S 10:13 0:01 /usr/sbin/httpd
apache 5988 2.5 4.3 70136 43160 ? S 10:13 0:03 /usr/sbin/httpd
apache 6151 0.0 1.7 45868 17404 ? S 10:15 0:00 /usr/sbin/httpd
答案1
从您提供的信息来看,您的内存使用量似乎不是特别高。
我在 Debian 上运行一个具有 512MB 内存的测试虚拟机,其中包含 php(以及其他模块),输出如下:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
www-data 3213 0.0 1.0 151384 5500 ? S 09:47 0:00 /usr/sbin/apache2 -k start
www-data 28653 0.0 1.0 151392 5524 ? S Nov27 0:00 /usr/sbin/apache2 -k start
www-data 28654 0.0 1.0 151144 5408 ? S Nov27 0:00 /usr/sbin/apache2 -k start
www-data 28716 0.0 1.0 151392 5524 ? S Nov27 0:00 /usr/sbin/apache2 -k start
ulimit
除非您在受限环境(检查)或内存较低的虚拟环境中运行(检查cat /proc/meminfo
),否则我不会将您的崩溃归因于高内存使用率。
假设是 apache 崩溃了,我建议检查崩溃时附近的 error_log 和 access_log,以更好地隔离问题。
否则更多的细节(很可能是在新问题中)会更好(是什么崩溃了,整个机器还是只是 apache;机器上运行着什么;机器的规格是什么;发行版是什么等等)
答案2
Apache httpd 根据工作负载的需要,在您在配置中设置的限制范围内生成新的进程和/或线程。
如果这些限制设置得太高,或者您的处理后端消耗了太多资源,这可能会抑制 apache 机器处理网络请求的能力。
一般来说,PHP 或 CGI 消耗的内存比 Apache 本身多得多;考虑将动态部分卸载到具有固定(较小)处理线程数的代理后端。
该后端可以与前端 Web 服务器在同一台机器上运行。