LoginSignup
1
1

More than 5 years have passed since last update.

Re:dash API のタイムアウト設定を変更する

Last updated at Posted at 2018-05-10

Re:dash でそこそこ大きいデータを Excel ダウンロードしようとするとエラーが発生することがある。
nginx のエラーログに以下のログが出力されていれば、Re:dash コンソールから叩いている API 側でタイムアウトが発生している。

2018/05/08 03:16:40 [error] 31782#0: *10976469 upstream prematurely closed connection while reading response header from upstream, ...

環境

redash.0.10.1.b1834 (公式 AMI で構築した Ubuntu 環境)

変更手順

Re:dash の API は Python の flask で実装されていて、gunicorn で起動している模様。
なので、gunicorn の timeout オプションを渡してあげれば OK。

/opt/redash/supervisord/supervisord.conf を編集して、タイムアウト値を設定する

ここでは 300 秒で設定。

[program:redash_server]
command=/opt/redash/current/bin/run gunicorn -b 127.0.0.1:5000 --name redash -w 4 --max-requests 1000 --timeout 300 redash.wsgi:app

supervisord を reload する

supervisord.conf を編集したら reload が必要となる。
redash_server の worker が再起動される。

$ sudo supervisorctl reload redash_server

ps コマンドを叩くと、オプションが適用されていることが確認できる。

$ ps aux | grep /usr/local/bin/gunicorn

redash    1437  0.0  0.9 248120 70584 ?        S    May09   0:02 /usr/bin/python /usr/local/bin/gunicorn -b 127.0.0.1:5000 --name redash -w 4 --max-requests 1000 --timeout 300 redash.wsgi:app
redash    2985  0.0  0.9 248232 70680 ?        S    May09   0:00 /usr/bin/python /usr/local/bin/gunicorn -b 127.0.0.1:5000 --name redash -w 4 --max-requests 1000 --timeout 300 redash.wsgi:app
redash    3223  0.0  0.9 248372 70924 ?        S    May09   0:01 /usr/bin/python /usr/local/bin/gunicorn -b 127.0.0.1:5000 --name redash -w 4 --max-requests 1000 --timeout 300 redash.wsgi:app
ubuntu    8441  0.0  0.0  10432   672 pts/0    S+   01:10   0:00 grep --color=auto /usr/local/bin/gunicorn
redash   28836  0.0  0.9 248444 70900 ?        S    May09   0:05 /usr/bin/python /usr/local/bin/gunicorn -b 127.0.0.1:5000 --name redash -w 4 --max-requests 1000 --timeout 300 redash.wsgi:app
redash   32199  0.0  0.1  56780 13876 ?        S    May08   0:16 /usr/bin/python /usr/local/bin/gunicorn -b 127.0.0.1:5000 --name redash -w 4 --max-requests 1000 --timeout 300 redash.wsgi:app

nginx の リバースプロキシのタイムアウト値を設定する

前段に nginx がいるので、こちらのタイムアウト値も設定しておく。
ちなみに設定ファイルは /etc/nginx/sites-available/redash にあった。

proxy_connect_timeout 300s;
proxy_read_timeout 300s;

nginx をリロードして反映させれば OK。

$ service nginx reload
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