systemd まなぶ

spring appが勝手にkillられるので

症状

spring自動起動用サービスファイル所在:/etc/systemd/system

勝手にkillは、スタートして1週間だったり30分でkillる時もあった

原因候補とキーワード

・OOM killer

メモリ関連キーワード

ヒープダンプ

jcmd

Java VisualVM

(https://qiita.com/niwasawa/items/aacf18b46a86e04742b1)

対策候補

・Restart。Unitファイルの[Service]設定

メモリ対策候補

・appプログラムの見直し

・契約プランのグレードアップ。

・条件、定期的にキャッシュのクリア

systemctl status xxx.service 結果


  Loaded: loaded (/etc/systemd/system/xxx.service; enabled; vendor preset: enabled)
  Active: failed (Result: signal) since 日時 JST; 5 days ago
 Main PID: ****** (code=killed, signal=KILL)
日時 ホスト名 java[******]
日時 ホスト名 systemd[1]: vpsApp.service: Main process exited, code=killed, status=9/KILL
日時 ホスト名 systemd[1]: vpsApp.service: Failed with result 'signal'.

						

freeコマンドでメモリ状況を確認


結果:spring app停止、キャッシュ解放前
              total        used        free      shared  buff/cache   available
Mem:            461         156         209           1          95         284
Swap:             0           0           0

結果:spring app停止、キャッシュ解放後
              total        used        free      shared  buff/cache   available
Mem:            461         146         255           1          60         295
Swap:             0           0           0

結果:spring app起動直後
              total        used        free      shared  buff/cache   available
Mem:            461         341          10           1         110         100
Swap:             0           0           0

結果:spring app自動停止確認直後(1分経たず)
              total        used        free      shared  buff/cache   available
Mem:            461         158         160           1         142         283
Swap:             0           0           0

						

キャッシュの解放

# echo n > /proc/sys/vm/drop_caches

n=
・1:ページキャッシュ
・2:slab領域
・3:両方
						

原因

メモリ不足で確定

原因深掘り

start後、何度かページ遷移して落ちた。メモリusedも増えた。

OOM Killer


logの確認
cat /var/log/syslog | grep Kill
日付 ホスト kernel: [0000000.000000] Out of memory: Killed process 000000 (java) total-vm:2302120kB, anon-rss:266120kB, file-rss:0kB, shmem-rss:0kB, UID:0 pgtables:788kB oom_score_adj:0

						

施策

契約0.5GB -> 1GBに変更

footerではない