h.tom
t.mai****@gmail*****
2014年 3月 18日 (火) 00:48:38 JST
はじめまして、平山知宏と申します。
表題の件、どなたか情報ありましたらと思い初めてポストさせていただきます。
現在CIのver2.1.4+smartyでWebサービスを運営していますが、
アクセスの増加に伴い改めてphp上でmemory_get_usage()を随所で確認してみました。
すると、1つのページあたりに多くて9MB、少なくても7MBもメモリを使用していると分りました。
(同様のページ内容を表示するために作成してた旧バージョンのオレオレフレームワークだと3.2MB程度だったのですが、、、)
最初はメモリリークかと思いましたが、自作部分に大きなリークが見当たらないためcoreについても調査してみました。
その結果、
まっさらな状態(何もextendせず、ダウンロードしたCIでwelcome.phpを表示)した時ですら、
1.9MB程度の消費、
さらに、コントローラーから$this->load->model("hoge","",TRUE)で+1.2MB程度、
(smartyやsimple assetsなどをロードするとさらに+2MB)となり、
あまり無茶をさせてない状態ですら4MB〜5MB程度利用するような状況にあります。
(よくよく調査したらDB_active_rec.phpのrequireで大分メモリを食っているようです、、、)
もちろん、
$this->output->enable_profiler(FALSE);
で、
system/database/DB_driver.php
において
$save_queries=FALSE;
としてデバッグ用クエリキャッシュなども解除しています。
Macでapache2をサーバとして、
memcache.so程度しか外部モジュールは使っていません。
その証拠に、CIとは全く関係のないphpファイルにてecho 'hello';するだけのコードでは
600KB程度でした。
何かCIが特別にロードするサーバサイドモジュールなどがあるのでしょうか・・・・?
それともこの程度のmemory usageは一般的なのでしょうか?
何か情報ある方ございましたら、ご指摘いただけると助かります。
突然でごちゃごちゃした内容となりまして恐縮ですが、
何卒よろしくお願いいたします。
--
----------------------------------
Tomohiro Hirayama
平山 知宏
t.mai****@gmail*****
-----------------------------------