Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchbase PHP SDK提供一般网络错误_Php_Couchbase - Fatal编程技术网

Couchbase PHP SDK提供一般网络错误

Couchbase PHP SDK提供一般网络错误,php,couchbase,Php,Couchbase,我正在运行一个网站,有2台服务器用于网站代码(PHP),1台服务器作为负载平衡器。所有3个都作为单个集群的一部分运行couchbase实例 在PHP代码中,我使用couchbase bucket如下: $cluster = new \CouchbaseCluster('http://127.0.0.1:8091'); $greyloftWebbucket = $cluster->openBucket('some_bucket'); $query = \CouchbaseViewQuery

我正在运行一个网站,有2台服务器用于网站代码(PHP),1台服务器作为负载平衡器。所有3个都作为单个集群的一部分运行couchbase实例

在PHP代码中,我使用couchbase bucket如下:

$cluster = new \CouchbaseCluster('http://127.0.0.1:8091');
$greyloftWebbucket = $cluster->openBucket('some_bucket');
$query = \CouchbaseViewQuery::from('abcd', 'pqrs');
当所有couchbase实例都在运行时,此安排工作正常。当其中任何一个被关闭并且我尝试访问存储桶时,我随机得到以下错误:

[2015-07-17 13:46:08] production.ERROR: exception 'CouchbaseException' with message 'Generic network failure. Enable detailed error codes (via LCB_CNTL_DETAILED_ERRCODES, or via `detailed_errcodes` in the connection string) and/or enable logging to get more information' in [CouchbaseNative]/CouchbaseBucket.class.php:282
Stack trace:
#0 [CouchbaseNative]/CouchbaseBucket.class.php(282): _CouchbaseBucket->http_request(1, 1, '/_design/abcd...', NULL, 1)
#1 [CouchbaseNative]/CouchbaseBucket.class.php(341): CouchbaseBucket->_view(Object(_CouchbaseDefaultViewQuery))
#2 /var/www/greyloft-laravel/app/couchbasemodel.php(25): CouchbaseBucket->query(Object(_CouchbaseDefaultViewQuery))
#3 /var/www/greyloft-laravel/app/Http/Controllers/Listing.php(42): App\couchbasemodel::listings()
#4 [internal function]: App\Http\Controllers\Listing->index()
也就是说,一次页面将正确加载并显示bucket内容,然后一次页面将显示上述错误。不管我是直接访问负载平衡器还是任何服务器

另外,在couchbase集群中,启用了
中的自动故障切换,并将复制设置为
1
。在所有3台服务器中,我都设置了
LCB_LOGLEVEL=5

发生了什么事?Couchbase PHP SDK或其他任何东西中是否存在问题?如果有任何帮助,我将不胜感激

更新:

根据mnunberg的建议,我正在使用新的连接字符串

$cluster = new \CouchbaseCluster('http://127.0.0.1:8091?detailed_errcodes=1');
有了这个,错误消息现在就消失了。它仍然随机出现(大约有一半的时间):

正在进行自动故障切换。在Couchbase控制台日志中:

Failed over 'ns_1@<ip_address>': ok
Node ('ns_1@<ip_address>') was automatically failovered.
故障转移“ns_1@”:正常
节点('ns_1@')已自动故障切换。

在我看来,SDK仍在尝试读取故障转移节点。为什么会这样?任何可能的解决方案?

在连接字符串中设置
detailed\u errcodes=1
,以提供更详细的错误消息。另外,请验证自动故障切换确实已生效。默认的自动故障切换超时为120秒(两分钟),因此在自动故障切换真正开始之前,预计会出现两分钟的故障(如果您关闭了一个节点)happens@mnunberg感谢您的建议,我已经更新了连接字符串,并在更新中包含了详细的消息。此外,自动故障切换正在工作。你能给出一些提示为什么会出现错误消息吗?你能解释一下负载平衡器的用途吗?负载平衡器是用于您的站点还是用于Couchbase?在这种情况下,服务器上的客户端日志也会非常有用。看见您还可以使用(当前未记录的)
console\u log\u级别
console\u log\u文件
连接字符串选项
Failed over 'ns_1@<ip_address>': ok
Node ('ns_1@<ip_address>') was automatically failovered.