Couchbase PHP SDK提供了一般网络错误

时间:2015-07-19 21:10:39

标签: php couchbase

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

enter image description here

在PHP代码中,我使用couchbase存储桶如下:

$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()

也就是说,有一次页面会正确加载并显示存储桶内容,然后一次会显示错误。如果我直接访问负载均衡器或任何服务器,这无关紧要。

此外,在enabled中进行自动转换,并在couchbase群集中将复制设置为1。在所有3台服务器中,我设置了LCB_LOGLEVEL=5

发生了什么事?是Couchbase PHP SDK中的问题还是其他什么问题?我会感激任何帮助。

更新

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

$cluster = new \CouchbaseCluster('http://127.0.0.1:8091?detailed_errcodes=1');

有了这个,现在出现错误信息。它仍然随机突然出现(大约一半时间):

CouchbaseException in CouchbaseBucket.class.php line 74: The remote host refused the connection. Is the service up?

自动转发正在进行中。在Couchbase控制台日志中:

Failed over 'ns_1@<ip_address>': ok
Node ('ns_1@<ip_address>') was automatically failovered.

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

0 个答案:

没有答案