こんばんわ。
TOMOROHです。
現在さくらインターネットの「スタンダード」を契約しています。
同一サーバーに30ユーザーぐらいなのですが、1時間以上1日にCPUのリソースを利用していました。
なので、WordPressの設定とサーバーの設定等を見直したので、メモです。
今回負荷の対策として3つの観点から対策を取りました。
1.不要なアクセスは遮断する
コメントスパムや不正ログインに対する試行についてです。
こちらについては、Htaccessを利用し対応しました。
2.サーバーの処理を低減させる
こちらは、サーバー側でアクセスごとに動的に処理するのではなく、キャッシュ系プラグインを利用し対応させていましたが、キャッシュのガーベージコレクションのタイミングの時間を変更し、キャッシュが生成される時間を少なくしてみました。
不要なプラグインをなくすことも検討しましたが、今回はこのままとしました。
3.クローラーのアクセスを最適化する
私のサイトに対するアクセスはGoogleからのアクセスが主。Bingやbaiduなどからのアクセスはほぼありません。そのため、不要なクローラーはRobots.txtで拒否、また旧URLに対するアクセスが多かったため、こちらはキャッシュ出来ないのでアクセス不要として、Robots.txtに記載を追記しました。
ではメモがてら説明を。
1.不要なアクセスは遮断する
これは、以前やりかけてほったらかしにしていたようで、正常に動いていませんでした。
denyとallowの順番間違えてまして。(汗)
参考
htaccessファイル
今うちのサーバに適用してあるhtaccessファイル。
これにより、国内からのコメントと管理画面へのアクセスを制限しました。
サーバーの負荷については、あまり改善しませんが、不正アクセスとコメントスパムに対する対策として、かなり有効でした。
「Akismet」のプラグインが要らなくなるぐらい。「WassUp」のプラグインで確認しこの設定を入れてから、SPAMコメントがなくなりました。まあ、まだ2日程度ですが。
2.サーバーの処理を低減させる
キャッシュプラグインですが、現在「WP Super Cache」を利用しています。
今試しているのは、このプラグインの設定。
もともとつるしの状態で利用していたのですが、気にしていませんでした。
PHPで動作すると、MOD_Rewriteを利用するという設定があったかと。
どちらがサーバのCPU使用率低減に効果があるのかわからないので、現在試験中。
その他設定は変更しておりません。
はてさて、どうしたものか。
3.クローラーのアクセスを最適化する
今回はアクセス解析からmsnbotとbingbotが実アクセスの10倍近くのクロールしておりました。
robots.txtファイル
今回はbingbotとmsnbotのクロールアクセスを制限。
詳しく言うと、昔のブログのURLにアクセスが来ており、そのURLについては、「Redirection」大半を新URLに転送しています。
が、このアクセスが弾幕のようにアクセスがありまして、クロールは止めたくないけど旧サイトのURLに対するアクセスは不要なので、停止しました。
なお、旧URLはすべて「?」が含まれていましたが、現在はコメントや管理画面などでしか「?」を制限しています。
これにより、クローラーのアクセスが4分の1になりました。
今回、この対策に至ったのは、「WassUp」プラグインとサーバーのアクセス解析により、トラフィックの多くを占めるのが、「Msnbot」と「bingbot」というのが判明したためです。
その他クローラーもあるのですが、そこまでアクセスがひどくないのと、制限方法が難しいのとで今回は不問としました。
htaccessでアクセス制限をかけるときはIPベースでなくドメインとした場合、そのたびに名前解決が必要となりCPUのリソースを利用するとの記載を目にしたもので。
これらの対策で、問題が出るようであれば、サイトの一部を別サーバに置くように設定する「CDN」を構築し、そっちへ持ってくというのも考えないといけないのでしょうが、悲しいかなそこまでのアクセスが増えるようなサイトになるような気が一切しません。
今回はここまで。
なお今回の対応で、1日のCPU使用率は、
1時間10分程度から40分程度まで落ちております。
まだ、キャッシュ系のプラグインの結果がてていないので、これは追記しますか?
ではでは。
コメントを残す