为什么我的Django开发服务器在本地运行得比在Heroku上快那么多?

1 投票
1 回答
893 浏览
提问于 2025-04-17 14:41

我有一个用Django做的网站,进入时会从一个PostgreSQL数据库的表里加载大约100行数据。

本地开发服务器: 页面加载时间为300毫秒
Heroku上的生产服务器: 页面加载时间为1.34秒(大约慢了4.13倍)
(我使用了gunicorn,并从aws S3加载我的静态文件,且是在一个不闲置的dyno上)

这是怎么回事?

请注意,我的生产服务器上还没有流量,并且我只使用了1个dyno。

当我在Heroku上使用和本地开发服务器完全相同的设置时,加载速度甚至更慢。这样的加载时间差异正常吗?

我的电脑配置:

Memory: 3.7 GiB  
Processor: Intel® Core™ i5 CPU M 520 @ 2.40GHz × 4   
OS type: 64-bit 

1 个回答

0

我的电脑大约有 3.9 Gb ram,而根据这个来源,一个 Heroku 的 dyno 只有 512Mb ram。这就意味着我的电脑的内存大约是 Heroku dyno 的7.8 倍。根据这个来源,内存对提高数据库查询的性能非常重要。因为我在做很多查询,所以时间上的差异让我觉得很合理。

但是,当我在 Heroku 应用目录里运行 top 命令时,意外地显示出 35 Gb ram。不过根据这个来源,在 Heroku 里运行 top 是从一个不同的 dyno(一次性 dyno)上进行的,而不是我应用正在运行的那个。

我现在唯一不明白的是,为什么一个 一次性 dyno 会有这么多内存。

只要没有人给出更好的答案,我就会继续关注这个回答。

撰写回答