使用django和kubernetes在返回服务器时间错误之前增加等待服务器响应的时间

mspsb9vt  于 12个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(82)

我正在使用Kubernetes和Google Cloud托管我的Web应用程序,并正在寻找一种方法来增加等待服务器响应的时间,然后返回错误Internal server error Sorry, there seems to be an error. Please try again soon.我试图搜索Kubernetes对象,但没有结果,谢谢

nnt7mjpx

nnt7mjpx1#

如果我理解正确的话,你有一个托管在Kubernetes集群上的Django应用程序,该集群在Google Cloud上进行管理。
但仍有一些缺失的部分:

这将是:

+----------------------+
|   Google Cloud       |
|   Load Balancer      |
+----------------------+
           |
           v
+-----------------------+
|   Kubernetes Cluster  |
|   NGINX Ingress       |
|   Controller          |
+-----------------------+
           |
           v
+----------------------------+
|     Django Application     |
|   (served via Gunicorn)    |
+----------------------------+

*谷歌负载均衡:负责在多个服务器之间分配传入的网络流量,以确保不会有单个服务器因过多的流量而不堪重负。它是HTTP/S请求的入口点。
*Kubernetes NGINX Ingress Controller:管理对集群中服务的外部访问,通常是HTTP。它可以提供负载平衡,SSL终止和基于名称的虚拟主机。
*Django应用程序(通过Gunicorn提供):这就是Web应用程序的所在。Gunicorn充当Python Web应用程序的WSGI HTTP服务器,为Django应用程序提供服务以处理传入的HTTP请求。

然后,您可以在每个级别上识别影响超时的设置。

*Django设置:没有直接影响返回错误之前等待服务器响应的时间的设置。您可能希望研究能够以更优雅的方式处理超时的自定义中间件。

请注意,“500 Internal server error“可以源自Django应用程序本身(例如,未处理的异常,错误配置,代码中的错误等),也可以源自基础设施中的其他元素,例如数据库,缓存或Django应用程序所依赖的其他后端服务。
确保Django's logging正确配置为捕获错误和异常(请参阅settings.py)。
使用Cloud Loggingkubectl logs <pod-name> from the Cloud shell检查日志。

*独角兽设置:你可以通过在启动Gunicorn(gunicorn --timeout 120 myproject.wsgi:application)时修改--timeout标志来增加超时设置。这会将超时设置为120秒。
*Kubernetes Ingress设置:如果你使用的是NGINX Ingress控制器,你可以在Ingress对象上设置nginx.ingress.kubernetes.io/proxy-read-timeoutnginx.ingress.kubernetes.io/proxy-send-timeout注解。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/proxy-read-timeout: "120"
    nginx.ingress.kubernetes.io/proxy-send-timeout: "120"
...

*谷歌负载均衡设置

  • 在Google Cloud上,如果您在Kubernetes集群前使用负载均衡器,则可能还需要在负载均衡器上配置超时设置。

但同样,“500内部服务器错误”可能无法通过增加更多时间来“解决”:日志对于了解正在发生的事情至关重要。

相关问题