ページの文字数が多いと、キャッシュ書き込みエラーとなる

  • ページ: BugTrack2
  • 投稿者: Kjm
  • 優先順位: 普通
  • 状態: 完了
  • カテゴリー: 本体バグ
  • 投稿日: 2007-05-22 (火) 11:13:01
  • バージョン: 1.4.7_notb_utf8

メッセージ

  • ページの文字数が多いと(168,404 バイトで確認)ページ書き込み時に、以下のメッセージを表示する。*1
  • 再現データは、次のエディット画面よりコピペ。
  • エラーメッセージ
    Runtime error
    Error message : cannot write cache/E8B2A1E794A3E58F8AE381B3E8AB8BE6B182E6A8A9E381ABE996A2E38199E3828BE5958FE9A18CE381AEE8A7A3E6B1BAE4B8A6E381B3E381ABE7B58CE6B888E58D94E58A9BE381ABE996A2E38199E3828BE697A5E69CACE59BBDE381A8E5A4A7E99F93E6B091E59BBDE381A8E381AEE99693E381AEE58D94E5AE9A7CE697A5E99F93E8AB8BE6B182E6A8A9E4B8A6E381B3E381ABE7B58CE6B888E58D94E58A9BE58D94E5AE9A.ref

再現環境1

  • OS:Windows XP Home SP2
  • Apache:2.2.3(Win32)
  • PHP:5.1.6
  • 1.4.7_notb_utf8

再現環境2

  • OS:FreeBSD 6.1-RELEASE-p14 i386
  • Apache:1.3.37 (Unix)
  • PHP:4.4.6 CGI
  • 1.4.7_notb_utf8

  • 関連? BugTrack/84 -- teanan 2007-05-22 (火) 19:35:16
  • OS:FreeBSD 6.1-RELEASE-p14 i386、Apache:1.3.37 (Unix) 、PHP:4.4.6 CGIでも再現性あり。 再現データは、次のエディット画面よりコピペ。 http://ja.wikipedia.org/w/index.php?title=%E6%85%B0%E5%AE%89%E5%A9%A6&action=edit -- Kjm 2007-05-23 (水) 09:39:10
  • キャッシュファイル名が長すぎる現象が発生し、BugTrack/84 と類似する現象になっていると思われるので、エラーメッセージを正確に修正。 -- Kjm 2007-05-23 (水) 09:41:56
  • Microsoft-IIS 6.0*2 + PHP 5.1.2では再現しませんでした。 -- g@kko 2007-05-23 (水) 12:44:06
  • g@kkoさんへ、euc版だと再現しない可能性が高いように感じます。 euc版、utf8版どちらでしょうか? -- Kjm 2007-05-29 (火) 23:01:05
  • 上の再現環境に、「1.4.7_notb_utf8」と書いてあると思いますけど。 -- 2007-05-29 (火) 23:04:41
  • すいません。正確性を欠いていましたね。手元に上記報告の環境がないので,確認後に報告します。間違いなく1.4.7_notb_utf8でした。ただし、データは再現データを利用していません。*3*4
    また,手元の環境(WindowsXP + Apache 2.2.4 + PHP 5.2.1 + PukiWiki UTF-8版)では,BracketName*5に非常に長い文字列を指定すると再現します。
    上記のError messageのcache/~.refをdecode*6すれば
    財産及び請求権に関する問題の解決並びに経済協力に関する日本国と大韓民国との間の協定|日韓請求権並びに経済協力協定
    となり、再現データ内の
    [[財産及び請求権に関する問題の解決並びに経済協力に関する日本国と大韓民国との間の協定|日韓請求権並びに経済協力協定]]
    が元で、BugTrack/84と同じ現象になっていると思います。
    で,当該のBracketNameを外したところ
    Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1104 bytes) in lib/make_link.php on line 586
    が出ました。orz すいません。時間の都合,本日の報告はここまでで。 -- g@kko 2007-05-30 (水) 07:05:35
  • g@kkoさんのご指摘のとおり、再現環境1&2にて、BracketNameを短くしたところ、再現しなくなりましたので、BugTrack/84 と同様の現象と判明しました。ただし、上記の 『~lib/make_link.php on line 586』現象は再現しないので、Microsoft-IIS 6.0固有の可能性があります。 -- Kjm 2007-05-30 (水) 15:54:01
  • BugTrack/84と同じということで、こちらは「完了」にします。 -- 2007-06-02 (土) 12:00:44
  • 了解しました。BugTrack/84と同じということでお騒がせしました。 g@kkoさんの現象は、必要でしたら新しいBugTrackページに移動していただくのが良さそうです。 -- Kjm 2007-06-06 (水) 21:14:52
    • 私のは特に問題ありません。通常運用環境で出ているエラーではありませんので。。。
      エラー自体は,php.iniで設定したメモリ容量を超えた場合に発生するようです。*7単純にmemory_limitを大きくすれば回避できるみたいですが,根本解決ではないっすね。 -- g@kko 2007-06-07 (木) 06:06:05
    • お疲れ様です。ページ内容の量を減らしても治まるのでしょうか? ページ名の長さとメモリ消費量に、N乗の比例関係があったりしたら興味深いのですが。 -- henoheno 2007-06-07 (木) 21:18:20
      • まず,再現方法を
      1. データはこれをそのまま貼り付け。(上記のとおりキャッシュの書込みエラーが出る)
      2. ページを編集し,
        [[財産及び請求権に関する問題の解決並びに経済協力に関する日本国と大韓民国との間の協定|日韓請求権並びに経済協力協定]]
        __財産及び請求権に関する問題の解決並びに経済協力に関する日本国と大韓民国との間の協定|日韓請求権並びに経済協力協定__
        に修正して保存
        Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 35 bytes) in lib/html.php on line 334
        が発生する。。。って。。。エラーの出ている箇所が違う。。。orz
        lib/html.php on line 334は,preg_replaceですね。
      3. もう一度ページ編集を行い何も変更せずに保存
        Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 1104 bytes) in lib/make_link.php on line 586
        が出ました。-- g@kko 2007-06-08 (金) 05:52:18
    • ページの容量を450行(156,833バイト)まで減らしたら出なくなりました。*8と,いうことで,「ページ内容の量を減らしても治まる」と思われます。「ページ名の長さ」については,当方は「test1」とか「test2」でテストを行っています。「ページ名の長さ」との関係については,現時点で検証できていません。 -- g@kko 2007-06-08 (金) 06:14:29
  • お疲れ様です。CPU時間やメモリを使いすぎた後に、PHPに強制的に実行を止められる場所(行)は普通変動しますから、変動する事自体はあまり気になさらないで下さい。 -- henoheno 2007-06-08 (金) 23:10:28
  • メモリを使いすぎる症状について、(1)ページ名を段階的に短くしても治まるし、 (2)ページ内容を段階的に減らしても治まる のであれば、どちらの要素もメモリ食いである可能性があります。ただし(2)は今までの経験則*9から自明です。(1)があるとしたら興味深いですね。 -- henoheno 2007-06-08 (金) 23:13:28


*1 hogehogeは長い文字列です
*2 2003 server
*3 記事の内容が内容だけに会社のテスト環境では別の168,404 バイトのデータを使用しました。
*4 上記の再現データでも[]を別の文字(_とか)に置き換えるとエラーは出ません。
*5 作成していないページ名
*6 hex2bin
*7 ページサイズが大きかったからでしょうか。。。
*8 500行(168,534バイト)では発生しています。限界点の調査はできていません。
*9 とか、現状のbackupの作りなど

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-06-08 (金) 23:13:10
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.322 sec.

OSDN