1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RDS for Postgresql での ERROR: canceling statement due to statement timeout の対処法

Last updated at Posted at 2020-10-15

embulk-input-postgresql を用いたデータ吸い出しを行うときに ERROR: canceling statement due to statement timeout というエラーが発生することがあります。

org.embulk.exec.PartialExecutionException: java.lang.RuntimeException: org.postgresql.util.PSQLException: ERROR: canceling statement due to statement timeout
	at org.embulk.exec.BulkLoader$LoaderState.buildPartialExecuteException(BulkLoader.java:340)

psqlにて再現してみましょう。embulk経由と同様に、1分経ったところでクエリが中断されました。
何らかのサーバ側のタイムアウト処理で止められています。

> psql
psql (10.14 (Ubuntu 10.14-0ubuntu0.18.04.1), server 11.1)
WARNING: psql major version 10, server major version 11.
         Some psql features might not work.
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.

test_server=> SELECT
test_server->   ...snip... 
test_server-> FROM
test_server->   foo_bar
test_server-> WHERE
test_server->   ...何か重たいクエリ...
ERROR:  canceling statement due to statement timeout

statement_timeout の値を見てみましょう。やはり、1分でした。15分に今回は伸ばしてみます。
マイクロ秒で指定すると読みづらいので、文字列で指定すると楽です。

test_server=> SHOW statement_timeout;
 statement_timeout
-------------------
 1min
(1 row)

test_server=> SET statement_timeout to '15min';
SET

test_server=> SHOW statement_timeout;
 statement_timeout
-------------------
 15min
(1 row)

この設定はembulkには次のように記述します。
before_selectを使うことで、SELECT句と同じトランザクションで実行されます。

in:
  type: postgresql
  host: {{ env.DB_HOST }}
  user: {{ env.DB_USER }}
  password: {{ env.DB_PASSWORD }}
  ssl: true
  database: {{ env.DB_DATABASE }}
  default_timezone: UTC
  query: |
    SELECT
      ...
  before_select: SET statement_timeout to '15min';

私の場合はリードレプリカにてこの現象を見ました。
何かお役に立てると幸いです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?