Iva*_*van 5 gunicorn amazon-elb kubernetes amazon-eks
我在 Kubernetes 中运行 DjangoRestAPI,并注意到当我在同一部署上使用 Gunicorn 来服务 DjangoRestAPI 时,性能非常差。一个简单的 HttpResponse 平均需要大约 6000 毫秒。如果没有gunicorn,通过 服务python manage.py runserver,同样的请求只需要50ms。
这是我通过运行命令对 djangoRestAPI 和 Gunicorn 进行的部署gunicorn api.wsgi --bind 0.0.0.0:8000
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
app: djangoapi
type: web
name: djangoapi
namespace: "default"
spec:
replicas: 3
template:
metadata:
labels:
app: djangoapi
type: web
spec:
containers:
- name: djangoapi
image: <repo>/app:v0.9a
imagePullPolicy: Always
args:
- gunicorn
- api.wsgi
- --bind
- 0.0.0.0:8000
envFrom:
- configMapRef:
name: djangoapi-config
ports:
- containerPort: 8000
imagePullSecrets:
- name: regcred
restartPolicy: Always
---
apiVersion: v1
kind: Service
metadata:
name: djangoapi-svc
namespace: "default"
labels:
app: djangoapi
spec:
ports:
- port: 8000
protocol: TCP
targetPort: 8000
selector:
app: djangoapi
type: web
type: NodePort
Run Code Online (Sandbox Code Playgroud)
如果我用以下参数替换参数,响应时间立即降至 50 毫秒
- python
- manage.py
- runserver
- 0.0.0.0:8000
Run Code Online (Sandbox Code Playgroud)
以防万一,这是我的入口 yaml 文件:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-ingress
namespace: "default"
labels:
app: api-ingress
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:eu-west-1:<>:certificate/<>
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS": 443}]'
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/healthcheck-interval-seconds: '15'
alb.ingress.kubernetes.io/healthcheck-timeout-seconds: '8'
alb.ingress.kubernetes.io/healthy-threshold-count: '2'
alb.ingress.kubernetes.io/healthcheck-path: '/'
alb.ingress.kubernetes.io/healthcheck-protocol: HTTPS
alb.ingress.kubernetes.io/success-codes: "200"
spec:
rules:
- host: test.mydomain.com
http:
paths:
- path: /*
backend:
serviceName: echoheaders
servicePort: 80
- host: dev.mydomain.com
http:
paths:
- path: /*
backend:
serviceName: djangoapi-svc
servicePort: 8000
Run Code Online (Sandbox Code Playgroud)
我的 alb-ingress-controller 基于https://github.com/kubernetes-sigs/aws-alb-ingress-controller
我想知道我部署 Gunicorn 的方式是否错误,或者是否有其他方法可以解决延迟问题。
| 归档时间: |
|
| 查看次数: |
757 次 |
| 最近记录: |