Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何找出为什么rendering base.html在生产中非常慢(在Heroku上)_Python_Django_Heroku - Fatal编程技术网

Python 如何找出为什么rendering base.html在生产中非常慢(在Heroku上)

Python 如何找出为什么rendering base.html在生产中非常慢(在Heroku上),python,django,heroku,Python,Django,Heroku,我有一个Django应用程序在Heroku上运行了几个月,没有问题。不知从何而来,它变得极其缓慢/无响应,占用了大量内存 NewRelic隐晦地告诉我,98%的加载时间是“应用程序代码(在Render/base.html中)”,但没有告诉我任何其他内容。据我所知,base.html中没有任何会导致其行为不同的更改 还有人遇到过这个问题吗?如何排除故障/找出问题的根源 谢谢大家! 更新——我无法再将更改推送到Heroku。在超时之前,它会在“清理…”或“收集静态文件”时暂停(如果耗时超过15分钟,

我有一个Django应用程序在Heroku上运行了几个月,没有问题。不知从何而来,它变得极其缓慢/无响应,占用了大量内存

NewRelic隐晦地告诉我,98%的加载时间是“应用程序代码(在Render/base.html中)”,但没有告诉我任何其他内容。据我所知,base.html中没有任何会导致其行为不同的更改

还有人遇到过这个问题吗?如何排除故障/找出问题的根源

谢谢大家!


更新——我无法再将更改推送到Heroku。在超时之前,它会在“清理…”或“收集静态文件”时暂停(如果耗时超过15分钟,Heroku会停止编译)。

虽然我不确定是否完全理解问题的根本原因,但我解决了症状,我想在这里发帖,这样任何遇到同样问题的人都需要帮助

同时发生了两个不同的问题

首先,我在每个dyno上运行了太多gunicorn工人。他们狼吞虎咽了很多内存(原因我还不知道——Heroku有点像个黑匣子)并减慢了速度。更改我的Procfile,使每个dyno只有一个gunicorn工作人员解决了这个问题,至少现在是这样

我的Procfile现在看起来像:

web: newrelic-admin run-program gunicorn myapp.wsgi --workers=1 --timeout=25
其次,事实证明,我的s3存储桶中满是我的应用程序自动生成的>100k Java脚本(我正在使用一个名为django_compressor的工具),当Heroku在部署期间运行collectstatic时,它试图检查s3上是否有任何更改,要求它迭代100k文件。这导致每次我尝试将新部署推送到Heroku时都会发生超时

django_compressor导致了这种情况,因为我在base.html中意外地在{%compress js%}标记中包含了一个用于其他JavaScripts的块

不要这样做:

{% compress js %}
<script src="..." />
<script src="..." />
{% block additionaljs %}{% endblock %} <--- BAD -- should be outside of the {% compress %} tags
{% endcompress %}  
{%compress js%}

{%block additionaljs%}{%endblock%}您是否更改了任何可能影响HTML呈现的内容?其他模板、视图代码、静态文件?这是一个公平的问题——我已经做了一些更改,但似乎没有任何更改会产生任何影响(例如,更改措辞)。它似乎不是特定于视图的,因为它会影响每个页面(它们都使用base.html)。我很想知道是否有人遇到了这个问题,并且找到了问题的根源。而这只发生在heroku身上?如果您使用相同的代码并使用生产设置(debug=false最重要)运行它,那么它工作得很好?是的,使用debug=false,它在开发服务器上工作得很好。是的,这是我想到的第一件事。。下次解释一下你做得更好的改变,并得到更好的答案;)