タイトルが全て!
なんだかサーバーが重いと思ったらhttpdの負荷が高くloadavgも高い。
アクセスログを見たら海外のIPアドレスからPOST /wp-login.phpばっかり。
こりゃ重くもなるわなーということで手っ取り早くwp-login.phpにbasic認証をかける。
Apacheのhttpd.confにて
<FilesMatch wp-login.php> AuthType Basic AuthName "wordpress protection" (てきとう) AuthUserFile /path/to/.htpasswd AuthGroupFile /dev/null require valid-user <FilesMatch>
再読み込みさせたらみるみるうちに負荷が下がりました。
ちなみにVirtualHostでなく全体に有効にしたので各ユーザーへの連絡が大変です。
しかし今後も増えるかもしれませんしなー…
wordpressとしては一定回数のエラーでロックをかけるような実装に向かっているとか。
lighttpdだと
$HTTP["host"] == "example.com" { (いろいろ略) auth.backend = "htdigest" auth.backend.htdigest.userfile = "/path/to/.htdigest" auth.require = ( "/wp-login.php" => ( "method" => "digest", "realm" => "wordpress protection", (てきとう) "require" => "valid-user" ), ) }
な感じになるはず。(たまたまdigest認証でしたけど)