kenken0807_DBメモ

つば九郎が好きなDBAです。Oracle Standard Editionでの運用やツールとかとかの備忘録。特に記載がない場合はoracle11gR2です。時々MySQL

Oracle常駐接続プーリング(DRCP)を導入して苦労したメモ(3)

4.DRCPの監視と調整方法

まず、DRCPおいて監視すべき項目を洗い出す。

・ listenerへの確立回数と拒否回数
・ 現在のプールサーバ数と使用されているプールサーバ数
・ DRCPへのリクエスト回数とウェイト回数

これらの項目をグラフ化すれば、DRCPはオンラインで設定変更可能なので、いろいろ調整できる。

監視はさまざまな方法あるが、うちの場合はMuninを使用して監視を行っている。
Muninのインストール方法は↓を参考させていただきました。

success.tracpath.com

先ほど洗い出した項目のMunin-pluginが以下。

github.com

このMunin-pluginを使用して、グラフ化してどのように調整するかのメモ。

・ listenerへの確立回数と拒否回数

f:id:kenken0807:20150805112439p:plainf:id:kenken0807:20150805112621p:plain listenerへの確立回数と拒否回数の秒間平均値のグラフ。
確立回数が非常に多かったり、拒否回数が1以上の場合は、↓で説明したNUM_CBROKの数を調整する。

Oracle常駐接続プーリング(DRCP)を導入して苦労したメモ(2) - Oracle Standard Editionでどこまでやれるか

・ 現在のプールサーバ数(NUM_OPEN_SERVERS)と使用されているプールサーバ数(NUM_BUSY_SERVERS)

f:id:kenken0807:20150805112703p:plain V$CPOOL_STATSビューのNUM_OPEN_SERVERSNUM_BUSY_SERVERSの値のグラフ。
NUM_OPEN_SERVERSNUM_BUSY_SERVERSよりも遥かに多い場合は、 クローズされていないプールサーバ数が多く存在しているので、
INACTIVITY_TIMEOUTの値を小さくしたり、MAX_THINK_TIMEをの値を小さくすることで対応できる。

・ DRCPへのリクエスト回数(NUM_REQUESTS)とウェイト回数(NUM_WAITS)

f:id:kenken0807:20150805112721p:plain V$CPOOL_STATSビューのNUM_REQUESTSNUM_WAITSの秒間平均値のグラフ。
NUM_WAITS1以上の場合は、プールサーバ数が足りていないので
MINSIZEの値を大きくしたり、INCRSIZEの値を大きくしたりすると良い。

設定変更時の注意点

基本的にはDBMS_CONNECTION_POOL.CONFIGURE_POOLで変更できるが、
NUM_CBROKDBMS_CONNECTION_POOL.ALTER_PARAMで変更する。

DBMS_CONNECTION_POOL.CONFIGURE_POOLを使用する場合、
指定した項目以外がデフォルト値に戻ってしまうためすべて記述してあげる必要がある。

MINSIZE               : 4
INCRSIZE              : 10
execute dbms_connection_pool.configure_pool(null,minsize=>100);
MINSIZE               : 100
INCRSIZE              : 2
すでにINCRSIZEを10としていた場合、INCRSIZEはデフォルトの2に戻ってしまう。
execute dbms_connection_pool.configure_pool(null,minsize=>100,INCRSIZE=>10);
このように更新してあげる必要がある。

まだ導入して間もないので、間違いもあると思うのでいろいろとブログ内容を変更するかもしれない。。