- Redhat Linux Enterprise Server 5.10(我知道它很旧,我无法更改)
- 这台机器是使用 VMTools 虚拟化的。
- 此 VM 的总内存:32GB。总磁盘交换空间(虚拟内存):36GB。主驱动器上剩余 900GB。
- 终端是 Windows 7 上的 Hummingbird Exceed v14。(我无法更改其中任何一个。)
- 我不是真正的系统管理员,我只是在机器上编程。所以更详细的说明会很有帮助,比如日志在哪里以及 grep 的用途。
当我运行某个程序从电子表格中读取 7000 行(不是那么大)时,有时我的进程会被终止并且终端消失。
- 操作系统可能会杀死我的进程的一些原因是什么?
- 这个VM所在的物理服务器昨天真的很忙,谁知道这台服务器上的其他VM使用了多少内存,但我的32GB内存不应该只为我的VM保留吗?
- 当内存不足时,VMTOOLS 会查看所有虚拟机并选择随机 VM 和随机资源消耗来杀死吗?(我的进程使用了 95-99% 的 CPU 时间,但同样,我认为这仅适用于我的 VM。)
谢谢。我真的被困在这里了。
编辑 1:我检查了 /var/log/syslog 并忽略了使用的几种类型的行grep -v
,以及当我被启动时所看到的,每次看起来像是一些资源贪婪的 cron 作业正在运行。我认为这就是发生的事情。
现在我的问题是,现在我可以限制这些 cron 作业使用的内存和交换空间,这样内存就不会用完并且我的终端不会被杀死吗?我可以在操作系统级别做些什么吗?
编辑 2017 年 12 月 7 日:经过进一步调查top
,我们离用完内存、交换空间或硬盘空间还差得很远。所以其他事情正在发生,IT 正在调查它。
是的。仔细阅读setrlimit(2)。您想适当地使用
ulimit
内置的 bash。注意内存过度使用。