mod_dbd の設定について

mod_dbd についてちょっとハマったこと。KeepやMax,Minといった設定は「プロセス毎」のものであるということ。


/usr/local/apache2/conf/httpd.conf に以下のように設定した場合、

LoadModule dbd_test_module /usr/lib/apache2/modules/mod_dbd_test.so
<location /dbd_test>
SetHandler dbd_test
</Location>

DBDriver mysql
DBDParams host=localhost,user=root,pass=mysql,dbname=test,sock=/tmp/mysql.sock
DBDPersist ON
DBDKeep 100
DBDMax 200
DBDMin 10
DBDExptime 600


KeepやMax,Minは「プロセス毎」に保持する数となる。(まあドキュメントにも書いてあるんだけど・・・)


apache の設定で、初期プロセス数2、最大プロセス数10としていた場合、上記の設定だと初期で20コネクションプールが保持され、最大で2000コネクションプールが保持される、ということになる。


2000とかなってくると limit の設定してあげないとファイルディスクリプタが足りないと大抵の環境では言われると思うので、注意が必要だ。