Ubuntu 的 Out-Of-Memory Killer 对我的服务器造成了严重破坏,悄悄地暗杀了我的应用程序、sendmail、apache 和其他应用程序。
我已经设法了解了 OOM 杀手是什么,以及它的“坏”规则。虽然我的机器很小,但我的应用程序更小,通常只有一半的物理内存在使用,更不用说交换空间了,所以我很惊讶。我试图找出罪魁祸首,但我不知道如何阅读 OOM-Killer 日志。
任何人都可以指点我如何阅读日志中的数据的教程(什么是ve,free和gen?),或者帮我解析这些日志?
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): selecting to kill, queued 0, seq 1, exc 2326 0 goal 2326 0...
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): task ebb0c6f0, thg d33a1b00, sig 1
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): selected 1, signalled 1, queued 1, seq 1, exc 2326 0 red 61795 745
Apr 20 20:03:27 EL135 kernel: kill_signal(13516.0): selecting to kill, queued 0, …Run Code Online (Sandbox Code Playgroud) 我的 monit 脚本用于检测进程中断并在规则为时通知我:
IF DOES NOT EXIST THEN ALERT
Run Code Online (Sandbox Code Playgroud)
我的 monit 脚本用于检测中断并在规则为时自动修复它:
IF DOES NOT EXIST THEN START
Run Code Online (Sandbox Code Playgroud)
但是,我想要它做的是通知我并修复它。
连续两条规则似乎使它忽略了除最后一条之外的所有规则:
IF DOES NOT EXIST THEN ALERT
IF DOES NOT EXIST THEN START
# No alert given.
Run Code Online (Sandbox Code Playgroud)
我可以使用一个自定义脚本来做这两个,并且
IF DOES NOT EXIST THEN EXEC "my_handwritten_script"
Run Code Online (Sandbox Code Playgroud)
但我试图从一堆手写脚本转向干净的 Monit 配置。
我可以将 Monit 配置为采取两项行动吗?