apacheが原因でサーバーが高負荷な時に接続数の多いIPを調べる
apacheサーバーが突然の高負荷。Timeout時間などを短くしても改善しませんでした。
ACCESSログなどを見ても不審なアクセスはなし。
アクセス数の多いIPアドレスを調べてみました。(153.125から始まるIPは除外)
# awk '{print $1}' /var/log/apache2/access.log | grep -v '^153\.125\.' | sort | uniq -c | sort -nr | head
間近の計測をするためにアクセスログは新しくしました。
結果を見てみるとGoogle Cloudからのアクセス。2分ほどで4000回位のアクセスがあります。
サイトの情報をごっそり抜こうとしているのでしょうか。
該当IPをファイヤーウォールで遮断しました所、ロードアベレージが60超えていたのが、0.9まで落ち着きました。
さて、どうしましょうか・・
このIPが100%原因というわけでもないので、しばらくログを監視する必要があります。10分以内でアクセスの多いIPランキングの出し方。
awk -v d="$(date --date='10 minutes ago' '+%d/%b/%Y:%H:%M')" '
$0 ~ /^\[/ { next }
{
gsub(/^\[/, "", $4);
if ($4 >= d && $1 !~ /^153\.125\./) print $1;
}' /var/log/apache2/access.log | sort | uniq -c | sort -nr | head