FC2ブログ

Wordpressのカテゴリーが過剰に増えて激重サイトになってた仮説の検証

検証に使用したマシンスペック

  スペック
CPU Xeon3050
メモリ DDR2 2GB
HDD 40GB 5400 rpm
OS CentOS 6.2 x86 64bit
PHP 5.3.3
MySQL 5.1.61
Wordpress 3.1.2

 

重いサイトについて

既に、運用しているWordpressのサイトのレスポンスが劇的に重いと掲載しました。

・Linux CentOS低予算自宅サーバ奮闘メモ ApacheBenchを使ってWordpressで公開しているページのパフォーマンス測定
http://centlinuxer.blog37.fc2.com/blog-entry-66.html

 

・Linux CentOS低予算自宅サーバ奮闘メモ 新しいサーバでwordpressにApacheBenchを試してみた
http://centlinuxer.blog37.fc2.com/blog-entry-75.html

いずれも、siteBという表記で記載しているサイトの事ですが、何が原因でサイトが重いのか?の犯人特定にまでは至っていませんでした。
前回も記載しましたが、検証用のサーバでApache Benchを試してみたところ、

# ab -c 1 -n 10 http://siteB.info/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking siteB.info (be patient).....done


Server Software: Apache
Server Hostname: siteB.info
Server Port: 80

Document Path: /
Document Length: 2173881 bytes

Concurrency Level: 1
Time taken for tests: 52.878 seconds
Complete requests: 10
Failed requests: 0
Write errors: 0
Total transferred: 21740790 bytes
HTML transferred: 21738810 bytes
Requests per second: 0.19 [#/sec] (mean)
Time per request: 5287.777 [ms] (mean)
Time per request: 5287.777 [ms] (mean, across all concurrent requests)
Transfer rate: 401.52 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 0
Processing: 3796 5287 4636.3 3825 18482
Waiting: 3603 5086 4612.0 3631 18212
Total: 3796 5287 4636.5 3825 18483

Percentage of the requests served within a certain time (ms)
50% 3825
66% 3832
75% 3847
80% 3858
90% 18483
95% 18483
98% 18483
99% 18483
100% 18483 (longest request)

同時アクセス数:1

連続アクセス数:10

というアクセスに対して、Time taken for tests:   52.878 secondsと言う事で、1ページあたり5秒程度待ってくださいという散々たる結果でありました。wordpressの管理画面を開いてみると。

WS000430

※管理画面を開くのは比較的素早く開く。


バカみたいにカテゴリーが入っている。このカテゴリーはプログラム的に自動的に突っ込んでるわけですが、とにかく多い。そいうワケで、このカテゴリーが怪しいので、カテゴリーを全消去した後にApache Benchで計ってみたいと思います。

続きを読む

スポンサーサイト

新しいサーバでwordpressにApacheBenchを試してみた

前回、

・ApacheBenchを使ってWordpressで公開しているページのパフォーマンス測定
http://centlinuxer.blog37.fc2.com/blog-entry-66.html

旧サーバのサイトBが致命的にレスポンスが悪いという事で、レスポンス改善対応を行うべく、新サーバに実験用のWebサーバを立てました。ちなみに、新サーバは旧サーバよりCPU性能がかなり良いです。

  旧サーバ 新サーバ
OS CentOS 5 32bit CentOS 6.2 x86 64bit
(必要最低限インストール)
CPU Intel Celeron420 Xeon3050
メモリ DDR3 2GB DDR2 2GB
PHP 5.1.6 5.3.3
MySQL 5.0.22 5.1.61

PHPとMySQLのバージョンが違いますが、旧サーバ計測当時のバージョンです。今は新サーバと同じバージョンで、レスポンス的にさほど変らないかと。。

新サーバ:サイトBの場合(激重サイト)

前回と同じ条件でサイトBのレスポンスを計ってみたいと思います。

同時アクセス数:1

連続アクセス数:10

※重すぎてレスポンスが返ってこないのでこの数字

# ab -c 1 -n 10 http://siteB.info/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking siteB.info (be patient).....done


Server Software: Apache
Server Hostname: siteB.info
Server Port: 80

Document Path: /
Document Length: 2173881 bytes

Concurrency Level: 1
Time taken for tests: 52.878 seconds
Complete requests: 10
Failed requests: 0
Write errors: 0
Total transferred: 21740790 bytes
HTML transferred: 21738810 bytes
Requests per second: 0.19 [#/sec] (mean)
Time per request: 5287.777 [ms] (mean)
Time per request: 5287.777 [ms] (mean, across all concurrent requests)
Transfer rate: 401.52 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 0
Processing: 3796 5287 4636.3 3825 18482
Waiting: 3603 5086 4612.0 3631 18212
Total: 3796 5287 4636.5 3825 18483

Percentage of the requests served within a certain time (ms)
50% 3825
66% 3832
75% 3847
80% 3858
90% 18483
95% 18483
98% 18483
99% 18483
100% 18483 (longest request)

Time taken for tests:   52.878 secondsと言う事で、10件の連続アクセスを約52秒で返してきました。CPU性能や、他に作業中のプロセスが動いていないなどの影響から、20秒近くこちらの方が速いです。でも、サイトにアクセスしてページが表示されるまでの時間を考えるとCPUの性能だけではまだまだ遅いです。ここから、改善策を講じて一桁台までもっていけたらと妄想しています。

 

新サーバ:サイトCの場合(プレーンなWordpress)

参考までにwordpressをインストールしただけの場合の速度も計ってみたいと思います。ちなみに、wordpressのバージョンは3.3.1です。

同時アクセス数:1

連続アクセス数:10

# ab -c 1 -n 10 http://siteC.info/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking siteC.info (be patient).....done


Server Software: Apache
Server Hostname: siteC.info
Server Port: 80

Document Path: /
Document Length: 7547 bytes

Concurrency Level: 1
Time taken for tests: 2.433 seconds
Complete requests: 10
Failed requests: 9
(Connect: 0, Receive: 0, Length: 9, Exceptions: 0)
Write errors: 0
Total transferred: 77654 bytes
HTML transferred: 75434 bytes
Requests per second: 4.11 [#/sec] (mean)
Time per request: 243.252 [ms] (mean)
Time per request: 243.252 [ms] (mean, across all concurrent requests)
Transfer rate: 31.18 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 233 243 3.7 245 247
Waiting: 233 243 3.6 245 246
Total: 233 243 3.7 245 247

Percentage of the requests served within a certain time (ms)
50% 245
66% 245
75% 245
80% 246
90% 247
95% 247
98% 247
99% 247
100% 247 (longest request)

Time taken for tests:   2.433 secondsでテラ速いw約1/26のレスポンスという事で。。。
wordpressをいかに間違った使い方をしているかわかりますね。。

次は、前回のサイトAと同じ条件での計測です。

同時アクセス数:10

連続アクセス数:100

# ab -c 10 -n 100 http://siteC.info/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking siteC.info (be patient).....done


Server Software: Apache
Server Hostname: siteC.info
Server Port: 80

Document Path: /
Document Length: 7542 bytes

Concurrency Level: 10
Time taken for tests: 13.667 seconds
Complete requests: 100
Failed requests: 67
(Connect: 0, Receive: 0, Length: 67, Exceptions: 0)
Write errors: 0
Total transferred: 776606 bytes
HTML transferred: 754406 bytes
Requests per second: 7.32 [#/sec] (mean)
Time per request: 1366.699 [ms] (mean)
Time per request: 136.670 [ms] (mean, across all concurrent requests)
Transfer rate: 55.49 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 5.1 0 27
Processing: 538 1338 200.4 1354 2359
Waiting: 538 1336 200.4 1349 2359
Total: 538 1340 201.8 1354 2386

Percentage of the requests served within a certain time (ms)
50% 1354
66% 1367
75% 1374
80% 1385
90% 1409
95% 1563
98% 1995
99% 2386
100% 2386 (longest request)

Time taken for testsについて、サイトAが119秒だったのに対して、サイトCは13秒と圧倒的速さ。。。。w

連続アクセス数等の数字が増えれば、よりCPUの性能の違いが出るでしょうが。。

 

これらを基準に、サイトCは我が自宅サーバにおける理想郷の速さという事で、サイトB(激重サイト)のレスポンス改善を行っていきたいと思います。

ApacheBenchを使ってWordpressで公開しているページのパフォーマンス測定

今回はwordpressとさほど関連はないですが、wordpressで構築して公開しているサイトについてApacheBenchを使って、パフォーマンスをチェックしてみいと思います。

というわけで、いきなりコマンドを打って、実行してみました。URLは架空のものです。

$ ab -c 1 -n 1 http://siteA.net/

でうまくいったので、数字を増やしてやろうと

$ ab -c 2 -n 1 http://siteA.net/
ab: Cannot use concurrency level greater than total number of requests
Usage: ab [options] [http[s]://]hostname[:port]/path

とやってみるとエラーが(・ω・;)?Apacheの設定で同時接続数もしくは、同IPからアクセスに制限がかかってるものだと勘違いしていましたが、コマンドを正しく打ってませんでした。というか、エラーにその旨が書いてありますが。。

ad -c [同時アクセス数] -n [連続アクセス数] http://[アクセス先]

要するに、同時アクセス数 > 連続アクセス数をどうやって実現するんだ!?って話ですね。上記だと1アクセスするのに2端末使いますよって話です。1端末は用無し。。

そういうわけでミニ失敗談はさておき、気を取り直してパフォーマンスチェックします。

パフォーマンスチェック結果の見方

Document Path アクセス先htmlファイル
Document Length アクセス先ファイル容量
Concurrency Level 送信リクエスト数
Time taken for tests リクエスト完了までの所要時間
Complete requests 総リクエスト数
Failed requests 取りこぼしたリクエスト数。取りこぼしの発生は、同時接続数にサーバの処理能力が追い付いていないことが原因と考えられます
Requests per second 1秒あたりに処理されたリクエスト数。パフォーマンスの尺度として利用します。この値が高くなるように、サーバの最適化を行います
Time per request 1秒あたりに処理された所要時間
Transfer rate 1秒あたりに受信された容量
Connnection Times (ms) 上から順に接続(Connect)、処理(Processing)、待ち時間(Wait)を集計し、最小値(min)、平均値と標準偏差(mean[+/-sd])、中央値(median)、最大値(max)で表している
Percentage of the requests served within a certain time (ms) 処理時間の推移

この中でとりあえず気になるのは、Time taken for tests(リクエスト完了までの所要時間)ですかね。これが速ければ速い方がいいのは当たり前ですが、1ページ当たりどれくらいのストレスを感じるかの目安にしやすいと思います。実際はRequests per second(1秒あたりに処理されたリクエスト数)を基準とするようです。では実験結果は下記に。

続きを読む

WordpressとPHP、MySQLのバージョン一覧とインストール

以前はMovable Typeを使っていましたが、最近はもっぱらWordPressです。ググってるとどうも、wordpressの記事が多いなとか、記事の動的構築に魅力を感じて変更しました。って今更感の話ですが、このブログに書いてなかったし、テスト環境を構築するので書き留めておきます。まず、wordpressを動かす環境をしらべなければなりませんね。もちろん、CentOS + apache環境ですが、PHPとMySQLのバージョンを。

バージョンを調べる

PHPの場合は、

$ php -version
PHP 5.1.6 (cli) (built: Nov 29 2010 16:47:37)
Copyright (c) 1997-2006 The PHP Group
Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

-varsionオプションですぐに出てきます。この場合、5.1.6というこで。現時点で最新のWordpress3.3.1の動作環境がPHP5.2.4以上なので、最新のバージョンを使えない事がわかります。

MySQLの場合は、

$ mysql --version
mysql  Ver 14.12 Distrib 5.0.22, for redhat-linux-gnu (i686) using readline 5.0

“Ver”と書いてあるので、14.12だと思いそうになりますが、見るべくは5.0.22の方です。もしくは、ログインして、

mysql> select version();
+-----------+
| version() |
+-----------+
| 5.0.22    |
+-----------+

調べる事も可能です。MySQLの方はほとんどが5以下で変動もないので特に気にする事もないかもしれません。

とりあえず、PHPから最新のWordpressを利用できない事はわかりましたが、どのバージョンなら良いのか?

・WordPress | 日本語 リリース
http://ja.wordpress.org/releases/

 

過去のバージョンがダウンロードできるページに特に書いてないので、調べてみました。

続きを読む

プロフィール

白鯖

Author:白鯖
安い寄せ集めの部品で構築し、CentOS5をインストールしました。主に、Webサーバ、アプリケーションサーバとして運用中。ハードの知識はあまり無いプログラマですが、全部自前で作るのは、手間はかかるけど、レン鯖より面白いです。

ハードウェア構成

カテゴリー
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
Max TDP控え目なCPU
安くて静音なクーラー
検索フォーム
ユーザータグ
RSSフィード
はてな
スポンサード リンク
おすすめ書籍
twitter