Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

429
Vistas
How to set gunicorn worker number in a kubernetes' pod

I'm running a flask application with gunicorn and gevent worker class. In my own test environment, I follow the official guide multiprocessing.cpu_count() * 2 + 1 to set worker number.

If I want to put the application on Kubernetes' pod and assume that resources will be like

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

how to calculate the worker number? should I use limits CPU or requests CPU?


PS. I'm launching application via binary file packaged by pyinstaller, in essence flask run(python script.py), and launch gunicorn in the main thread:

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()

PS. Whether I set worker number by limits CPU (10*2+1=21) or requests CPU (3*2+1=7) the performance still can't catch up with my expectations. Any trial suggestions to improve performance will be welcome under this questions

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

how to calculate the worker number? should I use limits CPU or requests CPU?

It depends on your situation. First, look at the documentation about request and limits (this example is for memory, but the same is for CPU).

f the node where a Pod is running has enough of a resource available, it's possible (and allowed) for a container to use more resource than its request for that resource specifies. However, a container is not allowed to use more than its resource limit.

For example, if you set a memory request of 256 MiB for a container, and that container is in a Pod scheduled to a Node with 8GiB of memory and no other Pods, then the container can try to use more RAM.

If you set a memory limit of 4GiB for that container, the kubelet (and container runtime) enforce the limit. The runtime prevents the container from using more than the configured resource limit. For example: when a process in the container tries to consume more than the allowed amount of memory, the system kernel terminates the process that attempted the allocation, with an out of memory (OOM) error.

Answering your question: first of all, you need to know how many resources (eg. CPU) your application needs. Request will be the minimum amount of CPU that the application must receive (you have to calculate this value yourself. In other words - you must know how much the application needs minimum CPU to run properly and then you need to set the value.) For example, if your application will perform better, when it receives more CPU, consider adding a limit ( this is the maximum amount of CPU an application can receive). If you want to calculate the worker number based on the highest performance, use limit to calculate the value. If, on the other hand, you want your application to run smoothly (perhaps not as fast as possible, but it will consume less resources) use request type.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda