Беспорядок кластера и проблема мультиприложения - PullRequest
2 голосов
/ 09 октября 2008

мы работаем в этом выпуске. Мы используем веб-сервис (использующий soap4r) для выполнения какого-либо поиска, и проблема возникает, когда сервер веб-сервиса не работает, и наше приложение пытается подключиться к нему. В этот момент приложение недоступно, и все клиенты заблокированы.

Что мы можем сделать, чтобы избежать этого? Можно ли заблокировать роутинг до дворняги, что он заблокирован? (Я полагаю, что прокси-сервер Apache использует алгоритм кругового алгоритма)

Спасибо Roberto

Ответы [ 3 ]

1 голос
/ 09 октября 2008

Мне кажется, что это может быть больше проблемой mod_proxy, чем проблема с Mongrel или Apache - вы устанавливаете тайм-ауты прокси, как описано здесь ?

0 голосов
/ 14 октября 2008

Вам нужно установить таймаут на ваши запросы Soap4R. Установите атрибут connect_timeout на что-то довольно маленькое. Это должно привести к обработке исключения в вашем коде, а не просто к зависанию запросов.

Вы также должны убедиться, что ваши тайм-ауты установлены в конфигурации mod_proxy_balancer.

0 голосов
/ 12 октября 2008

Используйте mod_rewrite для возврата страницы с ошибкой, которая более полезна для клиентов веб-службы, чем ошибки тайм-аута прокси-сервера Apache. Например, эта конфигурация Apache будет отображать maintence.html, если она существует. Поэтому все, что вам нужно сделать, это сбросить файл, и сервер автоматически перейдет в режим обслуживания.

# Check for maintenance file and redirect all requests
RewriteCond %{DOCUMENT_ROOT}/system/maintenance.html -f
RewriteCond %{SCRIPT_FILENAME} !maintenance.html
RewriteRule ^.*$ /system/maintenance.html [L]

Вы можете сделать его XML-файлом, настроенным с соответствующими типами компонентов, чтобы статический файл выглядел как ответ веб-службы, который, по сути, «пожалуйста, подождите 10 минут и повторите попытку», возможно, с настраиваемым временем ожидания.

Задача Capistrano web: отключить может быть полезной для вас, поскольку она принимает аргумент о том, как долго сайт будет недоступен, и помещает его в HTML-код при создании файла maintence.html.

...