Couchdb провалил тестовый набор в Linux

Я пытался установить CouchDB на моем виртуальном сервере webfusion. Я следовал последним инструкциям на форуме webfusion (см.: http://forum.webfaction.com/viewtopic.php?id=2355), и он работает (просто). Футон очень вялый, и я получаю 502 ошибки. В любом случае, когда я запускаю набор тестов, он не проходит сразу несколько тестов. Поддержка webfaction была отличной, но у меня нет опыта erlang для интерпретации журналов ошибок. Может кто-нибудь помочь мне узнать, что может быть не так?

Результат набора тестов: основы, all_docs, вложения, attachments_multipart, attachment_names, compact, config, конфликты, delayed_commits, design_docs, design_options

все ошибки:

Возникло исключение: {"ошибка":"неизвестно", "причина":"неверный шлюз \ u000d \ u000a \u000d\u000a502 плохой шлюз \ u000d \ u000a

Nginx\u000d\u000a\u000d\u000a\u000d\u000a"}

кроме 'компактный; который также имеет:

 Ошибка подтверждения: xhr.responseText == "Это кодированный в base64 текст". Ошибка подтверждения: xhr.getResponseHeader("Content-Type") == "text/plain" 

Я в тупике.

Кто-нибудь знает, что это означает?

Алабама

1 ответ

У меня тоже была эта проблема. Похоже, это проблема связи nginx-CouchDB. В середине "базового" теста есть команда для перезапуска CouchDB. После этого журнал nginx выглядит так:

2010/12/02 03:21:09 [error] 708#0: *132 upstream prematurely closed connection while reading response header from upstream, client: 70.205.249.118, server: localhost, request: "POST /_restart HTTP/1.1", upstream: "http://127.0.0.1:5984/_restart", host: "79.125.20.163", referrer: "http://79.125.20.163/_utils/couch_tests.html?script/couch_tests.js"
2010/12/02 03:21:10 [error] 708#0: *132 connect() failed (111: Connection refused) while connecting to upstream, client: 70.205.249.118, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5984/", host: "79.125.20.163", referrer: "http://79.125.20.163/_utils/couch_tests.html?script/couch_tests.js"
2010/12/02 03:21:10 [error] 708#0: *132 connect() failed (111: Connection refused) while connecting to upstream, client: 70.205.249.118, server: localhost, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:5984/", host: "79.125.20.163", referrer: "http://79.125.20.163/_utils/couch_tests.html?script/couch_tests.js"

Это означает, что сразу после сброса CouchDB активно отказывается от соединений, и нам просто нужно сделать еще один или два запроса.

Решением было добавить что-то подобное в конфигурации nginx, чтобы он делал 5 запросов, прежде чем сообщать пользователю об ошибке (обратите внимание на часть max_fails):

upstream  couchdb  {
    server   127.0.0.1:5984       max_fails=5  fail_timeout=30s;
}

server {
    ...
        location / {
            proxy_pass http://couchdb;
            proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

Надеюсь это поможет.

Обновление: после небольшого тестирования этот метод тоже не помог. nginx делает запросы слишком быстро. Может быть, у кого-то достаточно знаний для разработки?

Другие вопросы по тегам