【发布时间】:2022-01-11 02:28:35
【问题描述】:
我使用 Nginx 作为 Gunicorn 的 Django 项目的反向代理。 它用于https。网站上的所有内容都加载得很快,除非我发送一个包含多部分表单数据的 POST 请求。
那么 2 兆字节的图像处理请求需要 26 秒。对于 60 KB 的图像,它需要几秒钟,但仍然太长了。
我用 python 时间模块测量了 Django 视图的处理时间,得到了大约 80 毫秒。
在本地开发服务器上进行测试期间,处理请求大约需要一秒钟。在部署服务器上,所有媒体文件都可以快速提供。所以我猜原因是 Nginx 的多部分表单请求配置不合适。
我的 conf 文件大部分都没有动过。我尝试了所有修改缓存设置的 StackOverflow 解决方案,并尝试了一次启用缓存但没有成功。是否有我遗漏的信息和配置?
我的表单标题:
<form id="configsForm" method="POST" action="" enctype="multipart/form-data">
{% csrf_token %}
执行后进入Gunicorn journalctl:
- "POST /settings/profileconfigs/ HTTP/1.0" 200
【问题讨论】:
-
Nginx 对我来说工作得很快。可以分享一下post请求的方法来检查吗?
-
很高兴听到这个消息!我不太确定您所说的“发布请求的方法”是什么意思。所以我在问题执行后添加了表单标题和gunicorn的日志条目。我希望那是你所需要的。如果不告诉我。
-
我指的是可能驻留在您的views.py 中的代码。也许问题不是上传,而是另一个可能的功能或方法导致了延迟。
-
啊,谢谢。视野相当长。我再次检查,从函数开始到返回之前所需的时间是 75 毫秒。所以我怀疑是nginx造成了时间消耗。但是,如果您真的需要该功能,我会将其添加到问题中。您是否必须进行任何设置以使 nginx 可以正常处理多部分请求,还是直接工作?我可以问一下 nginx 对哪些文件类型可以快速运行?
-
我在 nginx 上有这个配置:pastebin.com/TyfsmQja。它可以很好地上传到媒体文件夹,当我迁移到 minio 时也很好