質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Q&A

解決済

2回答

9932閲覧

[Moodle 3.5.4]PostgreSQLで「ステートメントのタイムアウトによりステートメントをキャンセルしています」のあとSELECT pg_advisory_lockになる

hs_sc

総合スコア17

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

0グッド

0クリップ

投稿2019/05/16 04:14

編集2019/05/17 08:36

前提・実現したいこと

PHPのWebアプリケーション(Moodle 3.5.4)でコース作成操作等を実行中に、
PostgreSQLで以下のエラーメッセージが発生しました。
エラーは、同じ操作でも発生するときと発生しないときがあります。
pg_advisory_lock(勧告的ロック)でロックしているのは何が原因でしょうか?
または、原因はどのように調査すればよろしいでしょうか?

発生している問題・エラーメッセージ

cat /home/pgsql/data/pg_log/postgresql-Thu.log < 2019-05-16 10:15:34.057 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています < 2019-05-16 10:15:34.057 JST >ステートメント: SELECT pg_advisory_lock(197585) < 2019-05-16 10:16:12.378 JST >LOG: オープン中のトランザクションを持つクライアント接続に想定外のEOFがありました < 2019-05-16 10:39:32.035 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています < 2019-05-16 10:39:32.035 JST >ステートメント: SELECT pg_advisory_lock(198143) < 2019-05-16 10:39:35.112 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています < 2019-05-16 10:39:35.112 JST >ステートメント: SELECT pg_advisory_lock(198184) < 2019-05-16 10:39:35.898 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています < 2019-05-16 10:39:35.898 JST >ステートメント: SELECT pg_advisory_lock(198084) < 2019-05-16 10:39:41.267 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています < 2019-05-16 10:39:41.267 JST >ステートメント: SELECT pg_advisory_lock(198192) < 2019-05-16 10:39:57.360 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています < 2019-05-16 10:39:57.360 JST >ステートメント: SELECT pg_advisory_lock(198026) < 2019-05-16 10:39:57.634 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています < 2019-05-16 10:39:57.634 JST >ステートメント: SELECT pg_advisory_lock(198126) < 2019-05-16 10:39:58.642 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています < 2019-05-16 10:39:58.642 JST >ステートメント: SELECT pg_advisory_lock(198110) < 2019-05-16 10:39:58.644 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています

試したこと

DBのタイムアウトに関する設定は、以下のようにしています。

# show statement_timeout; statement_timeout ------------------- 0 (1 行) # show lock_timeout; lock_timeout -------------- 0 (1 行) # show deadlock_timeout; deadlock_timeout ------------------ 1min (1 行) # show max_connections; max_connections ----------------- 600 (1 行)

※deadlock_timeoutはデフォルトの1sを60sに変更

補足情報(FW/ツールのバージョンなど)

# psql --version psql (PostgreSQL) 9.5.4 # php --version PHP 7.2.14 (cli) (built: Jan 8 2019 14:05:15) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.14, Copyright (c) 1999-2018, by Zend Technologies

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ブラウザで応答待ちの状態で、別タブで同じMoodleを開いた際などに、
以下の表示と同時にエラーが出力されていました。

■ブラウザの表示
セッションロックを待っている間にタイムアウトしました。
あなたの現在のリクエスト終了を待って、後ほど再度お試しください。

■ログ
< 2019-05-16 10:15:34.057 JST >ERROR: ステートメントのタイムアウトによりステートメントをキャンセルしています
< 2019-05-16 10:15:34.057 JST >ステートメント: SELECT pg_advisory_lock(197585)

セッションハンドリングの設定を変えると、エラーメッセージは抑止できますが、
状況は改善できませんでした。

セッションハンドリングの設定をデータベースを使用するのチェックをはずしファイルを使用したところ、
同じ操作をした場合にブラウザ表示はされなくなり、ログも出なくなりましたが、
いつまでも応答待ちの状態でした。

結局、ブラウザで応答待ちが続いてしまう原因を調査し、
Moodle3.5.4のバグRegrade can get stuck in infinite loopが原因であったため、そちらを修正し、
セッションハンドリングはもとのデータベースを使用するに戻しました。

投稿2019/05/17 08:37

hs_sc

総合スコア17

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

セッションのストア先をデータベースからファイルシステムに変えたら解決したという報告が見つかりました。
https://tracker.moodle.org/browse/MDL-35341?focusedCommentId=377495&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-377495

Moodleの実装に問題がありそうな印象ですが、じゃあどうしたらいいのかと考えると難しいですね。ダメモトで追加のバグ報告をするか、自力でハックするか、どちらかしかなさそうな気がします。

投稿2019/05/16 04:31

iwamot

総合スコア1154

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hs_sc

2019/05/16 04:58

ご回答ありがとうございます。 ご案内の報告と同様、セッションにはデータベースを使用しています。 そのままでの解決は難しそうなので、 ファイルシステムに変更する方向で検討したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問