一度は何も言わずに服を止める(OOM Killer)
朝、サイトにアクセスできないことに気づき、ステータスコードを表示します.502です.つまり、負荷バックエンドのアプリケーション停止であることがわかります.サーバーにログインし、プロセスが存在しないことを確認します.アプリケーションログをチェックしても異常はなく、なぜプロセスが停止したのか不思議です.
/var/log/messageを表示すると、次の情報が表示されます.
Linuxカーネルをトリガした「Out Of Memory killer」メカニズムのようです.
残りのメモリ容量のサイズが低すぎると、OOM killerはプロセス強制killを選択します.
キルプロセスの選択は主に2点に基づいています. kill最も多くのメモリを解放できます. はシステムにとってkillの影響が最も小さい.
実際の操作では、カーネルはプロセスごとにoom_を維持します.score値.値が高いほど、OOM Killerによって選択される可能性があります.現在は基本的にメモリ使用量です.
プロセスがkillされたくない場合は、メソッドのoom_を変更します.score_adj値.-1000に設定すると、OOM Killerはこのプロセスを無視します.
または、サービスユニットの変更
もちろんこの2つの方法はかなり爽やかではありません.
このとき、ECSメモリは1 Gしかありません.
何?1 Gしか配置されていません...プログラムにメモリ漏れがないことを確認した後、セットは4 Gにアップグレードした.問題が解決する.
/var/log/messageを表示すると、次の情報が表示されます.
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: [ pid ] uid tgid total_vm rss nr_ptes swapents oom_score_adj name
......
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: [15324] 0 15324 38678 328 79 0 0 sshd
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: [15328] 0 15328 18062 210 39 0 0 sftp-server
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: [15775] 0 15775 588027 91836 240 0 0 java
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: [15822] 0 15822 38711 405 81 0 0 sshd
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: [15879] 0 15879 45594 249 46 0 0 crond
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: [15881] 0 15881 28296 66 11 0 0 run-parts
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: [15893] 0 15893 156948 53661 229 0 0 yum-cron
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: [15894] 0 15894 28386 36 12 0 0 awk
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: Out of memory: Kill process 15775 (java) score 352 or sacrifice child
Jun 28 16:08:55 iZ8vbxxx1u3Z kernel: Killed process 15775 (java), UID 0, total-vm:2352108kB, anon-rss:366108kB, file-rss:1236kB, shmem-rss:0kB
Linuxカーネルをトリガした「Out Of Memory killer」メカニズムのようです.
残りのメモリ容量のサイズが低すぎると、OOM killerはプロセス強制killを選択します.
キルプロセスの選択は主に2点に基づいています.
実際の操作では、カーネルはプロセスごとにoom_を維持します.score値.値が高いほど、OOM Killerによって選択される可能性があります.現在は基本的にメモリ使用量です.
$ cat /proc/pid/oom_score
プロセスがkillされたくない場合は、メソッドのoom_を変更します.score_adj値.-1000に設定すると、OOM Killerはこのプロセスを無視します.
sudo echo -1000 > /proc/pid/oom_score_adj
または、サービスユニットの変更
[Service]
OOMScoreAdjust=-1000
もちろんこの2つの方法はかなり爽やかではありません.
このとき、ECSメモリは1 Gしかありません.
何?1 Gしか配置されていません...プログラムにメモリ漏れがないことを確認した後、セットは4 Gにアップグレードした.問題が解決する.