解决 memcache 连接奇慢问题一例
最近用 xdebug 观察线上程序的运行时间统计,发现往日里跑起来像飞的 memcache 居然是系统中拖后腿的耗时大户,连接时间特长。
运行环境
webserver 是 apache + php
php memcache extension 版本是 3.0.2,当时是最新的 beta 版…
有 4 个 memcache server 可供使用
代码中会利用 php 的 Memcache::addServer 依次连接四个 memcache,长连接方式
现象
完成四次 addServer 一共需要 300ms 以上,但是一旦连接上,获取单个 item 飞快,时间在 3ms 以下。
更可恶的问题在于,虽然执行了四次 Memcache::addServer,但是实际使用的始终是最后一个 memcache,这实在让人崩溃。
问题解决
使用了一点搜索技巧,在 pecl.php.net 上找到了类似的 bug: First get slow when using multiple memcached servers
这个 bug 的描述如下:
We are monitoring memcached performance and noticed that when we added a second memcached via Memcache::addServer the first get request is always slower than the
subsequent ones although we are using persitent memcached connections. Switching from crc32 to fnv hashing didn’t help either. Is that delay explainable
看起来是最新的 memcache extension 有一些问题,尝试将这个扩展降级成最新的稳定版 2.2.6,然后重启 apache 看看,memcache 连接过慢的问题果然已经解决。
评论0
最新资源