電脳ではたらくOpenPNE開発者の日記@ネット このページをアンテナに追加 RSSフィード

2011-08-23

はい!OpenPNE3.6beta13、beta11(Propel改造版)、3.4.15、3.2.7.5の負荷性能を比較してみた!の巻!

f:id:openpne:20110823111931p:image:w360:right

はい!ギュンばんわ!

OpenPNE3の負荷性能の可視化のツールで、

  • OpenPNE3.6beta13(Doctrine版・コアだけ)
  • OpenPNE3.6beta11(Propel改造版・コアだけ)
  • OpenPNE3.4.15(Doctrine版・コアだけ)
  • OpenPNE3.2.7.5(Doctrine版・コアだけ)

に約38万ユーザ(特に38という数字に意味はなくテストしている初期段階で使った数字をそのまま使ってしまった。10万とか50万とか100万とかに今後修正したい)のデータを投入し、ApacheBenchで同時接続10で1時間負荷をかけてみた。

結果は、

  • OpenPNE3.6beta13(Doctrine版・コアだけ)
    • PVは、約150PV/分。。。
    • httpdの平均メモリ使用量は、約37MB。。。
    • 平均レスポンスタイムは、3〜4秒。。。
  • OpenPNE3.6beta11(Propel改造版・コアだけ)
    • PVは、約190PV/分。。。
    • httpdの平均メモリ使用量は、約41MB。。。
    • 平均レスポンスタイムは、3〜4秒。。。
  • OpenPNE3.4.15(Doctrine版・コアだけ)
    • PVは、約90PV/分。。。
    • httpdの平均メモリ使用量は、約25MB。。。
    • 平均レスポンスタイムは、5〜6秒。。。
  • OpenPNE3.2.7.5(Doctrine版・コアだけ)
    • PVは、約90PV/分。。。
    • httpdの平均メモリ使用量は、約33MB。。。
    • 平均レスポンスタイムは、5〜6秒。。。

な感じ。。。

ピアレビューできるように負荷性能検証環境と負荷性能検証方法の手順を追って示すよ!

#2011/8/23 16:45追記

ハードウェアの素性、各OpenPNEのセットアップ方法を追記した!

検証の生データとかは↓ね。

https://github.com/rysk92/doc/tree/master/20110823_webapp_monitor_openpne

#2011/8/23 16:51追記

次は、

  • OpenPNE2.14での検証
  • 段階的に負荷を増やしての限界テスト

かな〜

はい!負荷性能検証で使っているサーバを紹介するよ!の巻!

f:id:openpne:20110823142150j:image:medium

はい!3.6beta13、beta11(Propel改造板)、3.4.15、3.2.7.5の負荷性能を比較してみた!の巻!で使ってるサーバを紹介するよ。

■Webサーバ(芭蕉1と命名)

インテル Boxed Intel Core 2 Quad Q8400S 2.66GHz 4MB 45nm 65W BX80580Q8400S

http://www.amazon.co.jp/gp/product/B0027K74DC/

インテル Boxed Intel Desk Top Board G41MJ BOXDG41MJ

http://www.amazon.co.jp/gp/product/B001W9JMOS

WesternDigital WD3200BEKT ScorpioBlack 2.5inch 7200rpm 320GB 16MB SATA/3.0Gbs

http://www.amazon.co.jp/gp/product/B001E92Y8M

Flex-ATX電源 TOP-220W-FLEX

http://www.amazon.co.jp/gp/product/B0041G2778

ノーブランド DIMM DDR2 SDRAM PC6400 4GB

http://kakaku.com/item/05200013154/

CPU: \17,000

MEM: \7,800

M/B: \7,200

HDD: \6,400

PWR: \7,000

メモリ保証: \1,000

合計: \54,200

UNIX Benchmarks (Version 5.1.2)のスコア

System Benchmarks Index Score, 3874.0

DBサーバ(芭蕉3と命名)

インテル Boxed Intel Core i5 i5-760 2.80GHz 8M LGA1156 Lynnfield BX80605I5760

http://www.amazon.co.jp/dp/B003VANRAQ/

BIOSTAR LGA1156 MicroATXマザーボード TH55B HD

http://www.amazon.co.jp/dp/B003DH9IQ4/

シー・エフ・デー販売 Elixir デスクトップ用メモリ DDR3 W3U1333Q-4G DDR3 PC3-10600 CL9 4GB x 2枚セット

http://www.amazon.co.jp/dp/B00405SB7U/

日立 HGST Deskstar パッケージ版 3.5inch 500GB 16MB 7200rpm 0S02600

http://www.amazon.co.jp/dp/B003Y8YVPK/

アビー ZUMAX 360W ATX電源 ZU-360B0

http://www.amazon.co.jp/dp/B001P4QCIO/

CPU: \19,079

MEM: \10,259

M/B: \8,142

HDD: \3,680

PWR: \2,980

合計: \44,131

UNIX Benchmarks (Version 5.1.2)のスコア

System Benchmarks Index Score, 2601.4


■ApacheBench用サーバ(芭蕉2と命名)

AMD AMD AthlonII X2 240e AD240EHDGQBOX

http://www.amazon.co.jp/dp/B002PA7U88/

MSI M-ATX AMDシリーズ マザーボード 785GM-P45

http://www.amazon.co.jp/dp/B00389P3VG/

シー・エフ・デー販売 Elixir デスクトップ用メモリ DDR3 W3U1333Q-4G DDR3 PC3-10600 CL9 4GB x 2枚セット

http://www.amazon.co.jp/dp/B00405SB7U/

日立 HGST Deskstar パッケージ版 3.5inch 500GB 16MB 7200rpm 0S02600

http://www.amazon.co.jp/dp/B003Y8YVPK

サイズ ATX250W電源 Ichi Power 250 IP250A

http://www.amazon.co.jp/dp/B003H34AMQ/

CPU: \5,429

MEM: \10,259

M/B: \5,717

HDD: \3,680

PWR: \2,059

合計: \27,144

UNIX Benchmarks (Version 5.1.2)のスコア

System Benchmarks Index Score, 1566.5

はい!OpenPNE3.6beta11(Propel改造版・コアだけ)の負荷検証環境構築方法!の巻!

1) まず芭蕉1(Web)、芭蕉3(DB)にOpenPNE3をセットアップ

git clone -b propel git://github.com/upsilon/OpenPNE3.git op36propel.example.com
git submodule init
git submodule update
cd plugins/sfPropel15Plugin/lib
git clone -b 1.6 git://github.com/Xosofox/propelVendor.git vendor
cd ../../../
cp config/ProjectConfiguration.class.php{.sample,}
cp config/OpenPNE.yml{.sample,}
php symfony openpne:permission
cd plugins/
git clone git://github.com/ebihara/opAuthMailAddressPlugin.git
cd ../
php symfony plugin:publish-assets

cat > config/databases.yml <<EOF
all:
  propel:
    class: sfPropelDatabase
    param:
      phptype: mysql
      dsn: 'mysql:dbname=op36propel_example_com;host=[芭蕉3のIP]'
      encoding: utf8
      username: db_user
      password: db_pass
EOF

mysql -h [芭蕉3のIP] -u db_user -p
CREATE DATABASE op36propel_example_com DEFAULT CHARACTER SET utf8;

php symfony propel:build --all --and-load

cd plugins
git clone git://github.com/rysk92/opPvPlugin.git
cd ../
php symfony cc

cat > insert.php <<EOF


require_once 'config/ProjectConfiguration.class.php';
$configuration = ProjectConfiguration::getApplicationConfiguration('pc_frontend', 'prod', false);
sfContext::createInstance($configuration);

$con = Propel::getConnection(MemberPeer::DATABASE_NAME);
$con->beginTransaction();

for ($i = 2; $i <= 380000; $i++)
{
  echo 'member: '.$i."\n";
  $member = new Member();
  $member->setName('dummy'.$i);
  $member->setIsActive(true);
  $member->save();
}

$con->commit();
EOF

time php insert.php
(大体5分ぐらいだった)

2) 芭蕉2から負荷をかける

time ab -n 10000 -c 10 -C OpenPNE_pc_frontend=[cookieの値] http://op36propel.example.com/member/search

(大体50分ぐらいだった)

3) 芭蕉1にてレポートを作成

このへん参考に

はい!OpenPNE3.6beta13(Doctrine版・コアだけ)の負荷検証環境構築方法!の巻!

1) まず芭蕉1、芭蕉3にOpenPNE3をセットアップ

git clone git://github.com/openpne/OpenPNE3.git op36doctrine.example.com
cd op36doctrine.example.com
git checkout OpenPNE-3.6beta13
cp config/ProjectConfiguration.class.php{.sample,}
cp config/OpenPNE.yml{.sample,}
php symfony openpne:permission
cd plugins/
git clone git://github.com/ebihara/opAuthMailAddressPlugin.git
cd ../
php symfony plugin:publish-assets

mysql -h [芭蕉3のIP] -u db_user -p
CREATE DATABASE op36doctrine_example_com DEFAULT CHARACTER SET utf8;

cat > config/databases.yml <<EOF
all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:dbname=op36doctrine_example_com;host=[芭蕉3のIP]'
      encoding: utf8
      username: db_user
      password: db_pass

prod:
  doctrine:
    param:
      profiler: false
EOF

php symfony doctrine:build --all --and-load

cd plugins
git clone git://github.com/kawahara/opKdtPlugin.git
cd ../
cd plugins
git clone git://github.com/rysk92/opPvPlugin.git
cd ../
php symfony cc

php symfony opKdt:generate-member --env=prod --number=380000
(大体75分ぐらいだった)

2) 芭蕉2から負荷をかける

time ab -n 10000 -c 10 -C OpenPNE_pc_frontend=[cookieの値] http://op36doctrine.example.com/member/search

(大体70分ぐらいだった)

3) 芭蕉1にてレポートを作成

このへん参考に

はい!OpenPNE3.4.15(Doctrine版・コアだけ)の負荷検証環境構築方法!の巻!

1) まず芭蕉1、芭蕉3にOpenPNE3をセットアップ

git clone git://github.com/openpne/OpenPNE3.git op34doctrine.example.com
cd op34doctrine.example.com
git checkout OpenPNE-3.4.15
cp config/ProjectConfiguration.class.php{.sample,}
cp config/OpenPNE.yml{.sample,}
php symfony openpne:permission
cd plugins/
git clone git://github.com/ebihara/opAuthMailAddressPlugin.git
cd ../
php symfony plugin:publish-assets

mysql -h [芭蕉3のIP] -u db_user -p
CREATE DATABASE op34doctrine_example_com DEFAULT CHARACTER SET utf8;

cat > config/databases.yml <<EOF
all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:dbname=op34doctrine_example_com;host=[芭蕉3のIP]'
      encoding: utf8
      username: db_user
      password: db_pass

prod:
  doctrine:
    param:
      profiler: false
EOF

php symfony doctrine:build --all --and-load

cd plugins
git clone git://github.com/kawahara/opKdtPlugin.git
cd ../
cd plugins
git clone git://github.com/rysk92/opPvPlugin.git
cd ../
php symfony cc

php symfony opKdt:generate-member --env=prod --number=380000
(大体75分ぐらいだった)

2) 芭蕉2から負荷をかける

time ab -n 10000 -c 10 -C OpenPNE_pc_frontend=[cookieの値] http://op34doctrine.example.com/member/search

(大体103分ぐらいだった)

3) 芭蕉1にてレポートを作成

このへん参考に

はい!OpenPNE3.2.7.5(Doctrine版・コアだけ)の負荷検証環境構築方法!の巻!

1) まず芭蕉1、芭蕉3にOpenPNE3をセットアップ

git clone git://github.com/openpne/OpenPNE3.git op32doctrine.example.com
cd op32doctrine.example.com
git checkout OpenPNE-3.2.7.5

cp config/ProjectConfiguration.class.php{.sample,}
cp config/OpenPNE.yml{.sample,}
php symfony openpne:permission
cd plugins/
git clone git://github.com/ebihara/opAuthMailAddressPlugin.git
cd ../
php symfony plugin:publish-assets

mysql -h [芭蕉3のIP] -u db_user -p
CREATE DATABASE op32doctrine_example_com DEFAULT CHARACTER SET utf8;

cat > config/databases.yml <<EOF
all:
  doctrine:
    class: sfDoctrineDatabase
    param:
      dsn: 'mysql:dbname=op32doctrine_example_com;host=[芭蕉3のIP]'
      encoding: utf8
      username: db_user
      password: db_pass

prod:
  doctrine:
    param:
      profiler: false
EOF

php symfony doctrine:build-all-load

cd plugins
git clone git://github.com/kawahara/opKdtPlugin.git
cd ../
cd plugins
git clone git://github.com/rysk92/opPvPlugin.git
cd ../
php symfony cc

php symfony opKdt:generate-member --env=prod --number=380000
(大体70分ぐらいだった)

2) 芭蕉2から負荷をかける

time ab -n 10000 -c 10 -C OpenPNE_pc_frontend=[cookieの値] http://op32doctrine.example.com/member/search

(大体103分ぐらいだった)

3) 芭蕉1にてレポートを作成

このへん参考に