Django 网站在重新启动或不活动一段时间后加载速度非常慢

发布于 2024-11-30 02:11:39 字数 967 浏览 0 评论 0原文

我正在 Apache 上运行 Django 站点,在一段时间不活动(大约 1 小时)后,初始页面加载速度非常慢。我可以通过离开一个小时或跳出服务器来进行复制。初始加载后,页面加载一致 << 1秒。

我假设(猜测)问题是 Python 解释器 + Python 模块在这些不活动期之后再次加载到内存中?

我关注了 http://blog .dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html 并在守护进程模式下运行 mod_wsgi

服务器配置:

Timeout 20
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
ServerLimit 10

<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       2
    MaxSpareServers       2
    MaxClients            4
    MaxRequestsPerChild   0
</IfModule>

...

WSGIDaemonProcess django display-name=%{GROUP}
WSGIScriptAlias / /path/to/osqa.wsgi process-group=django application-group=%{GLOBAL}

上面的配置是否明显有问题,或者有没有办法将Python解释器保留在内存中?

也许这是一个完全不同的问题?

谢谢

I'm running a Django site on Apache, and am experiencing very slow intial page loads after a period of inactivity (about 1 hour). I can replicate by leaving for an hour, or bouncing the server. After the initial load, pages load consistently in < 1 sec.

I'm assuming (guessing) the issue is the Python interpreter + Python modules are being loaded into memory again after these periods of inactivity?

I've followed http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html and am running mod_wsgi in daemon mode.

Server config:

Timeout 20
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
ServerLimit 10

<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       2
    MaxSpareServers       2
    MaxClients            4
    MaxRequestsPerChild   0
</IfModule>

...

WSGIDaemonProcess django display-name=%{GROUP}
WSGIScriptAlias / /path/to/osqa.wsgi process-group=django application-group=%{GLOBAL}

Is something obviously wrong with the config above, or is there a way to keep the Python interpreter in memory?

Perhaps this a different issue altogether?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

得不到的就毁灭 2024-12-07 02:11:39

一些想法:

  • 确保您有足够的内存,并且有一些空闲且运行良好的磁盘缓存可用。根据您的用途,您总共应该至少有 1GB 到 4+GB 的空间。提到了 Top,我推荐 htop: http://htop.sourceforge.net/
  • 增加磁盘缓存,如果例如,您使用的是 IO 较差的虚拟机,例如 EC2/EBS。
  • 将数据库调整为适当的内存值。
  • 如果缓存检查超时,如上所述。如果一小时内没有人访问,缓存就会过期。
  • 配置 Linux (?) 以减少交换的积极性:
    • 回声20> /proc/sys/vm/swappiness
    • 永久:在 /etc/sysctl.conf 中添加 vm.swappiness

A few ideas:

  • Make sure you have enough memory and that there is some free and a healthy disk cache available. You should have at least 1gb to 4+gb total depending on what you are doing. Top was mentioned, and I recommend htop: http://htop.sourceforge.net/
  • Increase disk caching, if for example, you are using an IO poor VM such as EC2/EBS.
  • Tune your db to appropriate values with regards to memory.
  • If caching check timeouts as mentioned above. If no one visiting in the hour caches will expire.
  • Configure Linux (?) to swap less aggressively:
    • echo 20 > /proc/sys/vm/swappiness
    • Permanently: add vm.swappiness in /etc/sysctl.conf
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文