首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >野蝇会杀死另一只野蝇吗?

问野蝇会杀死另一只野蝇吗?
EN

Stack Overflow用户
提问于 2015-01-08 16:09:12
回答 1查看 747关注 0票数 1

我们经历了一个(至少在我们眼中)奇怪的问题:

我们在同一台linux机器(CentOS 6.6)上安装了两个WildFail8.1,它们以不同的版本运行相同的应用程序,并监听不同的端口。

现在,我们突然发现,当启动其中一个时,另一个被杀了。然后我们发现,由于其他泄漏过程,空闲内存的数量很低。当我们杀死它们的时候,这两只野鸟再次正确地运行了。

因为我不认为linux本身决定扼杀另一个随机进程,所以我假设JBoss有某种机制来通过杀死它认为不再需要的东西来释放内存,或者它们都使用了(可能是错误的配置)资源,导致其中一个在无法获得内存的情况下被杀死。

有没有人经历过类似的事情,或者知道这种机制?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-20 09:50:11

很可能是linux OOM Killer。您可以通过检查日志文件来验证其中一个服务器是否被它杀死:

grep -i kill /var/log/messages*

如果是的话,你应该看到这样的东西:

host kernel: Out of Memory: Killed process 2592

OOM杀手在确定要杀死哪个进程时使用以下算法:

函数select_bad_process()负责选择要终止的进程。它通过逐步遍历每个运行的任务并计算它是否适合于使用and ()函数杀死。不良性的计算如下,注意,平方根是用int_sqrt()计算的整数逼近;

代码语言:javascript
复制
badness_for_task = total_vm_for_task / (sqrt(cpu_time_in_seconds) *
sqrt(sqrt(cpu_time_in_minutes)))

选择此选项是为了选择一个使用大量内存但寿命并不长的进程。已运行很长时间的进程不太可能是内存不足的原因,因此此计算可能会选择使用大量内存但运行时间不长的进程。

通过读取进程目录中的badness文件,您可以手动查看每个进程的oom_score。

cat /proc/10292/oom_score

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27844528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档