这些数字在系统日志中是什么意思?

这些数字在系统日志中是什么意思?

我正在尝试确定 MySQL 服务器进程因内存不足而被终止的原因,因此我正在查看 sylog。在“内存不足”之前,我看到很多行带有不同的数字,但我无法找出它们的含义。请问有人能解释一下我正在查看的内容,以及它是否能为我的问题提供任何线索。

Jun 29 15:21:33 serverpilottest kernel: [1320544.512442] [ 3158]  1000  3158        97824     2881     107     1172             0 php-fpm
Jun 29 15:21:33 serverpilottest kernel: [1320544.512443] [ 3160]  1000  3160     96548     1610     105     1194             0 php-fpm
Jun 29 15:21:33 serverpilottest kernel: [1320544.512445] [ 3161]  1000  3161    95737      806     104     1224             0 php-fpm
Jun 29 15:21:33 serverpilottest kernel: [1320544.512448] Out of memory: Kill process 1598 (mysqld) score 68 or sacrifice child

任何帮助都非常感谢。

答案1

有关输出的含义,请参阅这个答案。请注意,mysql 可能不是导致问题的原因。Linux 默认会过度使用内存,然后当进程真正开始使用内存时,它必须终止其他进程才能获得一些内存。

通常它会选择那些大而又不常用的进程。你可以这样做来保护进程不被杀死

echo -1000 > /proc/999/oom_score_adj

其中 999 是进程 ID。请参阅man proc。该值介于 -1000 到 +1000 之间,用于偏向 oom killer(可能性从较小到较大),其中 -1000 = 永远不会被杀死。

您应该监视进程内存大小,例如使用topM按内存排序类型)。

输出来自 oom 管理器。php-fpm可能是 apache 的一部分。您通常可以配置 apache 来杀死增长过多的重用线程;这是在更快的 cgi 和更少的内存浪​​费之间做出的选择。

您可以使用以下方式暂时禁用过度使用内存

sysctl vm.overcommit_memory=2

那么占用大量内存的进程崩溃的可能性更大,而不是某个随机进程被终止。通常不建议将其作为永久设置。

答案2

这些看起来像分别是进程 ID、用户 ID 和进程 ID。看不到最后一列是什么,可能是一些内存使用情况的指示。

相关内容