2017-06-16 57 views
2

我有一个mysql + django + uwsgi + nginx应用程序,最近我有一些uwsgi的默认配置问题,所以我想重新配置它,但我不知道推荐值是什么。uwsgi的推荐设置

另一个问题是我找不到uwsgi使用的默认设置,这使得调试非常困难。

使用默认配置,网站在实际流量下速度太慢(太多请求等待uwsgi套接字卡住)。所以我使用了一些教程中的配置,它有修复问题的cpu-affinity=1processes=4。该配置也有limit-as=512,现在应用程序得到MemoryErrors,所以我猜512MB是不够的。

我的问题是:

  1. 我如何才能知道所推荐的设置是什么?我不需要它是超级完美的,只是为了处理下降的方式的流量,并不会从内存错误等崩溃。特别是limit-as的建议值是我现在最需要的。

  2. uwsgi的设置的默认值是什么?

谢谢!

+0

这是一个在你意识到nginx的文档如何真棒是这样的时刻。 uWSGI服务器不是nginx的一部分,[另一个QA](https://stackoverflow.com/questions/44176413/nginx-is-giving-uwsgi-very-old-requests/44538312#44538312),我不能' t找到默认值! – cnst

+1

'uwsgi --help | grep default'给出了一个很好的线索。但说实话,uwsgi的默认是相当理智的。关注产生问题的原因并进行调整,就像@renzop所说的那样。 – Melvyn

回答

4

我们运行通常很小的应用程序......每分钟很少有超过2000个请求。但无论如何,它很难比较不同的应用程序。那是什么我们用生产:

建议由documentation

Haharakiri = 20 # respawn processes taking more than 20 seconds 
limit-as = 256 # limit the project to 256 MB 
max-requests = 5000 # respawn processes after serving 5000 requests 
daemonize = /var/log/uwsgi/yourproject.log # background the process & log 

uwsgi_conf.yml

processes: 4 
threads: 4 


# This part might be important too, that way you limit the log file to 200 MB and 
# rotate it once 
log-maxsize : 200000000 
log-backupname : /var/log/uwsgi/yourproject_backup.log 

我们使用我们的Django的应用程序的部署和配置以下项目。 (这里没有文档对不起...只是用它的内部)

https://github.com/iterativ/deployit/blob/ubuntu1604/deployit/fabrichelper/fabric_templates/uwsgi.yaml

你怎么能告诉你,如果配置正确吗......?由于它很大程度上取决于您的应用程序,我建议使用newrelic.com等监控工具,然后对其进行分析。

+0

谢谢!为什么limit-as = 256?你怎么知道这对你的应用程序有好处? –

+0

Honastly,我只是采取默认值开始,然后检查它是否工作。监控并测量您的应用消耗的内容。和以往一样,优化从默认开始,测量,然后根据需要进行优化。还发现这一点。 http://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html 如果你的程序使用了内存,你应该考虑在另一个进程中执行任务......(芹菜等) – renzop

+0

或者修剪掉你想要的信息。Django的内存使用情况与使用“select_related”与场重型模型之间存在很强的关联。肯定有需要的情况下,然后你必须带上你的钱包来获得额外的记忆。但也有很多“信息补充”的例子,我们试图将所有内容都放在一个页面上,没有人会阅读/使用全部内容。 – Melvyn