アクセス数が結構あるウェブサーバをFreeBSD 6.4 + apache 1.3で運用しているのですが、稀にdmesgで以下のエラーが表示されているようになりました。
collecting pv entries -- suggest increasing PMAP_SHPGPERPROC
メッセージをそのまま鵜呑みにすれば、PMAP_SHPGPERPROCを増やさないといけなさそうです。
「PMAP_SHPGPERPROC」については、「/usr/src/sys/i386/conf/NOTES」の中に下記の通り注意書きがあり、なんか単純に増やしただけでは別の問題を引き起こしてしまいそうです。
# Set the number of PV entries per process. Increasing this can # stop panics related to heavy use of shared memory. However, that can # (combined with large amounts of physical memory) cause panics at # boot time due the kernel running out of VM space. # # If you're tweaking this, you might also want to increase the sysctls # "vm.v_free_min", "vm.v_free_reserved", and "vm.v_free_target". # # The value below is the one more than the default. options PMAP_SHPGPERPROC=201
このページでは、この「collecting pv entries -- suggest increasing PMAP_SHPGPERPROC」のメッセージに対する対処について説明します。
困った時のgoogle検索、ということで、上記エラーメッセージで検索すると、非常に参考になる以下のページが引っかかりました。
collecting pv entries -- suggest increasing PMAP_SHPGPERPROC
このページをかなり大胆に要約すると、
� �PVエントリを大量に消費するのは子プロセスを作りまくるapacheのみである
�◆�apacheの設定で、KeepAliveTimeOutを短くするか、KeepAlive自体を行わないようにすることにより、PVエントリの利用数を低く抑えることが可能
�� それでも上記メッセージが表示され続けるならば、PMAP_SHPGPERPROCを正しく設定すべし
とのこと。
確かに、apacheでKeepAliveを利用していると、KeepAliveタイマが満了するまで、親プロセスによって生成された子プロセスは生き続けるわけで、KeepAliveTimeOutを短くすることによって、結果としてPVエントリを減らすことができそうです。
KeepAliveTimeOutについては、デフォルトの「httpd.conf」では15(秒)となっていたので、これを10秒程度に変更します。
KeepAliveTimeout 10
上記内容を反映後、しばらく様子を見ていますが、今のところ上記のメッセージに再び出くわすことはなくなりました。
KeepAliveTimeOutとアクセス数の考察については、以下のページが参考になりましたので、ご紹介させていただきます。
アカラボ: apacheのKeepAliveTimeoutを変更してパフォーマンスが劇的にアップ
・頂いたメッセージは管理者のチェックの後、公開されます。
・メッセージの公開を希望されない場合には、「このメッセージを非公開にする」にチェックを入れてください。
・管理者が不適切と判断したメッセージは公開しませんので、予めご了承ください。
| まだ評価がありません |
表示できるメッセージはありません。