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 делает запросы слишком быстро. Может быть, у кого-то достаточно знаний для разработки?