【发布时间】:2013-01-19 02:24:44
【问题描述】:
我有一个使用 Django 的网站,当输入它时,它会从 postgresql 数据库中的单个表中加载大约 100 行。
本地开发服务器:页面加载时间 300 毫秒
Heroku 上的生产服务器:页面加载时间 1.34 秒(约慢 4.13 倍)
(集成gunicorn 并在非空转测功机上从aws S3 加载我的静态文件)
什么?
请注意,我的生产服务器上还没有流量,我正在使用 1 台测功机。
当我在 Heroku 上为我的生产服务器使用与我的开发服务器完全相同的设置时,它甚至更慢。 这样的加载时间差异正常吗?
我的电脑规格:
Memory: 3.7 GiB
Processor: Intel® Core™ i5 CPU M 520 @ 2.40GHz × 4
OS type: 64-bit
【问题讨论】:
-
你发现这发生在“第一次”命中吗?
-
在第一次加载新浏览器会话的页面时是的。那么后续的“命中”呢,这是意料之中的吗? (我还没有集成任何缓存)
-
我不使用 Heroku,但是从查看 dynos 的页面来看,dynos 似乎是 EC2 微型实例?我猜测这是基于为每个测功机保留 512 MB 的事实。如果是这种情况,那将解释您在速度上的巨大差异,因为微型实例受到了非常严重的限制。您可以通过运行
top并查看第三行的st值来看到这一点。如果它们没有映射到微实例,那么请忽略我所说的。 -
我们在部署 django 或 rails 应用程序时遇到了同样的问题,第一次点击会非常慢,但之后它就可以正常工作了。这些都是可以解释发生了什么的答案。 serverfault.com/questions/275035/… 和 stackoverflow.com/questions/2606190/…
-
从您的顶部输出中,
st的值为 0.1%(请参阅最后一行的最后一个条目)。看起来您毕竟没有在微型实例上运行,其中st的值可能高达 90%。恐怕因为我不使用 Heroku,所以我没有什么有用的补充。