質問 > 管理機能 > 顧客CSVアップロード完了後、Apache HTTP Server.のメモリが増えたままになってしまいます。 |
管理機能
スレッド表示 | 古いものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
mommy |
投稿日時: 2018/2/2 17:42
対応状況: 開発中
|
新米 登録日: 2017/9/4 居住地: 埼玉県 投稿: 8 |
Re: 顧客CSVアップロード完了後、Apache HTTP Server.のメモリが増えたままになってしまいます。 この度は、ご対応いただきありがとうございます。また、ご返信が遅くなりまして申し訳ございませんでした。
ご教授いただいた、gc_collect_cycles()を、CSVのアップロード処理を行っている、CustomerImportController.phpの中のrenderの前に組み込んでみましたが、メモリの増加に関する状況としては、変化がありませんでした。 また、C:\xampp\apache\conf\extra\httpd-mpm.conf 内のMaxConnectionperChildの数値が0でしたので、1と変更したところ、2回目のアップロード時に下記エラー(※1)が発生してしまい、メモリの状況も変化が特に見られませんでした。 ※1のエラー内容開始>>> [Fri Feb 02 16:28:12.470522 2018] [mpm_winnt:notice] [pid 220:tid 212] AH00362: Child: Waiting 0 more seconds for 1 worker threads to finish. [Fri Feb 02 16:28:12.571569 2018] [mpm_winnt:notice] [pid 220:tid 212] AH00363: Child: Terminating 1 threads that failed to exit. [Fri Feb 02 16:28:12.571569 2018] [mpm_winnt:notice] [pid 220:tid 212] AH00364: Child: All worker threads have exited. <<<※1のエラー内容記述終了 ■メモリの上がり方を確認するためテストを行いました。 メモリが増えていく過程が少しヒントになるかもしれないので、簡単なテスト結果を記載させていただきます。 顧客データ1500件を3回アップロードして、メモリの上がり方を確認したテスト結果 1回目アップロード:開始時点でのApacheHTTPServerのメモリ使用量=185MB(アップロード開始後すぐメモリが上がり始めます) ↓ アップロード完了直前のApacheHTTPServerのメモリ使用量=547MB ↓ アップロード完了後のApacheHTTPServerのメモリ使用量=325MB 2回目アップロード:開始時点でのApacheHTTPServerのメモリ使用量=325MB(1回目のアップロードと違い、アップロード開始後はすぐにメモリが上がらず、しばらく325MBのまま) ↓ アップロード完了直前のApacheHTTPServerのメモリ使用量=482MB ↓ アップロード完了後のApacheHTTPServerのメモリ使用量=382MB 3回目のアップロード:開始時点でのApacheHTTPServerのメモリ使用量=382MB(アップロード開始後はすぐにメモリが上がらず、しばらく382MBのまま) ↓ アップロード完了直前のApacheHTTPServerのメモリ使用量=482MB ↓ アップロード完了後430MB ■テストによる考察 アップロード時に使用したメモリのうち、一部は解放されているが、結果として、アップロード完了後に メモリが増えてしまう。 2回目、3回目のアップロード時にメモリがすぐに上がらないのは、unset等で空いた部分にデータをいれているからなのでしょうか。 ======= この度は、せっかくご対応いただいたのにも関わらず解決できず申し訳ありません。引き続きこちらでも調査し、なにか分かり次第、こちらに記載していきたいと思います。 |
nanasess |
投稿日時: 2018/1/30 9:18
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: 顧客CSVアップロード完了後、Apache HTTP Server.のメモリが増えたままになってしまいます。 変数を unset 等しても、 ガーベジコレクションが実行されるまでは、メモリは開放されません。 強制的にガーベジコレクションを実行したい場合は gc_collect_cycles() をコールします。
また、 Apache のメモリリークが気になる場合ですが、 Apache の子プロセスは MaxConnectionsPerChild の数だけ使いまわされます。 MaxConnectionsPerChild の数を 1 とかにしてあげれば、すぐにメモリ開放されるのではないでしょうか。 (本番環境が Linux などの場合は、また状況が変わることも多々ありますで、 XAMPP での検証は参考程度にしておくのをおすすめします) |
mommy |
投稿日時: 2018/1/29 1:27
対応状況: −−−
|
新米 登録日: 2017/9/4 居住地: 埼玉県 投稿: 8 |
顧客CSVアップロード完了後、Apache HTTP Server.のメモリが増えたままになってしまいます。 【開発環境】
EC-CUBE3 version : 3.0.15(新規インストール) OS : windows10 【開発環境xampp version:7.1.9】 PHP version : 7.1.9 mariaDB version : 10.1.26 apache version : 2.4.27 【導入済みの顧客関連のプラグイン】 ・会員項目追加プラグイン https://www.ec-cube.net/products/detail.php?product_id=1356 ・顧客一括アップロード https://www.ec-cube.net/products/detail.php?product_id=1227 【カスタマイズ状況】 顧客一括アップロードプラグインのCustomerImportController.phpにて、会員項目追加プラグインで追加した項目をCSVからアップロードできるようにカスタマイズ済みになります。 【困っていること】 顧客CSVアップロード時に、アップロード完了後、一部のメモリが解放されず、アップロード前よりApache HTTP Server が使用しているメモリが増加してしまう状態です。(←タスクマネージャーより確認しています。) 【実践済みなこと】 対応策として、$this->em->clear();をしています。 また、使用しているオブジェクトはunset()をしています。 加えて、$this->em->getConfiguration()->setSQLLogger(null);も行っております。 管理画面のトップページにアクセスするとApache HTTP Server が使用しているメモリが下がることが確認されています。 【ご教授いただけると嬉しいこと】 Apache HTTP Server のメモリがアップロード後に解放されない原因に心当たりがあれば教えていただきたいです。 |
スレッド表示 | 古いものから | 前のトピック | 次のトピック | トップ |