バージョン選択

フォーラム

メニュー

オンライン状況

58 人のユーザが現在オンラインです。 (45 人のユーザが フォーラム を参照しています。)
登録ユーザ: 1
ゲスト: 57
tattsu もっと...

サイト内検索

質問 > 管理機能 > 顧客CSVアップロード完了後、Apache HTTP Server.のメモリが増えたままになってしまいます。

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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 のメモリがアップロード後に解放されない原因に心当たりがあれば教えていただきたいです。


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/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等で空いた部分にデータをいれているからなのでしょうか。


=======

この度は、せっかくご対応いただいたのにも関わらず解決できず申し訳ありません。引き続きこちらでも調査し、なにか分かり次第、こちらに記載していきたいと思います。



スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,785名です
総投稿数は109,972件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1644
8
red
1570
9
mcontact
1289
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.