【问题标题】:Recommended settings for uwsgiuwsgi 的推荐设置
【发布时间】:2017-11-19 08:10:33
【问题描述】:

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

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

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

我的问题是:

  1. 我如何知道推荐的设置是什么?我不需要它非常完美,只需要以下降的方式处理流量并且不会因内存错误等而崩溃。特别是limit-as 的推荐值是我现在最需要的。

  2. uwsgi 设置的默认值是多少?

谢谢!

【问题讨论】:

  • 有时你会意识到 nginx 文档是多么的棒。 uWSGI 服务器不是 nginx 的一部分,对于the other QA,我也找不到默认值!
  • uwsgi --help|grep default 提供了一个很好的线索。但老实说,uwsgi 的默认设置非常合理。关注产生问题的原因并进行调整,就像@renzop 所说的那样。

标签: django nginx settings uwsgi production


【解决方案1】:

我们通常运行非常小的应用程序...每分钟很少超过 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 并对其进行分析。

【讨论】:

  • 谢谢!为什么limit-as=256?你怎么知道它对你的应用有好处?
  • 老实说,我只是从默认值开始,然后检查它是否有效。监控和衡量您的应用消耗的内容。与以往的优化一样,从默认开始,测量,然后在需要时进行优化。也发现了这个。 uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html如果您的进程使用过多的内存,您可能应该考虑在另一个进程中执行任务......(芹菜等)
  • 或者删减你想要的信息。 Django 的内存使用与使用select_related 与重字段模型之间存在密切关系。当然在某些情况下需要它,然后你必须带上你的钱包以获得额外的内存。但也有很多“信息填塞”的例子,我们试图将所有内容都放在一个页面上,没有人会阅读/使用所有内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-20
  • 2014-10-07
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多