如何配置 Django 以及如何 运行 Gunicorn workers 具有 cpu 性能?
how to config Django and how to run Gunicorn workers with cpu performance?
我使用 gunicorn django_project.wsgi:application --bind=127.0.0.1:8866 --daemon
作为 运行 我的 django 在具有 6 个处理器和 14gb 内存的服务器上的命令行,但我没有设置工作人员,我在这个服务器上使用 2 个应用程序,如何我可以使用所有 ram 内存和处理器获得最佳性能吗?
您可以传递命令行参数来指定您希望 运行 的工作人员数量,请参阅:http://docs.gunicorn.org/en/stable/settings.html#worker-processes
但是,如果您希望以编程方式获取核心数,最好传递一个参数以从模块读取配置,例如:
gunicorn django_project.wsgi:application -c gunicorn.py.ini
gunicorn.py.ini
的内容为:
from multiprocessing import cpu_count
bind = '127.0.0.1:8866'
daemon = True
workers = cpu_count()
还有一个常用的公式用于指定工人的数量:
workers = cpu_count() * 2 + 1
查看其背后的原因:http://docs.gunicorn.org/en/stable/design.html#how-many-workers
关于内存使用,我认为你无能为力,他们会根据需要使用尽可能多的内存。但是,您还可以尝试其他一些方法来优化您的工作人员。您可以在配置文件中指定worker_class
,例如:
worker_class = 'gevent'
并测试哪一个最适合您,查看可用工人列表 类:http://docs.gunicorn.org/en/stable/settings.html#worker-class
此外,通过指定 max_requests
选项 (http://docs.gunicorn.org/en/stable/settings.html#max-requests),您可以在指定数量的请求后强制重新启动 worker。如果您的代码由于某种原因泄漏内存,这非常有用,因此当它们重新启动时,os 将在它们之后清理。
max_requests = 1000 # a reasonable value
我使用 gunicorn django_project.wsgi:application --bind=127.0.0.1:8866 --daemon
作为 运行 我的 django 在具有 6 个处理器和 14gb 内存的服务器上的命令行,但我没有设置工作人员,我在这个服务器上使用 2 个应用程序,如何我可以使用所有 ram 内存和处理器获得最佳性能吗?
您可以传递命令行参数来指定您希望 运行 的工作人员数量,请参阅:http://docs.gunicorn.org/en/stable/settings.html#worker-processes
但是,如果您希望以编程方式获取核心数,最好传递一个参数以从模块读取配置,例如:
gunicorn django_project.wsgi:application -c gunicorn.py.ini
gunicorn.py.ini
的内容为:
from multiprocessing import cpu_count
bind = '127.0.0.1:8866'
daemon = True
workers = cpu_count()
还有一个常用的公式用于指定工人的数量:
workers = cpu_count() * 2 + 1
查看其背后的原因:http://docs.gunicorn.org/en/stable/design.html#how-many-workers
关于内存使用,我认为你无能为力,他们会根据需要使用尽可能多的内存。但是,您还可以尝试其他一些方法来优化您的工作人员。您可以在配置文件中指定worker_class
,例如:
worker_class = 'gevent'
并测试哪一个最适合您,查看可用工人列表 类:http://docs.gunicorn.org/en/stable/settings.html#worker-class
此外,通过指定 max_requests
选项 (http://docs.gunicorn.org/en/stable/settings.html#max-requests),您可以在指定数量的请求后强制重新启动 worker。如果您的代码由于某种原因泄漏内存,这非常有用,因此当它们重新启动时,os 将在它们之后清理。
max_requests = 1000 # a reasonable value