JWL*_*JWL 4 linux monitoring memory process memory-leak
我有一个 Debian Wheezy VPS 盒子,在生产环境中运行几个 Django 应用程序。理想情况下,我会尝试通过优化应用程序、添加更多 RAM 或使用交换来增强内存占用问题。但问题是,我怀疑我会从优化 Django 应用程序中获得很多内存优化(堆栈是开源且强大的),并且添加 RAM 对我来说是一个成本限制(这是一个远程 VPS),而且,主机不提供使用交换的选项!
因此,与此同时(当我等待获得更多资源以提供更多 RAM 时),我希望减轻服务器耗尽内存的情况,这样我只需请求重新启动 VPS(此时,我甚至无法通过 SSH 进入盒子!)。
因此,我希望解决方案能够检测进程(或者一般来说,系统总内存使用量)何时超过某个临界量(目前,例如免费 RAM 下降到 10%)——我已经值得注意的是,VPS 运行很长时间后,某些大型应用程序的流量突然变得很大(无论如何,大多数只是临时应用程序)。
因此,我希望能够终止/重新启动有问题的进程 - 最有可能是 Apache。在这些情况下手动完成的哪种解决方案可以恢复正常的内存使用水平 - 暗示可能一个或多个 Django 应用程序存在内存泄漏?
简单来说:
小智 5
Linux 内核内置了一个所谓的 OOM Killer。它是“内存不足杀手”。因此,当您的机器耗尽其内存和交换空间时,内核将开始杀死一些东西以使服务器可访问。
您可以调整进程的优先级,以确定进程被终止的“可能性”。在此链接中了解更多信息,请参阅“配置 OOM Killer”部分。
基本上,您可以在 /proc/*/oom_adj 文件中调整可能性。例如。提高杀死任何当前正在运行的 apache 实例的可能性吗?
pgrep apache2 |sudo xargs -I %PID sh -c 'echo 10 > /proc/%PID/oom_adj'
或者降低 SSH 被终止的可能性:
pgrep sshd |sudo xargs -I %PID sh -c 'echo -17 > /proc/%PID/oom_adj'
另外,我建议在出现此问题的服务器上完全禁用交换,因为交换速度非常慢,即使仍然剩余交换空间,它也可能使服务器陷入虚拟停滞状态,从而永远不会触发 OOM 杀手。
| 归档时间: |
|
| 查看次数: |
14521 次 |
| 最近记录: |