Eu tenho dois ambientes de servidor executando o mesmo aplicativo. O primeiro, que pretendo abandonar, é um ambiente padrão do Google App Engine que tem muitas limitações. O segundo é um cluster do Google Kubernetes executando meu aplicativo Python com o Gunicorn.
No primeiro servidor, posso enviar várias solicitações ao aplicativo e ele responderá muitas delas simultaneamente. Eu corri dois lotes de solicitações simultâneas contra o aplicativo em ambos os ambientes. No Google App Engine, o primeiro lote e o segundo foram respondidos simultaneamente e o primeiro não bloqueou o segundo.
No Kubernetes, o servidor responde apenas 6 simultaneamente e o primeiro lote bloqueia o segundo. Eu li alguns posts sobre como conseguir a simultaneidade do Gunicorn com o gevent ou o thread múltiplo, e todos eles dizem que eu preciso ter núcleos de CPU, mas o problema é que não importa quanta CPU eu coloquei nele, a limitação continua. Eu tentei os nós do Google de 1VCPU para 8VCPU e isso não muda muito.
Vocês podem me dar alguma ideia do que eu estou perdendo? Talvez a limitação dos nós do cluster do Google?
Como você pode notar, o segundo lote só começou a ser respondido depois que o primeiro começou a ser concluído.
Eutenteicomaclassepadrãocomaconfiguraçãorecomendada:2*núcleos+1parae12segmentos.
Eutambémtenteigeventcom--worker-connections2000
.
Nenhumdelesfezdiferença.Ostemposderespostaforammuitosemelhantes.
Minhaseçãodocontêinerdoarquivodokubernetes:
spec:nodeSelector:cloud.google.com/gke-nodepool:default-poolcontainers:-name:python-gunicornimage:gcr.io/project-name/webapp:1.0command:-/env/bin/gunicorn---bind-0.0.0.0:8000-main:app---chdir-/deploy/app#---error-logfile#-"-"
- --timeout
- "7200"
- -w
- "3"
- --threads
- "8"
#- -k
#- gevent
#- --worker-connections
#- "2000"