Linux服务器进程自动停止/终结

文章描述了一名技术人员在LinuxSUSE服务器上处理服务进程莫名终止的问题,通过检查系统日志、CPU和磁盘使用情况,发现是由于磁盘空间不足导致的coredump文件生成问题。文章详细介绍了如何排查及解决这一问题,包括查看重启记录、分析日志文件、调整coredump配置等。
摘要由CSDN通过智能技术生成

记录一个现场问题:Linux服务器中的服务进程莫名被杀死,或者启动失败

情况说明:现场是一台Linux的suse系统服务器,前一天客户反应服务有异常,登录查看发现所有的服务进程都没有启动,以为是客户重启服务器了,服务没启动,就重启了服务(4、5个服务),客户反应已经能够正常使用,就结束了。可是第二天一早现场又反应有问题,上去查看发现服务进程又没了,遂开始排查,下面主要记录自己当时的排查过程

1、我首先想到的是看服务器是不是有被重启过,但是发现服务器是没有被重启的近期。以下是几种常见的查看 Linux 服务器重启记录的方法:

  • 查看系统日志文件:
    cat /var/log/syslog | grep "System Reboot"
    这将显示包含 “System Reboot” 字符串的所有行,这些行通常指示系统重新启动的时间和原因。

  • 查看上次启动时间:
    last reboot
    这个命令会显示系统上次启动的时间,以及从上次启动到当前的运行时间。

  • 检查 /var/log/boot.log 文件:
    cat /var/log/boot.log
    这个文件记录了系统启动过程中的详细信息,包括启动时的各种服务和进程状态。

  • 检查 /var/log/dmesg 文件:
    dmesg | grep "systemd"
    这个命令会显示系统启动时的内核日志信息,包括关于系统启动过程的各种消息。

2、因为有4、5个服务要启动,前面1个启动成功后,再去启动后面的服务时发现启动失败,而且第一个启动的服务进程也被终止了,我先想到了是不是cpu或者磁盘空间不足,使用top或者free -h 我查看了cpu的占用率和磁盘使用情况,发现都没有什么问题

3、在Linux中要确定进程消失的确切原因,可以查看系统日志文件,例如 /var/log/syslog、/var/log/messages 或应用程序特定的日志文件,这些文件都会记录有关进程终止的信息和原因,我打开/var/log/messages文件发现里面有一行提示Not enough disk space for coredump of xxPid

4、经查询上面这个错误的原因表示磁盘空间不足,无法生成指定进程的 core dump 文件。而core dump 文件是在进程崩溃或异常终止时生成的,用于调试崩溃的原因,然而,如果磁盘空间不足,系统就无法生成这个文件。主要通过以下几种方式解决:

  1. 释放磁盘空间:首先,需要释放足够的磁盘空间,以便系统能够生成 core dump 文件。可以删除不必要的文件或移动文件到其他磁盘来释放空间。

  2. 调整 core dump 大小:可以通过修改系统的 core dump 配置来调整 core dump 文件的大小。可以通过 ulimit -c 命令来查看和修改 core dump 文件的大小限制。

  3. 禁用 core dump:如果不需要 core dump 文件,可以考虑禁用 core dump。这样,当进程崩溃时,系统将不会尝试生成 core dump 文件,从而避免磁盘空间不足的问题。

  4. 分析其他磁盘空间使用情况:除了释放磁盘空间外,还可以分析其他磁盘空间使用情况,以了解哪些文件或目录占用了大量空间,并采取相应的措施来释放空间。

  5. 优化磁盘空间管理:考虑对磁盘空间进行优化管理,定期清理不必要的文件、压缩文件、限制日志文件大小等,以确保磁盘空间充足。

5、使用ulimit -c查看 core dump的配置,输出unlimited

tips:如果输出值为 0,表示 core dump 文件生成已禁用。如果输出值为 -1,表示 core dump 文件大小没有限制。unlimited表示也没有限制。
core dump 文件大小限制为无限制,这意味着如果程序崩溃,将会生成无限制大小的 core dump 文件。这可能会导致磁盘空间被耗尽,因此在生产环境中需要谨慎使用。这也是我这边的原因

6、知道了原因就要进行修改,要么禁用core dump,但是这样不利于后续异常的排查,所以我选择设置固定大小的core dump来解决这个问题。

  • 要设置特定大小的 core dump 文件,请使用 ulimit -c 命令,后面跟上希望设置的大小(以 KB 为单位)。例如,要将 core dump 文件大小限制设置为 100 MB,可以执行以下命令:
ulimit -c 100000

这将限制 core dump 文件的大小为 100 MB。但是请注意,这只会影响当前会话中的 core dump 文件大小限制。 若要使更改永久生效,可能需要修改系统范围的配置文件(如 /etc/security/limits.conf)在文件末尾添加一行,指定希望设置的 core dump 大小限制,语法:

*    hard    core    [大小]

其中:

  • 表示适用于所有用户。
  • hard 表示这是硬限制,不能超过。
  • core 表示要限制的资源是 core dump 文件大小。
  • [大小] 是希望设置的 core dump 大小。可以使用 unlimited 表示无限制,也可以指定以 KB 为单位的大小。
    注意:修改配置文件后可能要重启服务器生效,重启后可使用 ulimit -c 来查看是否生效

最后,每个人的情况可能不一样,我主要记录我的排查过程,供有需要的小伙伴参考指正。

  • 15
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值