Pivotal Knowledge Base

フォローする

アイドル接続の自動切断(gp_vmem_idle_resource_timeout)

目的

アイドル接続を自動的に切断するにはどのようにしたら良いのか?

解決策

Greenplum においては、"gp_vmem_idle_resource_timeout" というパラメーターの設定することにより達成可能で、当該パラメーターの役割としては、指定した時間が経過した全てのアイドル接続を自動的に切断するというものである。

デフォルトではこの値は 18 秒である。すなわち、セッションがアイドル状態になってから 18 秒後に当該セッションを切断するということである。

flightdata=# show gp_vmem_idle_resource_timeout ;
 gp_vmem_idle_resource_timeout
-------------------------------
 18s
(1 row)

注意: このパラメーターは(実質、ほとんどの処理が行われ、多くのメモリが消費されている)セグメント上で確立されたセッションに対してのみ有効で、マスター上のアイドル接続の自動切断は行わない。

実例

-- この例でのクラスターのセッション情報は以下であるものとする。

flightdata=# select procpid,sess_id  from pg_stat_activity ;
 procpid | sess_id
---------+---------
    1863 |      24
(1 row)

-- トランザクションの開始・終了を実施。

flightdata=# begin;
BEGIN
flightdata=# rollback;
ROLLBACK

トランザクションが終了すると、使用されたセッションがアイドル状態へ移行する。

-- gpssh を介して、全てのホストにおける接続状態を確認し、18 秒後に当該セッションに対して何も出力されなくなることが分かる。

[gpadmin@mdw2 faisal]$ while true; do gpssh -f hostfile "ps -ef | grep postgres|grep con24"; done
[...]
[...]
[sdw3] gpadmin   2320 23546  0 03:32 ?        00:00:00 postgres: port 42702, gpadmin flightdata 172.28.8.250(33959) con24 seg1 idle
[sdw5] gpadmin  19834  1829  0 03:32 ?        00:00:00 postgres: port 42701, gpadmin flightdata 172.28.8.250(43642) con24 seg2 idle
[...]
[...]
[sdw5] gpadmin  19836  1828  0 03:32 ?        00:00:00 postgres: port 42702, gpadmin flightdata 172.28.8.250(33526) con24 seg3 idle
[sdw3] gpadmin   2318 23548  0 03:32 ?        00:00:00 postgres: port 42701, gpadmin flightdata 172.28.8.250(63256) con24 seg0 idle
[sdw5]
[sdw3]
[sdw5]
[sdw3]

-- しかし、マスターセグメントにおいては当該セッションはオープンされたままである。理由は、当該セッションに対して、新規にいくつかのクエリーが実行されることが想定されるからである。この状態でマスターが新たにクエリーを受け付けた場合は、セグメントに対して新たにセッションを作り直す。

-- マスターにおけるセッションは、ユーザーがデータベースから exit した際に切断される。

コメント

Powered by Zendesk