nicovidaemonの軽量化をした結果

post_title_translateクラスをsingleton化した。
singleton化する前と後のnicovidaemonの1プロセスあたりのDB接続数とメモリ使用量は以下の通り。

singleton化する前
DB接続数 99
メモリ使用量 234620KB

singleton化した後
DB接続数 51
メモリ使用量 52348KB

post_title_translateクラスは、1プロセスあたり17個のインスタンスが生成されていた。
purveyorBaseで2個(そのうち1個はtaxonomyControlが保持する)。
nicovidaemon本体で1個。
nicovidaemonはpurveyorBase8個作成するので、2*8+1=17となる。

このことから、インスタンス1個あたりのDB接続数は3個だということが分かった。
post_title_translateクラスの内部でnico_term,nico_correspond,nico_reserved_keywordテーブルのDB_Tableを生成するので、この3つのコネクションと思われる。
edbも生成しているがコネクションは増えてない様子。
調べてみたところ、edb_class.phpに書いてあった。

// 同じ DSN で接続した既存のインスタンスを取得します。
// 存在しない場合は MDB2::factory() で新しいインスタンスを作成します。
$this->mdb2 = MDB2::connect($dsn, $options);
if(PEAR::isError($this->mdb2)){
throw eexp::gi($this->mdb2->getDebugInfo());
}

コメントを残す