[pgcluster: 897] Re: pgbench で固まってしまいます

Eiichiro ITANI emu @ ceres.dti.ne.jp
2006年 7月 18日 (火) 00:45:36 JST


こんばんは、猪谷です。

Yoshiyuki Asaba <y-asaba @ sraoss.co.jp> writes:

> pgbench で固まらないパッチを作ってみました。一度 ML にパッチを添付して
> 投稿したのですが、承認待ちになってしまいましたので、
>
>  http://www.sra.co.jp/people/y-asaba/pgcluster/deadlock.patch
>
> に置きました。手元の環境では一応問題無く pgbench が動いていましたが、
> ちゃんとコードを読んでいないのとテストしていないので他の場所で問題があ
> るかもしれません。

おおぉ、確かに pgbench で固まらなくなりました。こちらもとりあえず頂い
たパッチを当てて再インストールして pgbench 走らせてみただけなので、他
で問題出るようになったのか試せておりません(^^;)

>> replicator のデッドロックを検出して replicator をリスタートする、などの
>> 方法ってないものでしょうか? トランザンクションはフェイルしますが、デッ
>> ドロックしたままになるよりは良い気がします。
>
> うーむ、難しそうですね。

むむむ、難しいのですか…。
# sem_lock req の所で固まるのだから、そこにタイムアウト追加して、ぐら
# いで何とかならないのかしら、というのは素人考えなのですね m(_ _;)m


ところで、今回作成頂いたパッチで 3クライアント以上同時(-c 50 が通ったの
は確認しました、すごい!)の pgbench が通るようになりましたが、依然として
replicator がデッドロックする場合はあるのでしょうか?

素人目には、これで問題解決、万々歳、なように見えてしまいます (?_?)

先日の浅羽さんのメイルにあった

> このデッドロックが発生する条件は調べた限りでは、
>
>   - トランザクション隔離レベルが read committed
>   - 同じ行に対して 3 クライアント以上がロックを獲得しに行く
>
> です。pgbench で -c 2 の場合は、デッドロックしないのを確認できるかと思
> います。

が、今回のパッチで解消されたわけではないのでしょうか?

一見かなり簡単なパッチに見えるので、三谷さんが苦慮しておられる状況は解
消されていなさそうな感じはするんですが、感じるだけでなんとも。

--
  いたに えいいちろう



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