------------------ 原始邮件 ------------------
发送时间: 2012年3月31日(星期六) 下午2:46
收件人: "mmxcq";
抄送: "openresty";
主题: Re: 回复: 回复: 回复: 回复: 你好 我是在网上看见这篇文章 然后测试了你的模块
On Sat, Mar 31, 2012 at 1:54 PM, agentzh <
agentzh@gmail.com> wrote:
>
> 晚些时候我再测试一下和你的完全一样的使用 ngx_fastcgi 和 php-fpm 的配置。
>
OK...我使用和你给出的一模一样的配置在我本地复现了你描述的问题,相同的随机 cache miss 的问题。
在我的 nginx error.log 中给出了好多条类似下面这样的错误信息:
2012/03/31 14:36:30 [error] 26131#0: *39678 upstream timed out (110:
Connection timed out) while reading response header from upstream,
client: 127.0.0.1, server: test.com, request: "GET / HTTP/1.0",
subrequest: "/xxx_memc", host: "localhost"
这条信息明确指出 nginx 配置中的 memc_read_timeout 超时设置的值过小了,在这种压力下,memcached
返回结果的时间可能会偶尔大于 100 ms,从而造成读取超时,即进一步造成缓存不命中。
在我这里将 memc_read_timeout 的值调大为 500ms 之后,缓存随机不命中的现象随即消失。
你尝试将 memc_read_timeout 的值调大为 500ms 甚至 1s 看看?
不过我很奇怪你并没有在你的 error.log 中看到任何错误消息。难道你在清空 error.log 文件之后忘记通过 USR1
信号(或者重启信号)让正在运行中的 nginx 进程重新打开日志文件了?还是你遇到根本就是其他的更诡异的问题?
Regards,
-agentzh