对于 memcached 服务器,我们运行的是 1.4.5 版本,应用程序使用 PHP 5.3.6 和 memcache 构建(http://pecl.php.net/package/memcache) 版本 3.0.5
目前我们有 2 个 memcached 池,每个池目前有 3 个 memcached 服务器。同时由于需要为我们的 Web 应用程序进行负载平衡,现在我们有两台应用服务器连接到同一个 memcached 池。由于第一台应用服务器安装的时间很早,所以 memcache 版本是 3.0.5,而较新的服务器安装的是 memcache 版本 3.0.6。
之后发生了一些奇怪的事情,有时无法检索数据,并且我们会收到如下错误:
[Mon Oct 03 19:55:56 2011] [error] [client 192.168.0.22] PHP Notice: unserialize(): Error at offset 0 of 9648 bytes in /public_html/test.php
因此,当我们将 memcache 库与同一版本匹配时(两个池都运行 3.0.6 或 3.0.5),问题似乎就解决了。但不确定是否有人遇到过类似的问题?您会推荐哪个版本?
最后,使用“稳定”版本 2.2.6 更好吗?
答案1
pecl/memcache 3.0.x alpha 被废弃了很长一段时间,后来最终有人修复了一些问题。
2.2.x 稳定版的错误少了很多..从技术上讲您正在运行 alpha 版本。
如果你想花点时间,pecl/memcached 客户端往往更胜一筹,而且有积极的维护人员。上面的“稳定”版本有点旧,但新工作正在进行中。
无论如何,如果可能的话,我都会将所有软件保留在同一版本,并且您应该在某个时候升级守护进程。