2015年07月28日(Tue) [長年日記]
_ 鯖、落とされた orz
tDiaryを動かすと、途端にメモリをバカ食いし始めて、rubyをOut of Memoryに追い込んでしまうVPSの新鯖。
スワップしまくることになるので、ディスクI/Oもかなりの頻度になっていたようだ。
で、それを理由に「他のお客さんの迷惑になるから」と、ウチのVPSが強制停止させられてしまった orz
以下、お名前.comからのメールの一部を引用:
このたびお客様にご利用いただいております、VPSの運用状況に
より、ご利用いただいているサーバーへのI/O Readが頻繁に
発生している状況を確認しております。
恐れ入りますが、ご利用いただいておりますサービスにおきまして、
I/Oへの負荷継続による他のご利用者様への影響懸念から該当VPSの
緊急停止措置を実施させていただきますこと、ご了承ください。
日記の公開とともに高負荷の状況が発生したことから、行儀の悪いクローラーやspam botの絨毯爆撃かと思っていたが、それにしちゃメモリの食いつぶし方が極端すぎる。
とりあえずaccess_logを確認してみたら…一目瞭然、
xxx.xxx.xxx.xxx - - [27/Jul/2015:13:11:16 +0900] "GET /~ati/diary/?date=20040511 HTTP/1.1" 504 247 "-" "DoCoMo (compatible; tDiary plugin; tlink; http://www.ohgami.jp/~ati/diary/)"
自分のIP(xxx.xxx.xxx.xxx)からのtlinkプラグインによるアクセスが山のように記録されていた。最初のうちは200で正常に応答してたものが、最終的には504 Bad Gatewayとなって、延々と。
ごはん日記の内容を統合した際、こちらの日記を参照するtlinkプラグインの記述をそのまま取り込んでしまったことで、tlinkプラグインが自分自身を含む記事を再帰的に参照する無限ループのような状態に陥っていたらしい。それでメモリを食いつぶし、rubyでOut of Memoryが発生、と。
データディレクトリの*.td2ファイルをgrepして問題の部分を確認、当該ファイルを編集してtlinkプラグイン使用部を削除の上、キャッシュファイルも削除。
あと、tlinkプラグインのtlink.datファイルも削除して、やっと問題が解決したっぽい。
日記へのアクセスにもすぐ応答が返ってくるようになったし、freeコマンドでもswapをほとんど使ってないことが確認できた。
$ free
total used free shared buff/cache available
Mem: 1884300 88400 1635896 3872 160004 1652928
Swap: 10452984 94164 10358820
管理コンソールのリソースモニタからも、対策の前後でディスクI/Oの状況が全く変わっているのが、分かり過ぎるくらい分かる ^^;
一時はVPSサービスから追い出されるんじゃないかと顔が青くなったが、これなら大丈夫だろう。やれやれ。