专栏首页运维之美谈谈 Linux 假死现象

谈谈 Linux 假死现象

  • 什么是假死现象

所谓假死现象,是指 Linux 内核 Alive,但是其上的某个或所有操作的响应变得很慢的现象。

具体比较常见的现象有如下几种:

  1. 能 Ping 通访问的服务器。
  2. 系统负载非常的高。
  3. SSH 不能登陆或者登陆比较慢。
  4. 服务器上提供的服务都不能正常响应,比如:不能访问系统上部署的 Web 服务器所提供的页面。
  5. 在系统上做任何其它操作都没有反应或者反应较慢。
  • 假死现象并不是经常出现

Linux 作为一个多任务操作系统,要把系统忙死,忙到 SSH 都连不上去也不是那么容易的。尤其是现在的系统还有 FD 保护、进程数保护、最大内存保护之类的机制。

你可以尝试 Fork 很多进程,系统会变得很慢,但是 SSH 通常还是能连上去的;你可以尝试分配很多内存,但是内存多到一定程度 Linux 的 OOM 机制的 Killer 进程就会杀掉你的进程,来保证其它服务能正常工作。

  • 假死现象是如何出现的

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

也就是说,当主进程不停 Fork 的时候,很快会把系统的物理内存用完。当物理内存不足时候,系统会开始使用 Swap。那么当 Swap 不足时会触发 OOM 机制的 Killer 进程来杀掉多余进程。

当 OOM 机制的 Killer 进程杀掉了子进程,主进程会立刻 Fork 新的子进程,并再次导致内存用完并再次触发 OOM 机制的 Killer 进程杀掉子进程,于是就进入死循环。而且 OOM Killer 进程是系统底层优先级很高的内核线程,此时也参与到这个死循环中,长此以往系统资源就会被消耗殆尽。

  • 系统出现假死现象后,为何还能 Ping 通但又无法建立新的网络连接

系统出现假死现象后,服务器还可以 Ping 通,但是无法建立新的网络连接。比如:SSH 无法连上去。这是由于 Ping 是在 Linux 系统底层 ( Kernel )处理的,并没有参与进程调度。而 SSHD 是要参与进程调度,但是优先级没 OOM 机制的 Killer 进程高。这样就会一直得不到系统调度,从而始终无法正确的提供服务来与 SSH 客户端建立新的连接。

  • Linux 出现假死现象,我们应该怎么办?

为什么要费那么大的力气把服务器搞死呢?我们知道假死是怎么产生的即可,这样可以针对假死的原因进行预防。 其实假死的情况很少发生,通常只有代码出现 Bug 很多的情况或者某个服务进程未正确配置的情况下才会出现。

建议使用 nice 命令将 SSHD 的进程优先级调高,这样当系统内存紧张时,还能勉强登陆服务器进行调试,然后分析故障。

来源:徐亮偉架构师之路 原文:http://t.cn/Eo8fJ6A 题图:来自谷歌图片搜索 版权:本文版权归原作者所有 投稿:欢迎投稿,投稿邮箱: editor@hi-linux.com

今日思想

The meaning of life is that it stops.

生命之所以有意义是因为它会停止。

—— 卡夫卡

本文分享自微信公众号 - 运维之美(Hi-Linux)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-27

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Linux平台 Oracle 12cR2 RAC安装Part1:准备工作

    本文安装环境:RHEL 6.5 + Oracle 12.2.0.1 GI & RAC

    Alfred Zhao
  • SpringBoot 定时任务踩坑记录

    springboot已经支持了定时任务Schedule模块,一般情况已经完全能够满足我们的实际需求。今天就记录一下我使用 schedule 时候踩的坑吧。

    JAVA葵花宝典
  • RAC节点两边存储名字不一致导致的故障及相关延伸常见误区

    起因:一个客户的实际故障,该故障非常典型,其他客户类似的环境也非常多,所以很值得梳理并记录下来。 环境:Oracle 11.2.0.4 RAC(2 nodes...

    Alfred Zhao
  • RMAN备份策略与异机恢复一例(续篇)

    之前异机恢复的需求已经演练成功,现在需要保持之前恢复的库orcl不动,全新恢复一个用于临时测试指定时间点的小库,实例名称规划为testdb。 注意:风险点在于...

    Alfred Zhao
  • Oracle之SQL优化专题02-稳固SQL执行计划的方法

    糟糕的SQL执行,执行计划走全表扫描(这里实验直接利用使用hint强制不走索引来模拟这种情况):

    Alfred Zhao
  • AIX挂载NFS写入效率低效解决

    背景: Linux是NFS的Server端,AIX是NFS的Client端(此外,有一个Linux也作为Client端对比测试)。

    Alfred Zhao
  • Linux平台 Oracle 18c RAC安装Part3

    Linux平台 Oracle 18c RAC安装指导: Part1:Linux平台 Oracle 18c RAC安装Part1:准备工作 Part2:Lin...

    Alfred Zhao
  • Oracle如何查询当前的crs/has自启动状态

    我们知道在某些停机测试场景,是需要人为禁用crs/has的自启动的,防止过程中主机反复重启对数据库集群造成影响。 使用crsctl disable/enabl...

    Alfred Zhao
  • Linux 平台静默安装 Oracle客户端1.1 依赖包1.2 其他信息检查

    需求:Linux平台,安装完整版Oracle客户端 Tips:如果只是用到sqlldr,sqlplus功能,可以参考《Linux上oracle精简版客户端快速...

    Alfred Zhao
  • 游戏服务器h2engine架构优化和跨平台设计

    H2engine的GitHub星星不知不觉已经破百了,也没有特意推广过,但是慢慢的关注的人越来越多。因为事情多,好久没有写东西了,前一段时间有了一些想法,把h2...

    知然

扫码关注云+社区

领取腾讯云代金券