質問 > 管理機能 > 受注管理 》 受注登録で「Out of memory」が発生しています。 |
管理機能
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
kaendaiko |
投稿日時: 2017/5/16 7:54
対応状況: −−−
|
半人前 登録日: 2017/5/11 居住地: 投稿: 20 |
Re: 受注管理 》 受注登録で「Out of memory」が発生しています。 Coinpad さん
64bit化メンテ以前は、PHPのmemory_limitは128MBに設定されていましたか?私どもはmemory_limitは未指定でしたので、たぶんデフォルトのMasterValueの128MBだったのだろうと思います。上記の簡単なプログラムで確認したところ、メンテ後は最大110MB程度のメモリ上限になっていました(110MBでOut of memory)。ということは、私どものEC-CUBEもメモリ使用のピークは110~128MBで、ほぼギリギリで正常動作していたのかもしれません。ただ、私どもはまだ本番稼働しておりませんので、これまでは128MBでも動作していたのかもしれませんが、本番稼働後は128MBだと厳しいのかもしれませんね。スモールスタートなため、処理件数を気にしていませんでしたが・・情報ありがとうございます。 今回のGMOさんへの調査協力時、試しにmemory_limitを128MBにして、上記の簡単なプログラムで確認すると、確かに128MBでOut of memoryエラーになりますし、256MB等にすると160MBでエラーになります。ということは、GMOさんは、160MBまでPHPプロセスに対するメモリ上限を一時的に上げたものと思われます(160MBまでならmemory_limitの設定も有効)。160MBであれば、私どもは当面は大丈夫そうですが、Coinpadさんの状況ではいかがでしょうか。もし必要あれば、上記の簡単なプログラムを使ってみて、PHPの設定ではなくサーバの設定による実際のメモリ上限をご確認ください。 もしメモリ上限がCoinpadさんの状況で不足するような設定しか許されない場合は、送り状番号登録は使っておりませんので詳しくはわからないので、思い付きレベルで申し訳ございませんが・・・件数の問題であれば、 ・一回でのCSVダウンロード件数を条件を絞って減らし、複数回ダウンロードする運用にする ・決済モジュールで特に2000件等のループ処理をする辺りでメモリ消費が多いコードやメモリ強制解放できるようコードを見直す(上記プログラムにもあるmemory_get_usage() を使うとその時点のメモリ使用量がわかります) ・一回のPHPプロセスでCSVを全件出力処理しないで、複数回のPHPプロセスでCSVを段階出力処理するようカスタマイズする(複雑な処理になりそうですが・・) などの、業務運用かカスタマイズをすることで、対応できるのかもしれません。本当に思い付きレベルで申し訳ございません。 [追伸] よいですね、東京での機会がございましたら、メールいたします。 |
フラット表示 | 前のトピック | 次のトピック |