PukiWiki Plus!を利用して地域情報サイトを構築しています。

地域の方に広く使ってもらうために講習を行ったのですが、8台くらいで同時にページを表示しようとしただけで、そのうち3,4台のPCがページの表示に非常に時間が掛かる(分単位で)ようになり、ほとんど表示できなくなりました。
このとき、表示できなくなったPCからは、サイト内の他のページを表示しようとしても、ずっとページの表示がなかなか出来ない状況になり、しかし他の表示が出来るPCは、他のページを表示しようとしてもすんなり表示されました。
環境は、Debian(sarge)でapache-1.3.33とphp-4.3.10上でPukiWiki Plus! 1.4.6-plusで稼働しています。
apacheやphpの設定で、このように表示が非常に遅くなってしまう状況になることが改善できるなら、その設定や関連する情報のあるサイトを教えて下さい。

回答の条件
  • 1人10回まで
  • 登録:2007/01/19 16:47:14
  • 終了:2007/01/22 12:11:19

回答(1件)

id:stephanie No.1

stephanie回答回数29ベストアンサー獲得回数22007/01/19 17:49:38

ポイント60pt

ApacheBenchが標準ではいってる状態だと思いますのでまずは問題がサーバとクライアントのどちらか切り分けてはいかがでしょうか?

以下のコマンドでhttp://10.0.0.1/に対して500リクエスト同時アクセス10でベンチマークを行うことが出来ます。

ab -n 500 -c 10 http://10.0.0.1/

http://en.wikipedia.org/wiki/ApacheBench

id:stealthinu

500リクエスト同時アクセス10で試してみました。

1回あたり平均4秒と遅いですが、最も遅くても5秒なので問題の件とは違うようですね。

となると、自分はサーバ側の問題と思っていたのですが、クライアント側の問題なのかなあ…

Document Path: /

Document Length: 42133 bytes

Concurrency Level: 10

Time taken for tests: 204.899386 seconds

Complete requests: 500

Failed requests: 0

Write errors: 0

Total transferred: 21332970 bytes

HTML transferred: 21141830 bytes

Requests per second: 2.44 [#/sec] (mean)

Time per request: 4097.988 [ms] (mean)

Time per request: 409.799 [ms] (mean, across all concurrent requests)

Transfer rate: 101.67 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 0 9 81.9 0 978

Processing: 2810 4051 375.7 4048 5212

Waiting: 1333 2380 398.8 2366 3699

Total: 2810 4060 371.8 4056 5212

Percentage of the requests served within a certain time (ms)

50% 4056

66% 4198

75% 4279

80% 4350

90% 4521

95% 4714

98% 4906

99% 5009

100% 5212 (longest request)

2007/01/19 18:09:44
  • id:stephanie
    もし、接続が遅いPCが毎回同じPCであれば、
    IPアドレスを使ったURLで接続してみる or
    Personal Firewall等が入ってれば無効化してみるなどではいかがでしょうか?
  • id:tobeoscontinue
    >講習を行った
    ということなのでハブやLANケーブルに問題(接触不良など)があってデータがうまく流れていなかったのではないでしょうか。

    pingで応答時間を見てみてはどうでしょう
  • id:stealthinu
    >>stephanieさん
    接続が遅くなったPCは毎回固定というわけではなく、遅くなり始めると当分の間そのPCが遅くなる、という感じでした。表示が出来るようになると、普通に表示がスムーズに出来るようになりました。
    なので、apacheのプロセス数上限あたりと関係があるのかな?と思っていた次第です。
    ただ確かに、Firewall系のソフトを止めて試して、切り分けするべきでした。

    >>tobeoscontinueさん
    たぶんその可能性は低いです。
    遅くなった時に、全く別のページをみると、スムーズに表示されましたので。
    また10台くらいのクライアントがあるマシンルームで、デスクトップPCがLAN接続で接続されており、表示が行えるときと行えないときで、その間PCの移動やケーブルの操作などはしていませんでした。
  • id:tobeoscontinue
    クライアントPCのOSがわからないのですがCPUをモニターできるものを入れて置いたらどうでしょう。何か重いプロセスが走ってっていて応答が悪くなっているかもしれません。
  • id:stealthinu
    全クライアントがWinXPです。
    確かにおっしゃられるように、遅くなっていたときにタスクマネージャで他のプロセスなど確認しておくべきだったと思いました。
    まずは、クライアント側の問題なのか、サーバ側の問題なのかを、きっちり切り分けするところから確認を始めたほうが良い、ということですね。

    あと、時間帯が絞られているので、ログを抽出してどのくらいの同時接続数が起っていたかも確認してみたいと思っています。
  • id:stealthinu
    ええと、だいたい問題点がわかってきました。
    ログを見てわかったのですが、やはり同時接続数がふくれあがったことが問題のようです。

    再度abを使って同時30アクセスで試してみたのですが
    min mean[+/-sd] median max
    Total: 8434 11791 1457.2 11632 20995
    となっており、平均11秒、最大で20秒ほどまたされるなど、だいぶ厳しい数字になってきています。

    しかし30アクセスもしてないはず、と思ってログを確認してみたところ、なかなか表示されないためにリロードを押したり、他のページへのリンクを押してみたり、という行動をみなさんがとったため、10クライアント以下なのですが、5秒間に同時50アクセスくらいが行われていました。

    またトップページにいくつかアイコン画像が張ってあるのですが、PukiWiki上にアップロードされたアイコンを表示させているため、それにもまた負荷がかかる状況となっていたようです。
    同様に同時30アクセスで、画像一つ表示させるのに平均2秒とかかかってしまっています。
    min mean[+/-sd] median max
    Total: 72 2317 618.7 2320 3955
    これがトップページに8種くらいのアイコンがあったため、その負荷もばかにならなかったようです。

    そこで、今後の対策として、
    ・トップページに張っているアイコンは、直URLで表示されるような形にし、pukiwiki.phpを経由しないようにする。
    ・Convert_Cacheなどを導入し、pukiwiki自体の負荷を軽くする。
    といったあたりを考えていこうと思っています。

    stephanieさん、tobeoscontinueさん、回答やコメントいただき、たいへんありがとうございました。
  • id:stealthinu
    さらに追記です。
    refを使って画像を表示している場合、標準だとその画像を取得してサイズを調べて、そのサイズが本文に書き込まれるような設定になっています。
    なので、画像が全て取得しきれないと本文も出力されません。
    そこで、同じWiki内にせよ、外部にせよ、エラーや動きが遅いなどでなかなか取得できない画像が何枚もあると、そのために非常に時間がかかり、最悪タイムアウトで必ずエラーとなる状況が引き起こされるようです。
    今回の場合、トップページに自Wikiを通して表示する画像アイコンが多数あったため、少しでも負荷が増すと、表示に非常に時間がかかりやすくなる構成になっていたと思われます。

この質問への反応(ブックマークコメント)

トラックバック

  • 美麻Wikiでシステム的に修正している点 美麻Wiki (PukiWiki/TrackBack 0.3) 2008-06-25 11:49:04
    ベースシステム 導入プラグイン googlemaps2.inc.php u2b.inc.php rssdiff.inc.php mail.in.php recentcomment.inc.php div.inc.php プラグインの修正 article.inc.php line_break=1の場合の修正 スパム投稿へ
「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません