系统运维进程管理知识-系统假死情况说明

操作系统出现假死情况说明

在操作系统使用的过程中,有时会出现所谓的假死的情况,下面就详细给大家介绍一下什么是系统的假死的情况。

1. 系统假死情况概念介绍

所谓系统假死情况,就是能通过网络ping通主机,但是ssh远程连接不上,任何其他操作也都没反应,包括主机服务器上如果部署了nginx的web服务,也无法打开页面。

作为一个多任务操作系统,要让系统CPU资源出现过于繁忙的状态,并且使ssh都连接不上去,也不是那么容易的,尤其是现在还有fd保护、进程数保护、最大内存保护之类的机制。

在fork很多进程时,系统会变得很慢,但ssh还是能连上去;可以分配很多内存,但是内存占用多到一定程度oom killer就会把你的进程杀掉,于是ssh又能工作了。

2. 系统假死情况出现原因

有一个确定可以把系统搞成假死的办法是:主进程分配固定内存,然后不停的fork,并且在子进程里面sleep 100。

也就是说,当主进程不停fork的时候,很快会把系统的物理内存用完,当物理内存不足时候,系统会开始使用swap;那么当swap不足时会触发oom killer进程;

当oom killer杀掉子进程时,主进程会立刻fork新的子进程,并在此导致内存用完,再次触发oom killer进程,于是进入死循环。而且oom killer是系统底层优先级很高的内核线程,也参与死循环过程。

系统假死后,为何能通过网络ping通主机,却无法连接呢

此时机器可以ping通,但是无法ssh连接上,这是由于ping是在系统底层处理的,没有参与进程调度;sshd要参与进程调度,但是优先级没oom killer高,总得不到调度。

3. 系统假死情况处理思路

知道假死情况产生的原因之后,就可以针对假死的原因进行预防。(其实假死的情况很少发生,只有当代码写的bug很多的情况下会出现)

其实建议使用nice将sshd的进程优先级调高。这样当系统内存吃紧时,还能勉强登录系统,进行调式,随之分析故障情况。

posted @ 2022-01-27 15:41  aiweiwei24  阅读(281)  评论(0)    收藏  举报