gpt4 book ai didi

django - memcached 减慢网站速度

转载 作者:行者123 更新时间:2023-12-04 21:48:59 26 4
gpt4 key购买 nike

我有一个由 nginx 和 django 提供服务的网站。

我的 staging.py正确包含缓存和中间件设置。你可以看看nginx.confnginx conf file related to the site .我已经确认 memcached 正在运行 ngrep -d any port 11211 .

我打开了整个站点的缓存,并希望通过执行 ab -n 1000 -c 10 http://site.com 来查看性能

关闭缓存后,我得到:

Concurrency Level:      10
Time taken for tests: 10.276 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 11695000 bytes
HTML transferred: 11559000 bytes
Requests per second: 97.32 [#/sec] (mean)
Time per request: 102.759 [ms] (mean)
Time per request: 10.276 [ms] (mean, across all concurrent requests)
Transfer rate: 1111.43 [Kbytes/sec] received

打开缓存后,我得到:
Concurrency Level:      10
Time taken for tests: 12.277 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 11695000 bytes
HTML transferred: 11559000 bytes
Requests per second: 81.45 [#/sec] (mean)
Time per request: 122.771 [ms] (mean)
Time per request: 12.277 [ms] (mean, across all concurrent requests)
Transfer rate: 930.26 [Kbytes/sec] received

我的网站是一个从数据库中提取帖子的博客——没有什么异国情调。

如果有人能让我知道为什么该网站实际上使用 memcached 变慢了,我将不胜感激。您可以看到,当我使用 memcached 时,“每秒请求数”实际上下降了!

但是, running memcached-top给了我 no hits当我运行 ab 时(尽管在测试期间读写计数器上升)。我有 memory available和 memcached 是 not hogging内存。

编辑
我跑了 memcached -vv并得到 some results .您可以看到 memcached 第一次打印出“STORED”,然后似乎没有从缓存中发送它(对此不确定)。现在我更加困惑了。也许 memcached 和 django 接口(interface)正在工作,但最终结果是最好不运行 memcached?

最佳答案

Trewq,很多不同的事情都可能出错。您说您的机器没有分页,但即使 memcache 存储了结果,get 请求也不会回来。

我的理论:超时太短,驱动程序错误,以及可能错误的 CPU 架构(x86 与 _64)

超时

通常在 -vv 输出(可能是 -vvv )中,SET 行将具有命令、键、值和超时等语法。非常小的超时可能是内存缓存存储的问题,然后几乎立即将值刷新。

[noreply]\r\n - https://github.com/memcached/memcached/blob/master/doc/protocol.txt

司机

此外,您使用的 memcache 驱动程序/api 可能存在问题,因为 mc 永远不会阻塞那么久。您可以通过执行类似 http://code.google.com/p/memcached/wiki/NewConfiguringServer#Inspecting_Running_Configuration 的操作来检查您的内存缓存服务状态。在进行基准测试之前和之后。

关键审计

不久前我写了这个问题的脚本 Setting smaller buffer size for sys.stdin?审核 memcache -vv 的输出以查看 GET 与 SET 的平衡程度。已经有一段时间了,但我相信通过一些修复它可能对您有用。

wiki 中没有提到 stat,但有一些 stat 值可以帮助您确定缓存是否平衡 - https://github.com/memcached/memcached/blob/master/doc/protocol.txt#L409

super 理想是 9/10 的请求命中到 1 次未命中,现实更有可能是 6/10 的请求命中,低于 60% 的任何内容都在浪费内存。

关于django - memcached 减慢网站速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8737678/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com