从公司官网核心崩溃学到的

163 阅读2分钟

问题描述

问题描述:官网核心功能-搜索崩溃,导致线上故障7分钟

在20:18分左右发现官网搜索出现问题,起初怀疑发布出错,经过检查并没有2.0的服务发布,随后发现进程没有启动,运维同学重启进行后故障解决。

排查是同事在19:50分在线上VI打开大日志文件,触发linux的OOM管理机制,导致jvm进程被杀。

OOM机制

系统物理内存不足时,内核采取的一系列措施来回收内存或杀掉进程以释放内存资源,防止整个系统因为内存不足而崩溃。

Linux内核通过一个称为OOM Killer的组件来处理内存不足的

OOM Killer会根据一系列评分标准选择一个或多个进程来终止。这些评分标准包括进程的内存使用量、进程的重要性(优先级)、进程是否正在执行写时复制(C++析构函数、文件描述符等)等

OOM Killer的决策过程是复杂的,因为它需要平衡内存回收的需求和避免不必要的进程终止。

在某些情况下,它可能会错误地选择终止重要的系统进程,这可能会导致服务中断或其他问题。

所以最好的方案是预防内存不足:做通过适当的系统监控和资源管理来预防内存不足的情况。

Linux的句柄数

联想到之前在公司因为linux的句柄数不足导致mq消息丢失,来复习一下Linux的句柄数

句柄数通常指的是系统可以同时打开的文件描述符的数量

每个用户每一个进程都有自己的句柄数,当系统或用户的文件描述符数量达到限制时,尝试打开新文件的操作将失败,并返回错误代码EMFILE(Too many open files)

OOM机制专注于内存资源的管理,而句柄数限制涉及到文件描述符资源的管理