ipアドレス別でサーバーに接続している数を調べるコマンド

ipアドレス別でサーバーに接続している数を調べるコマンド
-----------------------------------------------------------
netstat -tan | awk '{print $5}' | cut -d : -f1 | sort -n | uniq -c | sort -n
-----------------------------------------------------------

オプションの説明
a → すべてのネットワーク接続を表示する
n → DSN逆引きを行わない(ipアドレスで表示)
t → TCPのみを表示する

awk '{print $5}' → 5フィールド目を取り出す

cut -d : -f1 → デリミタ(区切り文字)「:」を指定。フィールド1を取り出す

sort -n → データを文字ではなく、数値として並び変える。次のuniq が隣り合った行しか比較しないので必要

uniq -c → 各行の前に出現回数を出力する。隣り合った行しか比較しない

sort -n → データを文字ではなく、数値として並び変える。出現回数順に並べ替える

OOM発動時にサーバーを再起動

現在の設定を確認
--------------------------------------------
# sysctl vm.panic_on_oom kernel.panic
vm.panic_on_oom = 0
kernel.panic = 0
--------------------------------------------

vm.panic_on_oom
OOM Killer が実行される際に、カーネルパニックを起こさせるかを制御するパラメータ

0 → カーネルパニックしない
1 → カーネルパニックする。但し cgroup 制限により物理メモリがまだ残っている場合にはカーネルパニックしない。
2 → 必ずカーネルパニックする

カーネルパニックとは、オペレーティングシステム(OS)のカーネル部分において、何らかの理由で致命的なエラーが発生し、安全に復旧することができなくなった状態。

kernel.panic = 0 → なにもしない
kernel.panic = 30 → 30秒後にリブート

--------------------------------------------
sysctl -a | grep vm.over
--------------------------------------------

現状
--------------------------------------------
vm.overcommit_memory=1
vm.panic_on_oom=1
kernel.panic=10
--------------------------------------------

vm.overcommit_memory:オーバーコミットするかどうかの設定
vm.overcommit_memory = 0 → オーバーコミット有効。実メモリの大きさまで割り当てる。
vm.overcommit_memory = 1 → オーバーコミット有効。実メモリ以上に割り当てる。

sysctl.conf を下記のように変更
#oom になったらカーネルパニックにさせてサーバーを再起動
--------------------------------
vm.overcommit_memory=1
vm.panic_on_oom=1
#15秒後に再起動
kernel.panic=15
--------------------------------

設定を反映
--------------------------------
sysctl -p
--------------------------------