【问题标题】:Using Django Caching with Mod_WSGI将 Django 缓存与 Mod_WSGI 一起使用
【发布时间】:2011-11-20 14:09:44
【问题描述】:

有人知道 Django 的缓存框架在部署到 Apache/Mod_WSGI 时有什么问题吗?

当使用开发服务器在本地使用缓存框架进行测试时,使用分析中间件和 FileBasedCache 或 LocMemCache,Django 的速度非常快。我的请求时间从 ~0.125 秒到 ~0.001 秒。太棒了。

我将相同的代码部署到运行 Apache/Mod_WSGI 的远程机器上,我的请求时间从 ~0.155 秒(部署更改之前)到 ~.400 秒(部署后)。没错,缓存让一切都变慢了

我花了几个小时挖掘所有东西,寻找我缺少的东西。我已经尝试使用 FileBasedCache 与 tmpfs 上的位置,但这也未能提高性能。

我用 top 监控了远程机器,它没有显示其他进程并且它有 6GB 可用内存,所以基本上 Django 应该完全控制。我喜欢 Django,但它的速度非常慢,到目前为止,我从来没有能够让缓存框架在生产环境中产生任何明显的影响。我有什么遗漏吗?

编辑:我也尝试过 memcached,结果相同。我通过 telnet 确认 memcached 正在运行。

【问题讨论】:

  • 你用什么缓存?如果您使用的是 memcached,而 memcached 并没有实际运行,django 不会告诉您,但不会进行缓存。确保实际发生缓存可能会很好。
  • 您使用的是 prefork 还是 Apache 的 worker MPM?你是在嵌入式模式还是守护进程模式下运行 mod_wsgi?您可能只是在运行配置错误的 Apache/mod_wsgi。

标签: python django performance


【解决方案1】:

django 确实很慢。但我必须说,大部分的缓慢都来自应用程序本身。django 只是强迫你(在文档中提供不好的例子)做一些生产速度慢的懒惰的事情。

首先:尝试 nginx + uwsgi。这是最好的。

要优化您的应用程序:您需要找到导致缓慢的原因,它可以是:

  • 数据库查询慢(很多查询或只是慢查询)
  • 数据库本身很慢
  • 慢速文件系统(例如 nfs)

尝试记录请求查询并观察 iostat 或 iotop 或类似的东西。

我在使用 apache+mod_wsgi 时遇到过这种情况:来自浏览器的第一个请求非常慢......然后来自同一个浏览器的一些请求很快......然后如果坐着 2 分钟什么都不做 - wgain 很慢。如果它正在关闭 wsgi 应用程序并为每个 keepalive 请求启动,我不知道它是否配置不正确。它只是让我失望 - 我安装了 nging 并且使用 nginx+fgxi 都比 apache+mod_wsgi 快很多。

【讨论】:

  • 当你应该使用 mod_wsgi 的守护进程模式时,似乎你犯了使用嵌入式模式的错误,最好是使用 worker MPM。默认值不能提供最佳解决方案。预加载 Django 应用程序也有帮助。 uWSGI 会预加载,但 mod_wsgi 会延迟加载。你也可以让 mod_wsgi 预加载。
  • 诚然,我有很多数据库查询正在减慢速度。但是,有了缓存,就应该完全避免这些。
【解决方案2】:

我在使用 memcached 的应用程序中遇到了类似的问题。解决方案是以守护程序模式而不是嵌入模式运行 mod_wsgi,并以 mpm_worker 模式运行 Apache。之后,应用程序运行得更快。

【讨论】:

  • 我不确定我在使用 mpm_worker 模式,但我很确定我在守护进程模式下使用 mod_wsgi。我的启用站点的文件具有 WSGIDaemonProcess 进程 = 5 和线程 = 15。
【解决方案3】:

同样的事情发生在我身上,我想知道是什么花了这么多时间。 每个缓存获取大约需要 100 毫秒。

所以我调试了代码 django locmem 代码,发现 pickle 花费了很多时间(我在 locmemcache 中缓存了整个表)。 我包裹了 locmem,因为我不想要任何高级的东西,所以即使你把腌菜去掉,然后把它解开。您将看到重大改进。

希望对某人有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    • 2017-09-25
    • 2010-12-10
    相关资源
    最近更新 更多