我遇到了Memcached池的问题。我将尝试添加错误的所有上下文,看看你们是否可以帮助我。
上下文
我的问题:
我正在创建一个与memcached的连接并保存几个密钥,首先只在一个服务器中,如下所示:
$_memcache = new Memcache;
$_memcache->addServer("127.0.0.1", "11211", true, 50, 3600, 45);
所以,假设我在那个服务器中添加了几个键,我可以得到没有问题的那些,我实际上可以,当我看到我的网站并且我的代码正在调用以获取密钥时,它就是它。
现在问题,让我们说已经保存并且没有问题的工作,我将另一个memcached服务器添加到池中,这样:
$_memcache = new Memcache;
$_memcache->addServer("10.0.0.2", "11211", true, 50, 3600, 45);
$_memcache->addServer("10.0.0.3", "11211", true, 50, 3600, 45);
但是在我刷新网站以运行我的代码并获得我在第一台服务器中存储的密钥之前,我在服务器编号1(10.0.0.2)中停止了memcached,之后我刷新了我的网站然后我收到了502错误(坏网关)
我在NGINX日志中看到的错误是:
[错误] 9364#0:* 329504 recv()失败(104:通过对等方重置连接)从上游读取响应头,客户端:XX.XX.XXX.XXX,服务器:_,请求: “GET / HTTP / 1.1”,上游:“fastcgi:// unix:/ run / php-fastcgi / sock:”,主持人:“www.myhost.com”
那么,为什么我会收到这个错误。我唯一的理论是,由于某种原因,因为当我停止memcached服务器时连接是持久的并没有正确关闭,但只有当我有一个X>池时才会发生这种情况。 1台服务器。如果我只使用那个并停止,我将不会看到错误。
PHP 5.5有任何方法都存在我不知道的fastcgi套接字的错误。
注意:我遇到的这个问题在以前的PHP版本5.3上没有发生,在更改版本后就会发生这种情况。
注意:当我不使用持久连接似乎工作,但这个网站有巨大的流量,它将无法处理打开的连接数量,我在开发环境中测试了这一点。
非常欢迎任何帮助或任何建议。
提前致谢!