昨夜からサーバーが不安定となっていましたが復旧しました。
<<以下雑文>>
ある朝、ブログに接続してみるとNginxがエラーを返しくる。再起動すると一時的に表示できるが、再びエラーを返すようになってしまう。
Nginxのerror.logを見るとphp7.0-fpmがエラーを返している。
2016/10/13 16:17:04 [error] 1244#1244: *143694 connect() to unix:/run/php/php7.0-fpm.sock failed (11: Resource temporarily unavailable) while connecting to upstream, client: 191.96.249.53, server: www.code-lab.net, request: "POST /xmlrpc.php HTTP/1.0", upstream: "fastcgi://unix:/run/php/php7.0-fpm.sock:", host: "13.78.127.119"
php7.0-fpmのログを見てみるとpm.max_children設定を超えたために終了してしてしまっている。
[13-Oct-2016 23:51:42] NOTICE: fpm is running, pid 1224 [13-Oct-2016 23:51:42] NOTICE: ready to handle connections [13-Oct-2016 23:51:42] NOTICE: systemd monitor interval set to 10000ms [13-Oct-2016 23:51:47] WARNING: [pool www] server reached pm.max_children setting (5), consider raising it [14-Oct-2016 00:00:18] NOTICE: Terminating ...
「そういえば、導入時にはデフォルト設定のままだった。最近漸く月間9000PVを超えたし、デフォルトのままだと負荷に耐えなくなる場合も出てきたのか♪」とホクホクしながら、pm.max_childrenの数字を4倍に増やした。メモリにはまだ余裕があるし問題はないだろう。
サービスを再起動して正常に表示できるようになった。メモリの使用量が想定内なのを確認するため、htopでプロセスを見ると負荷が10%程度の状態が続いている。「こ・・・これは、バズった?」等とwktkしながらaccess.logをのぞいてみた。そこには以下のようなログが延々と続いている。
191.96.249.54 - - [14/Oct/2016:00:45:26 +0000] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6 .0)" 191.96.249.53 - - [14/Oct/2016:00:45:27 +0000] "POST /xmlrpc.php HTTP/1.0" 499 0 "-" "Mozilla/4.0 (compatible: MSIE 7.0; Windows NT 6 .0)"
何のことはない。WORDPRESSのxmlrpc.phpを狙った攻撃を延々と受けていたのである。・・・と言うか、Nginxのerror.log見た時点で気付こうよ>自分。
こんな時クラウドは便利だ。Azureのネットワーク管理画面から191.96.249.53-54のアドレスを接続拒否リストに追加した。
参考資料
php-fpmのエラーにぶつかりながら設定の最適化を図る
サーバーが高負荷の原因はWordPressのxmlrpc.phpを狙った攻撃だった