Couchbase PHP SDK выдает общую сетевую ошибку

Я использую веб-сайт с 2 серверами для кода сайта (в PHP) и 1 сервером в качестве балансировщика нагрузки. Все 3 также работают с экземплярами couchbase, как часть одного кластера.

введите описание изображения здесь

В 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 с репликацией, установленной на 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 все еще пытается прочитать отказавший узел. Почему это происходит? Любое возможное решение?

4

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …