- PR -

HTTPサーバー高負荷によるハードウェア増強目安の質問

1
投稿者投稿内容
abe
常連さん
会議室デビュー日: 2003/08/14
投稿数: 31
投稿日時: 2003-11-20 01:25
みなさんこんにちは。
アベと申します。

現在稼動しているサーバーのスペックが限界に達しているため
サーバーのハードウェアを良い物に交換する必要があるのですが、
ハードウェアの目安が分かりません。
どなたかアドバイスをお願いします。

Linux+Apache1.3+mod_gzip+PHP+MysqlのHTTPD+DNS鯖で
一日に10万ページビュー程あるサイトを運営しています。
半数くらいがPHPで動的生成のページです。

現在のハードウェア構成です。
マイクロATXのMSIのマザーボードに
Celeron1GHZ、Memory512MB、HDDはIDEのソフトウェアRAID(ATA133)。
最も負荷の高い時間帯に若干スワップが発生して多少レスポンスが遅くなったかなと感じる程度で、
現在までは快適に動作していました。ところが、新たにプログラムを
追加して一部のビジターのリンクの経路を計測するプログラムを入れたところ、
非常にレスポンスが悪くなりました。
ページをクリックしてから表示されるまでにほとんど待たされる事は
無かったのですが、現在では10秒ほどかかる始末です。

リンク追跡プログラムの高負荷が原因だと思います。
このプログラムがひとつのページに10個ほど設置してあり、
しかもひとつのプログラムが更に二個の子プログラムを起動するので
一人がひとつのページにアクセスすると30個のPHPの稼動が発生するため、
相当の負荷になっていると思います。
これが同時に10人のアクセスなどとなると恐ろしいです。
ハードウェアをどの程度の物に交換したら良いのか検討がつきません。
CPU、メモリ、とそれに伴うマザーボードの3点を交換する必要があるでしょうか。
また、PHPのパフォーマンスを最適化するツールで、
PHP開発元が提供している以下のようなツールはこのような時にどれくらいの
パフォーマンスの向上を見込めるんでしょうかね。
ちょっとややこしいのは今はパスなのでハードウェアの方の増強で切り抜けたいと
思っています。
以下のようなツールを試された事がある方のご意見もお待ちしています。

Zend Optimizer(Free)
http://www.zend.com/store/products/zend-optimizer.php

Zend Accelerator($490)
http://www.zend.com/store/products/zend-accelerator.php

Zend Performance Suite日本語版(310,000円 )
http://www.wiseknot.co.jp/network/index8.html

■下記はapacheのステータスの結果です

Server Version: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_gzip/1.3.26.1a mod_ssl/2.8.4 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2
Server Built: Oct 23 2002 14:52:50

--------------------------------------------------------------------------------
Current Time: Wednesday, 19-Nov-2003 23:12:09 JST
Restart Time: Wednesday, 19-Nov-2003 04:34:01 JST
Parent Server Generation: 0
Server uptime: 18 hours 38 minutes 8 seconds
Total accesses: 780718 - Total Traffic: 1.3 GB
CPU Usage: u1.7 s1.07 cu.63 cs.24 - .00543% CPU load
11.6 requests/sec - 19.7 kB/second - 1736 B/request
28 requests currently being processed, 0 idle servers
...R.WR.....W..W.W.R.WWW..R.WWWWWWWWWSSS....R...W....R.W........
...R............................................................
................................................................
................................................................



■下記は高負荷時のTOPの結果(途中より下は表示されません。)
---------------------------------------------------------------------------------------
11:28pm up 17 days, 7:18, 1 user, load average: 11.67, 10.78, 9.61
147 processes: 140 sleeping, 6 running, 1 zombie, 0 stopped
CPU states: 69.3% user, 30.6% system, 0.0% nice, 0.0% idle
Mem: 505256K av, 496092K used, 9164K free, 84K shrd, 86264K buff
Swap: 1052152K av, 17440K used, 1034712K free 192096K cached

PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME COMMAND
980 apache 20 0 7072 7072 5460 R 21.5 1.3 0:01 httpd
620 root 14 0 520 500 496 R 10.3 0.0 1664m syslogd
1259 apache 19 0 2652 2652 1104 R 6.9 0.5 0:00 regist_ys.cgi
737 named 11 0 2300 2132 1880 S 6.4 0.4 1613m named
13660 taknya 10 0 1160 1160 832 R 6.0 0.2 0:09 top
1084 apache 9 0 6476 6476 5416 S 3.4 1.2 0:00 httpd
244 root 9 0 0 0 0 SW 3.0 0.0 756:39 kjournald
1239 apache 9 0 6140 6140 5356 S 2.5 1.2 0:00 httpd
690 apache 9 0 6392 6392 5496 S 2.1 1.2 0:00 httpd
998 apache 9 0 6872 6872 5368 S 2.1 1.3 0:00 httpd
1138 apache 9 0 5944 5944 5324 S 2.1 1.1 0:00 httpd
1208 apache 9 0 6144 6144 5356 S 2.1 1.2 0:00 httpd
1222 apache 9 0 6380 6380 5356 S 2.1 1.2 0:00 httpd
1114 apache 9 0 6168 6168 5380 S 1.7 1.2 0:00 httpd
1149 apache 9 0 6200 6200 5392 S 1.7 1.2 0:00 httpd
1186 apache 8 0 6184 6184 5352 S 1.7 1.2 0:00 httpd
1216 apache 9 0 5936 5936 5320 S 1.7 1.1 0:00 httpd
1228 apache 9 0 5936 5936 5320 S 1.7 1.1 0:00 httpd
1229 apache 9 0 5948 5948 5360 S 1.7 1.1 0:00 httpd
1240 apache 9 0 5904 5904 5296 S 1.7 1.1 0:00 httpd
1246 apache 15 0 5452 5452 5204 S 1.7 1.0 0:00 httpd
1248 apache 9 0 5808 5808 5364 S 1.7 1.1 0:00 httpd
1252 apache 10 0 5404 5404 5212 S 1.7 1.0 0:00 httpd
25294 root 7 0 5260 5260 5112 S 1.2 1.0 7:16 httpd
632 apache 9 0 7052 7052 5396 S 1.2 1.3 0:00 httpd
1014 apache 8 0 5460 5460 5200 S 1.2 1.0 0:00 httpd
1095 apache 9 0 6048 6048 5364 S 1.2 1.1 0:00 httpd
1134 apache 9 0 7012 7012 5396 S 1.2 1.3 0:00 httpd
1137 apache 9 0 6448 6448 5416 S 1.2 1.2 0:00 httpd
1150 apache 9 0 6228 6228 5344 S 1.2 1.2 0:00 httpd
1171 apache 9 0 6176 6176 5384 S 1.2 1.2 0:00 httpd
1183 apache 9 0 5984 5984 5396 S 1.2 1.1 0:00 httpd
1200 apache 6 0 5456 5456 5204 S 1.2 1.0 0:00 httpd
1209 apache 9 0 5816 5816 5328 S 1.2 1.1 0:00 httpd
1245 apache 9 0 5904 5904 5296 S 1.2 1.1 0:00 httpd
1268 apache 17 0 0 0 0 Z 1.2 0.0 0:00 c.cgi <defunct>
739 named 9 0 2300 2132 1880 S 0.8 0.4 229:46 named
13388 root 10 0 2292 2292 1656 R 0.8 0.4 0:01 sshd
1173 apache 9 0 6028 6028 5388 S 0.8 1.1 0:00 httpd
1192 apache 9 0 5816 5816 5332 S 0.8 1.1 0:00 httpd
1193 apache 9 0 5936 5936 5320 S 0.8 1.1 0:00 httpd
1199 apache 8 0 5976 5976 5320 S 0.8 1.1 0:00 httpd
1215 apache 8 0 5452 5452 5200 S 0.8 1.0 0:00 httpd
1218 apache 9 0 5992 5992 5392 S 0.8 1.1 0:00 httpd
1221 apache 9 0 5932 5932 5320 S 0.8 1.1 0:00 httpd
1223 apache 9 0 5840 5840 5392 S 0.8 1.1 0:00 httpd
Toshi
ベテラン
会議室デビュー日: 2003/09/12
投稿数: 62
投稿日時: 2003-11-20 11:39
私はこのようにアクセスの多いマシンを管理したことは有りませんが、top の出力を見て気になる点は、

11:28pm up 17 days, 7:18, 1 user, load average: 11.67, 10.78, 9.61

ロードアベレージは高くなりすぎていますねぇ.

147 processes: 140 sleeping, 6 running, 1 zombie, 0 stopped
CPU states: 69.3% user, 30.6% system, 0.0% nice, 0.0% idle

プロセス数はさほど多く有りませんが、システムの割合が30%と高いのはロードアベレージが高いことが原因でしょうか。

Mem: 505256K av, 496092K used, 9164K free, 84K shrd, 86264K buff
Swap: 1052152K av, 17440K used, 1034712K free 192096K cached

メモリはスワップの量もさほど多くないことから大丈夫かと。

apacheのプロセスが多いのはともかくとして、

620 root 14 0 520 500 496 R 10.3 0.0 1664m syslogd

737 named 11 0 2300 2132 1880 S 6.4 0.4 1613m named

244 root 9 0 0 0 0 SW 3.0 0.0 756:39 kjournald

17日間稼動にしては syslogd が働き過ぎの気がします。kjournaldがよく働いているのはこれが原因でしょうか。
named も働き過ぎに感じます。リンク追跡プログラムが named に重労働を課しているのではないでしょうか?

ログメッセージを解析して、スクリプトにエラーが無いか確認してみて下さい。
named を自前で処理していることが負荷を高めているように思います。別の name server を立てるか外の named に頼っては如何でしょうか?
abe
常連さん
会議室デビュー日: 2003/08/14
投稿数: 31
投稿日時: 2003-11-21 15:24
ご返信ありがとうございます。

ロードアベレージについて調べてみましたが、通常1.00程度との事で、
ちょっと尋常では無いですね。
named と syslogd の稼働率に関してはどう比較してよいのか分からないです。
アクセスログ、MYSQL、DNS、ルーターのログなどを全てsyslogd経由で取得
しているのでそれが原因でしょうか?

リンク追跡のプログラム自体もどうやら高スペックを必要とするらしく、
これを別マシンで補う必要がありそうです。
1

スキルアップ/キャリアアップ(JOB@IT)