Oraの画像がでかい…笑
事象
仕事で相談を受けた。
「Webサイトへの同時アクセス数が大量にあるとき、Webページが閲覧しにくい状態となり、調べてみるとOracleへのセッション数が大量に溜まっていた。」
これを解消したい。
原因
調べてみると、phpの公式サイトにそれらしき説明があった。
phpでOracleに接続する際に利用するoci8において使用できる関数が3つ用意されてる。
上記3つは、上から順に、接続の寿命が短い。
今回の事象を調べてみると、一番下のoci_pconnect()を 利用していた。
oci_pconnect()は、キャッシュの量(oci8.max_persistent)や接続持続時間の秒数(oci8.persistent_timeout)でキャッシュの寿命を指定できる。
それぞれphp.iniで設定でき、値を「-1」とした場合には、無制限となる。
デフォルト値が何か公式サイトに見当たらなかったが、php7.4でphp.iniで設定せずにphpinfoを確認してみると「-1」(無制限)になっていた。
以下の順番でためすことにした。
- oci8.persistent_time の値をチューニング(これが設定も評価も簡単そう。)
- oci8.max_persistent の値をチューニング
- oci8_pconnect()をoci8_connect()に変える
コメント