ときどきこのサーバーのPHPの実行が不調になることがある。
詳しい要因はわかっていない部分があるがアクセスが集中すると起きるよう。
発生した場合はphp-fpmの再起動などで対応している。(cf. プロセスが多くてはメモリ浪費がひどい)
とはいえ何のアクセスが発生しているのか?
access_log, ssl_access_logをダウンロードしたら解析できるツールがある。
ssl_access_logは標準では情報が少ないが設定すると増やせる。
ssl_access_logのフォーマット変更 (technote)
で、アクセス数がやたら多いのがAI開発のためのクローラーだった。
あまり有意義とは思えないクローラーが多く、まずはrobots.txtで制御、
それでもアクセス数が減らないクローラーはアクセス拒否をするようにした。
ある程度は減ったのだが、User-Agent上は普通のPCに見えるし、
アクセス元は分散しているが高頻度にアクセスするのがけっこういる。
いかにもロボットっぽいが、特徴らしい特徴はない。
あと、そのアクセス元のURLが異常に長いURLになっていて、
このBlog、不当なURLでもトップページを返すような挙動になることが多く、
不当なURLについてはできるだけ404 Errorとなるように設定した。
これによりBlogの表示にかかるリソースを大きく減らせたのかな?
異様なクローラーからのアクセスは数量としては減らないのだが、
ほとんどが404 Errorということであまりリソースを割かずに対応できるように。
ちなみに名だたるAI企業のBotも404を叩きまくっていて、どうにも頭の悪さを感じる。
というわけでかなり負荷は削減されたはず。
まぁAI開発のためのクローラーが異様なアクセスをしていることはけっこう問題を起こしているようで、
今までも多少は対策していたのだが、より本格的な対策をしたところである。
404エラーをなかなか返さない仕組みはうちの落ち度ではあるが、
クローラーはこんなURLを生成して投げてくるのかと驚くばかり。
人間だとこうはならないと思うのだけど。