Kubernetes Ingress + Uwsgi の構成でスローレスポンスをタイムアウトさせないために確認する項目

投稿者: ytyng 1年, 8ヶ月 前

Kubernetes で、 Nginx Ingress Controller を使っていて、Pod 内のアプリケーションサーバーに Uwsgi を使っているケースで、レスポンスの遅いサービスがある場合に、タイムアウトさせないために設定を確認するポイントです。

これらの設定を伸ばしておかないと、 502 エラー もしくは 504 エラーとなります。

1. Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-app
namespace: my-namespace
annotations:
nginx.ingress.kubernetes.io/proxy-connect-timeout: '900'
nginx.ingress.kubernetes.io/proxy-send-timeout: '900'
nginx.ingress.kubernetes.io/proxy-read-timeout: '900'

2. uwsgi.ini

[uwsgi]
...
socket-timeout = 600
http-timeout = 600
harakiri = 600

計測用のビュー

import time
from django import http
from django.views import View


class DevSleepView(View):
"""
ロングスリープするビュー。タイムアウトの確認用
/dev/sleep/?seconds=60
"""

def get(self, request, *args, **kwargs):
sleep_time = int(request.GET.get('seconds', 30))
start = timezone.now()
time.sleep(sleep_time)
end = timezone.now()
return http.HttpResponse('{} - {}, Slept {}seconds.'.format(
start.strftime('%Y-%m-%d %H:%M:%S'),
end.strftime('%H:%M:%S'),
sleep_time))
現在未評価

コメント

アーカイブ

2024
2023
2022
2021
2020
2019
2018
2017
2016
2015
2014
2013
2012
2011