d3diaryの新着日記ブロックが原因?でOut of memoryになる件
- このフォーラムに新規トピックを投稿できます
- このフォーラムではゲスト投稿が許可されています
投稿ツリー
-
d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (Katsumi Hioki, 2009/11/12 18:57)
-
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (なーお, 2009/11/12 21:19)
-
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (Katsumi Hioki, 2009/11/13 0:41)
-
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (なーお, 2009/11/13 5:29)
-
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (katsumi Hioki, 2009/11/13 10:46)
-
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (katsumi Hioki, 2009/11/13 10:54)
-
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (なーお, 2009/11/13 22:02)
-
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (katsumi Hioki, 2009/11/16 17:35)
-
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (なーお, 2009/11/16 23:23)
-
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件 (Katsumi Hioki, 2009/11/17 21:59)
はじめまして。日置と申します。d3diaryでお世話になっています。
申し訳ありませんがPHPやプログラミングに関して全くの素人なので助けてくださいませんか?
当方トップページに「新着日記ブロック」を表示させているのですが、このブロックが原因で
Out of memoryが多発するようです。メモリ不足を疑いサーバー会社にも問い合わせましたが
原因ではないようです。
環境としましてはmysql5.1でお名前.comの共有サーバーGSを使っています。
xoopsは2.1.7です。
http://www.e-kaiwa.net/
minidiaryからの移行でd3diaryを使用しています。
今のところブロックをはずすと正常に動きます。
現在、b_diarylist.phpの
$openarea =array_fill(1,10000,0); $is_friend =array_fill(1,10000,0); $is_friend2 =array_fill(1,10000,0);
$usrcnt =array_fill(1,10000,0);
を理由はわからず削除しています。(エラーぽいので)
ネットでいろいろ調べましたがわからないので開発者さまの助けを仰ぎました。
よろしくお願いします。

日置さん、こんにちは。
d3diaryのご使用ありがとうございます。
当方トップページに「新着日記ブロック」を表示させているのですが、このブロックが原因で
Out of memoryが多発するようです。メモリ不足を疑いサーバー会社にも問い合わせましたが
原因ではないようです。
実際にそのサーバーに設定されているメモリリミットは、何MBなのでしょうか?
XCLは元々メモリの大食らいです。 サーバー会社からは、「通常では問題ない」という答えが返ってきても、64Mbか128Mb以上ないと実用にならない場合もあります。
また、ご存知のようにTOPページは最もメモリを消費しますし、 速度の問題もあります。 ここでd3diaryに関して言えば、minidiary時代からの友人権限チェックに加えて、カテゴリ毎の設定など多くの機能追加を行っているため、どちらかというと速度のほうを重視したコーディングになっているのも事実です。
また、ご指摘のarray_fill関数の部分は、noticeエラー回避のために仕方なく入れていますが、ベストな方法ではないのも承知しており、今後の改善ネタとさせていただきます。 (ただ、この部分の消費メモリは100Kb程度です。)
また、サイト内をアクセスさせていただきましたところ、TOPページ以外でも、XSNSモジュールにおいて同様に真っ白になるページが存在していますので、 やはりメモリ不足ではないかと推測されます。まずは確保メモリを増やすことをお考えください。 mainfile.php での設定や、.htaccessやphp.iniが使えるのであれば可能かと思います。
別の原因として、protectorモジュールの「DoS監視」に引っかかっている場合があります。 画像1枚を1アクセスと判定されるためです。 この場合は、protectorの「DoS監視の対象から外すモジュール」にd3diaryのディレクトリを指定することで回避できる場合があります。
以上、よろしくお願いします。
お返事ありがとうございます。
ご指摘のメモリですがphpinfo機能にて調べたら
128MB確保されていました。
あと、protectorは未導入です。
他に何か原因は考えられますでしょうか?

日置さん、こんにちは。
128MBあるんですか。 それでもだめなら
もっと大きくしてみるしか無いのでは?
あとは、TOPページで重い処理をしている他の処理(メインメニューなど)を見直してみるとか、、
いずれにしても、それだけのメモリがあるのでしたら、d3diaryのブロックだけの原因ではないと思いますよ。
あと、protectorは未導入とのこと。 導入をお勧めします。
追記
メンバー数が多いようですね、何名くらいでしょう? もしかすると、権限チェックのところでメモリを消費している可能性もありそうです。友人機能は使ってますか?
Re: d3diaryの新着日記ブロックが原因?でOut of memoryになる件
msg# 1.3.1
なーおさん、
トップページのエラー内容です。
Fatal error: Out of memory (allocated 9699328) (tried to allocate 35 bytes) in /---/xoops_trust_path/modules/d3diary/blocks/b_diarylist.php on line 57
XSNSのマイページでは
Fatal error: Out of memory (allocated 9699328) (tried to allocate 77824 bytes) in /---/xoops_trust_path/modules/xsns/language/japanese/modinfo.php on line 92
参考になりますでしょうか。

日置さん
XSNSの友人機能、ユーザー数2800名なのですね。 なるほど、それは匂いますな。
エラーの内容も確認しました。
b_diarylist.phpの57行目は、例のarray_fillの部分ですね。 ただ、このあたりはまだ何のループ処理もされておらず、友人判定処理すら行っていません。
ブロックがブロック番号の順で読まれるのか、モジュール番号の順で読まれるのかは存じないのですが、 いずれにしてもおそらく、このブロックが呼び出される時点で既にメモリリミット一杯に近い状態で、呼ばれたところで自分の処理さえあまりできていない時点でオーバーしたと考えられます。
XSNSの友人機能がどのような形で実装されているのかは存じませんが、試しにXSNSの New topic ブロックを非表示とし、d3diaryの Diary List ブロックを表示してみてください。 それでも引っかかりますか?
また、mainfile.phpで
define("XCL_MEMORY_LIMIT", "256M"); // extra param
は試してみましたか? ホダ塾ディストリでないと効かないかも。。
追記:
prtectorのDoS攻撃判定の閾値が低すぎるように思います。 あちこちで真っ白に。。
お返事遅くなりました。
mainfile.phpは試してみましたが、その前にレンタルサーバーからこのような回答がありました。
「該当のエラーに関しましてはPHPを動作させた際に、サーバーのメモリー使用上限に
達してしまったため、発生しているエラーでございます。
また、メモリにつきましては1プロセスあたりご利用可能な容量に上限がございます
。PHP自体の動作にもメモリーを消費するため、ご利用ユーザー様にて
上限まで全てご利用いただくことは出来ません。」
ということなのでメモリを上げることはできないようです。
xoopsは前から使っているのですが、今の症状が出だしたのはモジュールがD3化しだしてからの
気がします。今、とりあえず応急処置としてd3diary→minidiaryに戻しています。
ただ、それでもout of memoryは解消されていないので原因はxoops2.1にあるんでしょうね。
なーおさんにはお手数おかけして申し訳ありませんでした。
d3diaryは必須モジュールですので復帰できるようにいろいろ試してみます。

なーおさん、こんばんは。
あれからいろいろ試していますが、不安定さは変わりません。
今度、時間のあるときに全部入れ直そうかと思っています。
ところで、話は変わりますが豊田スタジアムの屋根の制御をされたんですね。
すごいことです。
私は毎日スタジアムの横を通って出勤しています。