apacheが原因でサーバーが高負荷な時に接続数の多いIPを調べる

Linuxサーバー構築・設定

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

Linuxサーバー構築・設定