在我的 Web 服务器中运行以下架构
Centos 6.5
Plesk 12
Nginx 1.6 (As a reverse proxy)
Apache 2.2
MySQL 5.5
PHP 5.5
Openfire 1.9.4
Pagespeed
Web 服务器一次最多可以容纳 500 个并发用户,但功能非常强大
CPU: Intel® Xeon® E3-1225v3 (Quad-Core, 4x 3.6 GHz)
Memory: 24GB
我经常收到以下错误,
/bin/sh: fork: Cannot allocate memory
我怀疑上述模块之一存在内存泄漏,但是当我搜索/谷歌搜索时,我没有发现任何已知的内存泄漏问题。
当这种情况发生时,它会锁定外壳,网站也会显示 502,504
但我不能做
ps -aux
或任何命令来找出哪个进程导致了这个问题,因为 shell 本身也卡住了,没有响应
5-10 分钟后,一切恢复正常。并且 ps -aux 没有显示任何无效/繁重的进程
- 我该如何修复或找出导致这些中断的原因?*
- 我可以在有限内存模式下运行应用程序吗?如果可以,如何操作*
- 哪些系统日志可能有助于确定问题的原因?*
- 如何通过 cron 作业进行内存检查并查看其是否会重新启动或采取某些措施来阻止它?*
答案1
首先想到的是 apache。检查您的最大服务器设置。还要查找有关最大工作者的部分(现在不在电脑前,所以我无法为您提供确切的设置)。
运行 ps aux | grep httpd | wc -l。您还需要在没有 wc 的情况下执行此操作,以查看每个进程使用了多少内存。
第一个问题应该是,你有足够的记忆吗?
运行 free -m 进行检查。