[pgcluster: 439] ロック取得を含むトランザクションについて

Wataru Oguro oguro @ zenrin-datacom.net
2004年 8月 4日 (水) 12:16:01 JST


oguroです。

三谷様、夜遅くまでお仕事ご苦労様でした。。。
先ほどav11がリリースされたようで、また試させていただきます。

#お疲れのところ申し訳ないのですが・・・・
また一つ発見しましたので、ご報告させていただきます。

・RedHatLinux7.3(クラスタサーバ2台、レプリケーションサーバ1台)
・PGCluster1.0.7av10

上記環境で、2台のクラスタサーバからロック取得を含むトランザクションを大量に発行すると、クエリーがフリーズしてしまいます。

具体的な手順は以下の通りです。


1.DBへ接続(クラスタサーバ1、2)
 psql test

2.データを確認(クラスタサーバ1、2)
 select * from test;

a
-----
111
(1 row)

3.ロックを取得するクエリーを各クラスタサーバで同時に大量に発行(クラス
タサーバ1、2)
begin;
select * from test where a = '111' for update;
commit;

 上記のトランザクションを1セットとしてtt8.sqlに1000セット記述し、

psql -d test -f tt8.sql

として実行します。
 *私の環境では、windowsマシンからteratermで2台のクラスタサーバに接続
し、TeraTermProAssistantにて二つのターミナルに同時にキー入力を行っています。

4.繰り返し実行していると、双方のクエリーがフリーズする

5.ロック情報を調査(クラスタサーバ1、2)

/* クラスタサーバ1の結果 */
relation | database | transaction | pid | mode | granted
----------+----------+-------------+-------+-----------------+---------
| | 10209 | 11186 | ExclusiveLock | t
| | 10199 | 11148 | ExclusiveLock | t
16757 | 52432 | | 11186 | AccessShareLock | t
(3 rows)

-- ps uxw の結果 --
postgres 11148 0.0 0.5 6900 2648 pts/1 S 11:50 0:00 postgres: postgres
test [local] SELECT
postgres 11150 0.0 0.6 7184 3156 pts/1 S 11:50 0:00 postgres: postgres
test 10.40.3.80 idle

/* クラスタサーバ2の結果 */
relation | database | transaction | pid | mode | granted
----------+----------+-------------+-------+-----------------+---------
| | 10365 | 29115 | ExclusiveLock | t
| | 10367 | 29114 | ExclusiveLock | t
83270 | 52432 | | 29115 | AccessShareLock | t
83270 | 52432 | | 29115 | RowShareLock | t
16757 | 52432 | | 29147 | AccessShareLock | t
| | 10371 | 29147 | ExclusiveLock | t
(6 rows)

-- ps uxw の結果 --
postgres 29114 0.0 0.3 7900 3140 pts/2 S 12:47 0:00 postgres: postgres
test [local] BEGIN
postgres 29115 0.0 0.2 7916 2948 pts/2 S 12:47 0:00 postgres: postgres
test 10.40.3.80 idle
in transaction

*クエリーは止まっているのですが、レプリケーションサーバのpgreplicateプ
ロセスが徐々に増えていきます。
 (キューに貯めているということでしょうか。。。。)

6.以降、ロック対象のテーブルに対する更新系クエリーがフリーズする

タイミングの問題のようで、いつも確実に起こるわけではないようです。
お忙しいとところ申し訳ありませんが、ご確認いただけませんでしょうか。
よろしくお願いいたします。




pgcluster メーリングリストの案内