Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

427
Views
Cómo configurar el número de trabajador de gunicorn en un pod de kubernetes

Estoy ejecutando una aplicación de flask con clase de trabajador gunicorn y gevent . En mi propio entorno de prueba, sigo la guía oficial multiprocessing.cpu_count() * 2 + 1 para establecer el número de trabajador.

Si quiero poner la aplicación en el pod de Kubernetes y asumir que los recursos serán como

 resources: limits: cpu: "10" memory: "5Gi" requests: CPU: "3" memory: "3Gi"

¿Cómo calcular el número de trabajadores? ¿Debo usar límites de CPU o solicitudes de CPU?


PD. Estoy lanzando la aplicación a través de un archivo binario empaquetado por pyinstaller , en esencia, flask run(python script.py) y lanzar gunicorn en el hilo principal:

 def run(): ... if config.RUN_MODEL == 'GUNICORN': sys.argv += [ "--worker-class", "event", "-w", config.GUNICORN_WORKER_NUMBER, "--worker-connections", config.GUNICORN_WORKER_CONNECTIONS, "--access-logfile", "-", "--error-logfile", "-", "-b", "0.0.0.0:8001", "--max-requests", config.GUNICORN_MAX_REQUESTS, "--max-requests-jitter", config.GUNICORN_MAX_REQUESTS_JITTER, "--timeout", config.GUNICORN_TIMEOUT, "--access-logformat", '%(t)s %(l)s %(u)s "%(r)s" %(s)s %(M)sms', "app.app_runner:app" ] sys.exit(gunicorn.run()) if __name__ == "__main__": run()

PD. Ya sea que establezca el número de trabajadores por limits CPU (10*2+1=21) o requests CPU (3*2+1=7) , el rendimiento aún no puede alcanzar mis expectativas. Cualquier sugerencia de prueba para mejorar el rendimiento será bienvenida en estas preguntas.

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

¿Cómo calcular el número de trabajadores? ¿Debo usar límites de CPU o solicitudes de CPU?

Eso depende de tu situacion. Primero, mire la documentación sobre solicitud y límites (este ejemplo es para memoria, pero lo mismo es para CPU).

Si el nodo donde se ejecuta un pod tiene suficiente recurso disponible, es posible (y está permitido) que un contenedor use más recursos de los que especifica su request para ese recurso. Sin embargo, un contenedor no puede usar más que su limit de recursos.

Por ejemplo, si establece una solicitud de memory de 256 MiB para un contenedor y ese contenedor está en un pod programado para un nodo con 8 GiB de memoria y ningún otro pod, entonces el contenedor puede intentar usar más RAM.

Si establece un límite de memory de 4 GiB para ese contenedor, el kubelet (y el tiempo de ejecución del contenedor ) imponen el límite. El tiempo de ejecución evita que el contenedor use más del límite de recursos configurado. Por ejemplo: cuando un proceso en el contenedor intenta consumir más de la cantidad de memoria permitida, el kernel del sistema finaliza el proceso que intentó la asignación, con un error de falta de memoria (OOM).

Respondiendo a su pregunta: en primer lugar, necesita saber cuántos recursos (por ejemplo, CPU) necesita su aplicación. La solicitud será la cantidad mínima de CPU que la aplicación debe recibir (tiene que calcular este valor usted mismo. En otras palabras, debe saber cuánto necesita la aplicación de CPU mínima para ejecutarse correctamente y luego debe establecer el valor). Para Por ejemplo, si su aplicación funcionará mejor cuando reciba más CPU, considere agregar un límite (esta es la cantidad máxima de CPU que una aplicación puede recibir). Si desea calcular el número de trabajadores en función del rendimiento más alto, use el limit para calcular el valor. Si, por el contrario, desea que su aplicación funcione sin problemas (quizás no tan rápido como sea posible, pero consumirá menos recursos), use el tipo de request .

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!