• 实验室服务器系统崩溃——记录


    下午四点收到实验室反馈说实验室服务器奔溃了,于是我这个兼职管理员开始上工了。

    通过远程系统查看服务器报错信息:

    =========================================================

    根据  https://www.cnblogs.com/devilmaycry812839668/p/14598890.html 

    可以知道 进程长期处于 D 状态,无法唤醒,类似于死锁状态。

    因此linux系统中使用hung task 机制,用来检测系统中长期处于 D 状体的进程,如果存在,则打印相关警告和进程堆栈。

    由上面的图可以知道有进程被block的时间超过了120s,于是进行了警告和报错,打印出了相关警告和进程堆栈。但是为什么随之而来的是服务器的系统死机了呢???

    网上对 

    echo 0 > /proc/sys/kernel/hung_task_timeout_secs disables this message

     这个错误警告的解释都是面对http服务器来进行的:基本就是说缓存空间是有一定上限的,超过这个上限后则会把缓存空间中的所有内容都转存到硬盘上,而这个转存过程则会堵塞这里往缓存空间进行读写的进程,而这些进程被堵塞的时间超过120s,于是报出了这个警告。又由于这些进程被堵塞无法处理后续到来的各种http请求,而这些请求则只好存储在内存中,又由于存储的内容过多导致内存被吃光,而这时又由于内存空间不足所以又导致了系统进程对缓存空间导出的操作,而这又进一步加重了未被请求数据的堆积,于是则形成了一种互相恶化的类似死锁的现象,最终导致系统彻底被挂死,也就是死机了,或者说也是一种进入死锁的状态。

    我想这个说法虽然可以解释http服务器,但是我这个科学计算服务器总感觉有些解释不上。如果还是像http服务器那样缓存空间导出导致对应的应用进程被堵塞,但是在这里是科学计算的服务,即使进程被堵塞也不应该导致由此引起的内存堆积。而我的观点则是由于是多用户的科学计算,缓存空间导出到硬盘的同时整机的内存空间已然不足,而此时又有一个进程再次申请大的内存空间于是导致整个服务器内存空间被彻底吃光,这样更加减缓了缓存空间导出的速度,于是导致缓存空间中的进程被block了120s以上,而缓存导出的缓慢并不是导致系统死掉的主因,主因还是系统内存被吃光,而这时还不对有进程申请内存导致非缓存空间的内存中内容被导出到swap中,从而导致了运算速度减慢,甚至严重到形成死机现象(或者说是假死机)。

    ==========================================

    附录:

    图源于: 

    https://www.cnblogs.com/zhangmingda/p/10620547.html

    ====================================================

    本博客是博主个人学习时的一些记录,不保证是为原创,个别文章加入了转载的源地址还有个别文章是汇总网上多份资料所成,在这之中也必有疏漏未加标注者,如有侵权请与博主联系。
  • 相关阅读:
    [转]手把手硬件电路详细设计过程
    虚拟机检测技术攻防
    TTL电平和CMOS电平总结
    每个程序员都应注意的9种反面模式
    优化Laravel网站打开速度
    如何在 PHP 中处理 Protocol Buffers 数据
    日请求亿级的 QQ 会员 AMS 平台 PHP7 升级实践
    跨境电商国际物流模式
    2016跨境电商五大物流模式盘点
    10个值得深思的PHP面试问题
  • 原文地址:https://www.cnblogs.com/devilmaycry812839668/p/14597787.html
Copyright © 2020-2023  润新知