Kubernetes Ingress + Uwsgi の構成でスローレスポンスをタイムアウトさせないために確認する項目
kubernetes
2022-08-19 10:51 (3 years ago)

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))
評価をお願いします
まだ評価がありません
著者は、アプリケーション開発会社 Cyberneura を運営しています。
開発相談をお待ちしています。
開発相談をお待ちしています。