目的

白い霧を発生させないためにダイエット [heart]
→ 皆様のご協力により、ダイエットの目標を達成しました!このページは参考までに残しておきます。

ダイエットのレシピ

正直、負荷の原因になっているところを見極められていない状況。
PHP のチューニングに詳しい人・PukiWikiのソースが読める人がいると…助かる。
80:20 の法則を考えると、20%の処理に8割の負荷がかかっている?

負荷の原因かも

  • ページ数の増加(参照時は影響ないはず。更新時の影響は?ソース追えてない)
  • ReverseLink: 自動リンクを使わない限り、負荷はページ数に依存しない(ページが増えても大丈夫)。 参照時の負荷は小さい? 更新時の負荷は小さそう。
    • ボタンを押したときのみ表示するようにした
  • 自動リンク: 主に更新時の負荷が大きい → 廃止
  • アクセス数の増加(最近は横ばいにつき、影響度は低そう)
  • 更新時の処理: ページ数には依存しないと思うけど…。これもソース追えてない。
  • 「最近更新されたページ」のためのデータファイル (recent.dat) に全頁 (10840ページ!) の情報を記述している…。240KBのファイルを開いているわけで、こりゃ重いはずだ。

負荷の原因じゃなさそう

  • 1ページあたりの文字数: 文字のパースにかかる負荷は小さいはず。
    • → 複雑な記法やプラグインの多用は影響あるかも?

ダイエットの計画を立てよう

  • 単純に1ページの文字数を減らすのは効果が低そう
  • 掲示板を外部に移せば負荷は下がるかも。でもまとめサイトが寂れる可能性大。
    • 外部の掲示板をページ内に表示させる仕組みがあるといい。
    • 外部の掲示板に依存した場合、コメント欄への ReverseLink が表示されなくなる(ReverseLinkを更新チェックに利用する場合は致命的か?)

ダイエットを頑張ろう(PukiWiki本体の軽量化に追従)

  • PukiWiki 1.4.6 にアップデートする。
    • いろいろと負荷対策されているらしい。
  • 他ページへのリンクに、そのページの更新時刻を表示しないようにする。(マウスカーソルを合わせると表示されるやつ)
  • 『ページ更新時の負荷の大部分が put_lastmodified() による』、『official ではページ数が 2450 ページ弱*2あるので、更新時に get_filetime($page) が 2450 回呼び出されます』 マジですか orz ← pukiwiki.dev:BugTrack2/151
    • 対策版を試しに入れてみたけど、それほど負荷は変わらなかった…。更新処理は早くなったかな?
  • 「links_update の処理を見直そう」。結論は出ていないけど rel, ref ファイルの処理が参考になる。 ← pukiwiki.dev:BugTrack2/80
    • そのページに含まれるリンクの数だけ、 ref ファイルを生成している。
    • AutoLink? が無効な場合は効率化の効果は小さそう。
    • とりあえず rel ファイルは生成しないようにする。

ページ数に依存する負荷

全ページの配列を取得する「get_existpages」 → 基本的に使用しないこと
【改】要改善、【調】要調査、【済】対策済、【不】対策不要

  • lib/
    • 【済】html.php:edit_form() → テンプレートの取得時に使用 → 改善可
    • 【済】file.php:put_lastmodified() → 最近更新されたページ (recent.dat) の生成
    • 【不】file.php:get_readings() → ページの「読み」の取得。まとめサイトでは廃止済。
    • 【不】link.php:links_init() → リンクプラグインから呼び出し。まとめサイトでは廃止済。
    • 【不】func.php:do_search() → PukiWiki 検索機能。まとめサイトでは廃止済。
  • plugin/
    • 【改】backup.inc.php:plugin_backup_get_list_all() → ページ名無しでバックアップ機能が呼ばれた時。通常使われないが、念のため削除する。
    • 【不】bugtrack.inc.php: → まとめサイトでは未使用
    • 【調】deleted.inc.php: → 要調査
    • 【不】list.inc.php: → まとめサイトでは未使用
    • 【調】ls.inc.php: → 要調査
    • 【調】ls2.inc.php: → 要調査
    • 【不】map.inc.php: → まとめサイトでは未使用
    • 【不】navi.inc.php: → まとめサイトでは未使用
    • 【調】new.inc.php: → まとめサイトでは未使用?
    • 【調】popular.inc.php → 人気の○○で使用
    • 【不】random.inc.php: → まとめサイトでは未使用
    • 【調】referer.inc.php: → 要調査。たぶん使ってない。
    • 【不】rename.inc.php: → まとめサイトでは未使用
    • 【不】tb.inc.php: → まとめサイトでは未使用
    • 【不】touchgraph.inc.php: → まとめサイトでは未使用
    • 【不】tracker.inc.php: → まとめサイトでは未使用
    • 【不】yetlist.inc.php: → まとめサイトでは未使用

ダイエットを頑張ろう(まとめサイト独自の軽量化)

  • 使えるプラグインの数を最小限にする
    • カウンタや人気の○○は廃止かも…。
  • 1ページの最大文字数を制限する?
  • 掲示板を外部に置く?

外部掲示板との連携

現状

  • pcomment でページ分割
    • N件ごとにページが分かれるため、ページ数が増える
    • ReverseLink 先がコメント欄のページになる
    • 掲示板に一言書き込まれるたびに、ページがバックアップされる

外部掲示板との連携

  • 軽い掲示板をまとめサイト内に表示できないか?
  • 【課題】ReverseLinkや更新チェックができなくなる

今どんな一般ページがあるの?

以下など。とてもじゃないが調べ切れない…。(たぶんリンク化するとまとめサイトに大きな負荷が発生してしまうだろうから自粛)

  • まとめサイト 東京村企画用テンプレート | まとめサイトのお引越し | まとめサイトのダイエット | まとめサイトへの要望 | まとめサイトをいたわろう | まとめサイト非公認応援団 | まとめ役 | まとめ役による占い先の指定 | まとめ役による投票先の指定 | まとめ役立候補制
  • †登場人物 †人気投票/登場人物 †キャラコンプ喫茶 †キャラコンプ喫茶2 †キャラクター別勝敗データ †ファンクラブ †被害者の会 †IF 30人村 †イメージカラー 
    • †ゲルト †ゲルト様への要望を事前に検討しよう †ゲルト様ファンクラブ 
    • †パメラ †パメラに傷心(ハートブレイク) †パメラファンクラブ †村娘の恋愛相談所 †村娘被害者の会 †人気投票:パメラ 
    • †リーザ †少女が居る丘 †少女リーザ †リーザを表に入れる時「妙」と入れちゃう会 †リーザファンクラブ †妖怪リーザ †人気投票:リーザ †ロリコン †幼女被害者を救う会 
    • †カタリナ †カタリナファンクラブ †羊飼い被害者の会 †人気投票:カタリナ 
    • †レジーナ †レジーナファンクラブ †女将 †女将の部屋 †女帝 †人気投票:レジーナ 
    • †オットー †人気投票:オットー †オットーのレパートリー一覧 100〜199 †オットーのレパートリー一覧 200〜299 †オットーのレパートリー一覧 500〜599 †オットーのレパートリー一覧 A100〜A199 †オットーのレパートリー一覧 A200〜A299 †オットーファンクラブ 
    • †ヤコブ †ヤコブファンクラブ †農夫の畑 †農夫の畑_過去の叫び †農夫の畑過去ログ2 †人気投票:ヤコブ 
    • †ニコラス †ニコラスファンクラブ †人気投票:ニコラス
    • †アルビン †アルビンファンクラブ †人気投票:アルビン †ゴムひも 
    • †ディーター †ディーターファンクラブ †ディタ †理系のディーター妄想会 †理想のディーター妄想会 †人気投票:ディーター 
    • †ヴァルター †村長 †村長会議 †人気投票:ヴァルター 
    • †トーマス †トーマスファンクラブ †人気投票:トーマス †マッスル愛好会 
    • †モーリッツ †モーリッツファンクラブ †人気投票:モーリッツ 
    • †ジムゾン †ジムゾンファンクラブ †ジムゾン憩いの場 †人気投票:ジムゾン †神父 †神父のための挙式手順 
    • †ヨアヒム †弱ヒム †ヨアヒムファンクラブ †人気投票:ヨアヒム †青年被害者の会 
    • †ペーター †ペーターファンクラブ †人気投票:ペーター †ショタコン 
    • †フリーデル †フリーデルファンクラブ †人気投票:フリーデル 
    • †エルナ 
    • †クララ 
    • †シモン †シモンファンクラブ 
    • †緑を大事にする会 †緑を大事にする会/戯れの歴史 
  • †能力者 †能力者COのタイミング †能力者と村人と人狼の生存率について †能力者仮決定作戦について †能力者騙り †おすすめログ/能力者 †人狼側 †村人側 †占霊構成の型 †人外教 †人気投票/能力者 †各能力者の基本的な考え方 †最初の発言と能力の関係について †初心者向けの占い師・霊能者講座 
    • †人狼 †人狼CO †人狼は三人黒 †人狼教 †人狼考察 †おすすめログ/人狼 †意図的襲撃ミス †人狼ささやき制限談義 †人狼全ステルス †初心者向けの人狼講座 
    • †狂人 †狂人CO †狂人ステルス †おすすめログ/狂人 †C国誕生と超能力狂人 †初心者向けの狂人講座 
    • †天然狂人 †天然狂人の集い †天然狂人通信プロトコル 1.0 Note 
    • †占い師 †占い師のCO時期 †おすすめログ/占い師 †非占い師宣言 
    • †霊能者 †霊能者のCO時期 †おすすめログ/霊能者 †初日霊能者CO 
    • †狩人 †狩人CO †狩人COについて考察中 †狩人CO推進委員会 †おすすめログ/狩人 †初心者向けの狩人講座 
    • †共有者 †共有者1人CO †共有者2人CO †共有者トラップ †共有者偽共有者騙り †共有者占い師騙り †共有者相方騙り †共有者二人占師騙り †共有者両ステルス †共有者騙り †おすすめログ/共有者 †狂勇者 †初心者向けの共有者講座 
    • †村人 †村人教 †村人騙り †おすすめログ/村人 †初心者向けの村人講座 
    • †ハムスター人間 †おすすめログ/ハムスター人間 †初心者向けのハムスター人間講座 
    • †死者 †墓の下 †墓下向上委員会 
    • †セオリー †定石 †変則的戦術 †安全策 †戦略議論板 †戦略考察 †戦略考察(陣営間交渉) †戦略考察:突然死 †戦略考察(C国版) †戦略考察(E国版) 
    • †ギドラ †スライドCO †最強のCO †定時CO †投票CO 
    • †寡黙吊り †全吊り †中占寡吊 †ローラー反対委員会 †ローラー反対委員会/ネタ考察 †ローラー反対委員会/代案考察 
    • †中庸占い †多占寡吊 †多弁占い †ゾーン占い †相互占い †後追い占い †交互占い †自由占い †統一占い †偽判定 †初日占いを嘆く会 
    • †まとめ役 †まとめ役による占い先の指定 †まとめ役による投票先の指定 †まとめ役立候補制 †非まとめ役制 
  • 人狼 | 人狼BBS | 人狼BBSアンテナ | 人狼BBSジョーク集 | 人狼BBS学習塾 | 人狼BBS関連用語辞書 | 人狼BBS健康法 | 人狼BBS雑談所 | 人狼BBS世論調査 | 人狼BBS譜 | 人狼CO | 人狼IRC | 人狼ささやき制限談義 | 人狼たちはどこにいる? | 人狼は三人黒 | 人狼クローン | 人狼クローン一覧 | 人狼ネタ | 人狼ログコンバーター | 人狼教 | 人狼考察 | 人狼神 | 人狼全ステルス | 人狼創作 | 人狼創作-キャスト談義 | 人狼創作-ゲーム版 | 人狼創作-ハリウッド映画版 | 人狼創作-格闘ゲーム版 | 人狼創作-二次創作 | 人狼創作-漫画版 | 人狼側 | 人狼同人誌
    • 名言 | 名言集ジェネレータ
    • 用語集 | 用語集/あ行 | 用語集/か行 | 用語集/さ行 | 用語集/た行 | 用語集/な行 | 用語集/は行 | 用語集/ま行 | 用語集/や行 | 用語集/ら行 | 用語集/わ行 | 用語集/ヘッダ案 | 用語集/英数字 | 用語集/記号 | 用語集/索引
    • C国多重荒らし検証ページ | C国誕生と超能力狂人
    • E国に鳩を誘致しよう | E国作ろう首無し騎士で
    • 戦略議論板 | 戦略考察 | 戦略考察(陣営間交渉) | 戦略考察:突然死 | 戦略考察(C国版) | 戦略考察(E国版)

コメント

  • イラスト等の画像データが重いのではないでしょうか? アナログ回線ですが非常に重いです。あと各村のコメント欄もチャット化して増加してましたから、それも原因では。 -- 2006-02-08 09:43 (水)
  • ちなみに自分は自サイト(余裕があるので)から直リンクで表示させてます。レンタルサーバーの会社によって規約等違うと思うのですが、ダイエットには効果的かと・・・ -- 通りすがりの人? 2006-02-08 10:46 (水)
  • ん〜、ファイルのアップロード出来ない仕様だし、画像は白い霧には関係ないはずですよ。本文読み込み後に他のサーバーから画像読み込む処理なはず。…まぁ、アナログ回線では画像なんて重くて時間かかるのは当然でしょうけど…。コメントは確かにおもくなる原因かもですね。 -- 2006-02-08 11:57 (水)
  • ↑↑↑重いのは画像ページでしょうか?それとも全てのページでしょうか? ReverseLink 復活の際に JavaScript? を使うようにしたのですが、このファイルが 50KB あります。送るときは10KBまで圧縮していますが、全てのページが重いのでしたら、この影響かもしれません。 -- machu 2006-02-08 12:17 (水)
  • ちなみに、まとめサイトには画像をアップロードできないようにしています。(まとめサイトに張られる画像は、よそへの直リンクです) -- machu 2006-02-08 12:18 (水)
  • 一番の負荷軽減は『掲示板とまとめサイトを分ける』ではないでしょうか? たしかに、人狼BBSとある程度の連携が取れない場合、寂れる可能性大ですが… 村の終了時に結果をテキストに吐き出して、ユーザにUPして貰うのはどうでしょうか? 手間は増えますが、人狼とまとめサイトを同時に動かすよりは軽い気がします。 …出来れば、人狼負荷とまとめサイトの負荷の具合を知りたい所ですね… -- toras 2006-02-08 19:47 (水)
  • まったくプログラム的には根本的解決ではないですがいくつか考えました。【サーバー二個作戦】(欠点・お金がかかる)1:村ページと個人ページを別のサーバに置く 2:個人ページをABC(等)順でバッサリ二等分して別のサーバにする 【良く使われてるものを別に】(欠点・人の流れが分散する)・懺悔室などの相談系掲示板を別に置く ・各コメントをそれぞれスレッド式掲示板であつかう。村ページへのコメント板、個人へのコメント板等。負荷に問題がなければそれらを各ページにインクルードする。 -- 2006-02-08 23:18 (水)
  • よく使われている掲示板系のページを、現在「まとめサイト避難所」としている場所に置くのは問題はないと思います。また、村終了時のチャット的書き込みを、各村のコメントなどを、1村1スレッドで立ててもらってそっちで運用するのも問題ないでしょう。 -- ex 2006-02-09 09:11 (木)
  • 他サイトでは直リンが負荷増大の原因の一つと言われてますが、それは大丈夫なのでしょうか? -- 2006-02-09 10:59 (木)
  • その場合の直リンは、サーバーの画像とかをあちこちのサイトから直リンクされてアクセスが増大するケースの事ですね。まとめサイトの場合は他のサイトから引っ張ってくるので、あまり負荷とは関係ないかと… ↑↑↑んーと、人狼BBS本体とこっちのまとめサイトは運営者もサーバーも違いますよ。まとめサイト内の掲示板機能については確かに負荷にはなるかも…。 -- 2006-02-09 12:27 (木)
  • そういう意味でしたか…とんだ勘違いを(汗 これで『なんとなく見解』の意味が分りました(汗  『掲示板=コメント類』という意味ですよね?(念の為聞く 『外部の掲示板をページ内に表示させる仕組み』…パッと思いついたのはインラインフレームですが…それなら別ページにしても問題ないかと。ただ、別ページ(サーバも別)にする場合、更新日は表示して欲しいかもしれません。 とりあえず、名前検索のページが重すぎ…って消えてますね…(汗 なかったらなかったで自分のページに行きづらくなると思いますが(苦笑 -- toras 2006-02-09 15:04 (木)
  • 自分のページに行くときは、検索フォームを使うと便利(というかそれしか方法が無い…)ですよー。ページナビゲーションは見直したほうがよさそうですね。 -- machu 2006-02-09 15:25 (木)
  • 超思いつき。JavaScript? + Cookieベースのパーソナライズメニューを右側に表示する。自分のページとお気に入りのページやコメントを書き込んだページの更新チェックに使う。 -- 2006-02-09 15:32 (木)
  • 外部掲示板になるとReverseLinkの反映しなくなるのは確かに不便ですが、それよりも負荷を少なくする方が重要な感じがします。 -- 2006-02-09 15:36 (木)
  • 右上の検索フォームですか…今の今まで気付きませんでした(ぉ お気に入りに入れる前は[名前順]→[頭文字をクリック]→[自分のページ]…これが結構重かった記憶が…頭文字別にページが分かれていれば…と何度も思いました(汗 -- toras 2006-02-09 17:05 (木)
  • とりあえず、掲示板の外部化は一度保留し、まずは PukiWiki 本体の負荷軽減を試してみます。カウンタを無効にしたら、処理が2〜3割軽くなったような…。 -- machu 2006-02-11 21:40 (土)
  • ページを探す手段が検索フォームしかないのも不便ですので、軽い「ページ一覧」を用意しました。画面上部のナビゲーションから行けます。 -- machu 2006-02-13 (月) 21:49
  • LookupプラグインとInterWikiname?の組み合わせで、名前入れると直接飛べるフォームが作れたと思いますー。 -- ふらぅ 2006-02-14 (火) 02:00
  • 大分便利になったと思います。 …件数表示(処理の読み込み中断)はしないのですか? 検索ワードによってはかなりの負荷になると思うのですが…(例:『C』のみ等) ユーザが注意すればいいのですが、ピンキリだと思うので一応言っておきます。 -- toras 2006-02-14 (火) 11:29
  • ファイルの一覧を取得しているので、負荷はそれほどでもないです。が、2文字以上入力してから検索するように変更しようかと思っています。 -- machu 2006-02-14 (火) 11:52
  • お疲れ様です。この件ももう一段落してしまっている様ですが (^^; 簡単にコメントします。(1)ステータス503を出しているのが誰なのか、何故なのかは明確だったのでしょうか。例えばそれがSquidなら理由としてはconnection failedが怪しいと考えます。Apacheならmod_proxyのようですね。それで、ここ特有の問題として、ピーク時のコネクションの数は膨大なものになると思われますが、そのようなネットワーク上の問題だとしたら、転送量やcpu時間の削減といった対応は503の対策にはならないかと思われます。その辺りはどうだったのでしょうか。 (2) link タグの skin/wolfbbs.print.css をカットして下さい。 (3) $nowikiname が有効になっている気がしますが、このサイトには必要性がありましたっけ? (4) link タグの ?cmd=search をカットして下さい(使われていないので) まだ何か良くない状況が続く様でしたら、続きをやりましょう :) -- henoheno 2006-02-28 (火) 22:26
    • ああ、ちょっと触っていたら Service Temporary Unavailable が見えました。基本的な所から確認をお願いします。問題は何(ネットワークの、例えばコネクション数なのか、転送量なのか、CPU時間なのか)なのか、またどんな時にどのように起こるのか(例えば日単位ではなくて時間ごとの発生率)などです。サーバー側の事情が不明な場合は管理者ないしそれに準じる人に構成やログや原因をお問い合わせ下さい。 -- henoheno 2006-02-28 (火) 22:57
  • ありがとうございます。503を出しているのはホスティング業者(さくらのレンタルサーバ)が設置したApache(の中の負荷制限モジュール)です。問題はCPU時間もしくはメモリ使用量だと思われます。時間が取れたときに、改めて確認したいと思います。 -- machu 2006-03-01 (水) 01:28
  • 幾つかのページは、分けるよりまとめたほうがいいような。例えばまとめサイトをいたわろうまとめサイトのダイエット。そろそろ全ページを見直して重複コンテンツを圧縮するのも、効率最悪ながら有効なのではないでしょうか。…その前にシステムやヘルプのページは別として、まとめサイトってどういうページで構成されているのでしょう…。 -- imo758 2006-03-01 (水) 18:21
  • 確かに基本知識と人狼考察のページでは重複且つ殆ど死んでいるページがありますね。纏めて整理をしたいですけど、どこまでしていいのか迷います。 -- yayuku? 2006-03-01 (水) 18:31
  • お疲れ様です。お蔭様で 2006/06/22 に、PukiWikiの最新版 1.4.7 をリリースする事ができました。ここでも掘り下げられた recent.dat のサイズの問題が解消されています。またAutoLink?をオフにする事で、更新時の処理がページ数に依存しなくなります。今後負荷が問題になる事があれば、1.4.7をお試し下さい。 -- henoheno 2006-07-30 (日) 23:30
  • ご連絡ありがとうございます。お蔭様で503エラーはほとんど出なくなりました(白い霧のページに発生頻度を集計しています)。 -- machu 2006-08-26 (土) 09:33
  • お疲れ様です。3/12というかなり早い段階で何か決定的な対策をされたようですね :) これはmachuさんのアクションの賜物でしょう。しかし今も変らず凄いペースで更新されている様子。この分だと、近いうちにまた違う(スケールの)問題が出てくるでしょうね (^^; また召喚して下さい。 -- henoheno 2006-09-04 (月) 23:17
  • このページ、業者カキコが止まないので削除したほうが良くないですかね? 今は稼動していないようですし。 -- 2010-09-08 (水) 16:52
  • 凍結しました -- machu 2010-09-11 (土) 23:10