広告・Googleアドセンス728px

Article(記事) Follow Up (追記)

WordPressの性能チューニング(cron)

投稿日:2016年11月6日 更新日:

久々にWordPressにアクセスしてみたら、異様に初期表示までに時間がかかることが判明し@ITの「とにかく速いWordPress」の一連の記事を見ながらチューニングを実施してきました。

その中でab(apache bench)を使って性能測定していたのですが、異様にレスポンスが早い時と、遅い時があったので、ログをtail -fで表示させながらabを実行していたところ、どうもwp-cron.phpというものが定期的に実行されており、この実行に体感で5秒程度かかっていそうなことが判明しました。

218.45.184.224 - - [06/Nov/2016:11:55:21 +0900] "POST /wp-cron.php?doing_wp_cron=1478400921.7104580402374267578125 HTTP/1.1" 200 - "https://blog.kamata-net.com/wp-cron.php?doing_wp_cron=1478400921.7104580402374267578125" "WordPress/4.6.1; https://blog.kamata-net.com"
218.45.184.224 - - [06/Nov/2016:11:55:21 +0900] "GET / HTTP/1.0" 200 102759 "-" "ApacheBench/2.3"
218.45.184.224 - - [06/Nov/2016:11:55:21 +0900] "GET / HTTP/1.0" 200 102759 "-" "ApacheBench/2.3"
218.45.184.224 - - [06/Nov/2016:11:55:21 +0900] "GET / HTTP/1.0" 200 102759 "-" "ApacheBench/2.3"
218.45.184.224 - - [06/Nov/2016:11:55:21 +0900] "GET / HTTP/1.0" 200 102759 "-" "ApacheBench/2.3"

連続して同じURLにアクセスがあった場合には実行されないので、abのように同一URLにアクセスを繰り返す場合には一発目が遅いのみですが、都度違うURLにアクセスがあるような場合は毎回wp-cron.phpが実行されパフォーマンスにも影響しますし、リソースの無駄遣いとなります。

そこでまずはwp-config.phpをいじってwp-cronが実行されないように強制的に停止することとします。以下のように7行目を追加しましょう。

/** データベースのテーブルを作成する際のデータベースの文字セット */
define('DB_CHARSET', 'utf8');
/** データベースの照合順序 (ほとんどの場合変更する必要はありません) */
define('DB_COLLATE', '');
define('DISABLE_WP_CRON', 'true');

停止してしまったwp-cron.phpは定期的に実行してあげないと、バックアップや自動投稿などができなくなってしまいますので、OSの機能(cron)で実行することとします。CentOS7の場合は、/etc/cron.hourly配下に0wp-cron.cronファイルとして以下のファイルを作成します。

#!/bin/bash
# Action!
exec /usr/bin/wget -q -O - https://blog.kamata-net.com/wp-cron.php

これで「だいたい」1時間に1回wp-cron.phpが実行されることとなります。

この記事は役に立ちましたか?評価をお願いいたします。
[合計: 0 平均: 0]

広告336px

広告336px

-Article(記事), Follow Up (追記)
-Apache, CentOS, Linux, WordPress, WPカスタマイズ

Copyright© 蒲田ネット , 2017 AllRights Reserved.