如何在使用 memcache(冗余)进行会话存储时调试/修复 php/apache 分段错误?

如何在使用 memcache(冗余)进行会话存储时调试/修复 php/apache 分段错误?
  • 操作系统:debian squeeze(up2date)
  • 2 Apache mod php 网络服务器
  • 2 memcache 服务器

我必须使用两个 memcache 服务器进行冗余会话存储的 apache mod_php 节点(使用来自https://serverfault.com/a/165584)。

内存缓存配置文件

extension=memcache.so

[memcache]
memcache.dbpath="/var/lib/memcache"
memcache.maxreclevel=0
memcache.maxfiles=0
memcache.archivememlim=0
memcache.maxfilesize=0
memcache.maxratio=0

memcache.allow_failover=1
memcache.hash_strategy=consistent
memcache.session_redundancy=3

php.ini

session.save_handler = memcache
session.save_path="tcp://192.168.0.11:11211?persistent=1&weight=1&timeout=1&retry_interval=15,tcp://192.168.0.19:11211?persistent=1&weight=1&timeout=1&retry_interval=15"

仅使用一个 memcache 服务器,一切都运行良好,使用两个或两个冗余服务器时也运行得很好。会话被写入两个服务器(我可以使用 phpmemcache 管理员进行验证),但是只要我杀死一个节点(停止一个 memcache 服务器),我就会遇到麻烦。

memcache 服务器看起来好像有一个“主”服务器和一个“第二”服务器。当我关闭第二台服务器时问题较少,但是一旦关闭第一台 memcache 服务器(第二台服务器处于运行状态),每次尝试连接时,apache 错误日志就会充满分段错误。

我也尝试过memcache.session_redundancy=3,但由于错误,我得到的值是 3https://bugs.php.net/bug.php?id=58585

附言:如果你使用 Firefox,请使用:https://addons.mozilla.org/en-US/firefox/addon/its-all-text在遇到 serverfault 的“你是人类吗”这个问题后,我按“返回”时就找不到问题了……

答案1

我遇到了同样的错误。你必须安装一个新的 memcache 版本。我使用的是 3.04,正如您所说的那样,它失败了,而使用 3.07 Apache 不会崩溃。我可以停止我的一个 memcached 服务器,而第二个服务器支持该故障,而不会出现 Apache 段错误。

相关内容