2
votes

I have a server with 4 cores.

When setting up Gunicorn with workers and threads can I assign the same number of workers and threads to the cpu's since they will be doing different things?

for example

from gevent import monkey
monkey.patch_all()
import multiprocessing

workers = multiprocessing.cpu_count() * 2 + 1
bind = "127.0.0.1:5000"
worker_class = 'gevent'
worker_connections = 1000
threads = multiprocessing.cpu_count() * 2 + 1

Or should I instead do this

from gevent import monkey
monkey.patch_all()
import multiprocessing

workers = 2 * 2 + 1
bind = "127.0.0.1:5000"
worker_class = 'gevent'
worker_connections = 1000
threads = 2 * 2 + 1
1

1 Answers

0
votes

With worker_class='gevent' setting threads is irrelevant. See the quote from the documentation,

Since Gunicorn 19, a threads option can be used to process requests in multiple threads. Using threads assumes use of the gthread worker. Gunicorn Design

Also from threads setting documentation,

This setting only affects the Gthread worker type. Gunicorn Settings