IT技术博客大学习 共学习 共进步

memcache连接慢又一例

某人的栖息地 2009-12-23 09:43:14 浏览 4,045 次

    继上次解决memcache连接慢问题以来,好长一段时间没在这个问题上翻过跟头。这一次我又在生产环境观察到php和memcache的连接时间经常会在50ms以上。

    作为一个cache,占用了这么长的执行时间,天理何在?

    实际的运行环境如下:

apache + mod_phpphp-memcache扩展版本为2.2.5memcache的并发连接数在400左右,相当少

    这次memcache扩展用的是最新的稳定版,无可挑剔。所以刚开始我认为是网络环境的问题,于是直接采用telnet工具直连memcache进行测试,发现速度飞快!一点便秘感都没有!所以把目光仍然放回到memcache扩展上来,集中对比较慢的addServer方法各项参数进行排查。

Memcache::addServer方法

    bool Memcache::addServer ( string $host [, int $port = 11211 [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback [, int $timeoutms ]]]]]]]] )

    比对结果表明,$weight参数对memcache的连接时间有显著的影响,$weight的默认值为1,一旦设置为别的数值,连接时间便会由毫秒级变成50ms左右,立竿见影。

    鉴于php-memcache扩展一贯恶劣的表现,俺不得不痛下决心迁移到新的memcached扩展上。memcached扩展基于libmemcached开发,而且提供了丰富的接口方法,应该是更好的选择。

    

建议继续学习

  1. 关于memcache分布式一致性hash (阅读 11,661)
  2. Memcache分布式部署方案 (阅读 6,667)
  3. 关于session和memcache的若干问题 (阅读 5,186)
  4. Memcache mutex设计模式 (阅读 4,905)
  5. Memcache源代码分析之数据存储 (阅读 4,863)
  6. 解决memcache连接奇慢问题一例 (阅读 4,747)
  7. Memcache协议的学习 (阅读 4,704)
  8. 关于Memcache长连接自动重连的问题 (阅读 4,641)
  9. Memcache源代码分析之网络处理 (阅读 4,544)
  10. memcache的几点注意 (阅读 4,203)