Я не системный администратор этого сервера, но я пытаюсь помочь группе системных администраторов быстро найти исправление. По этой причине у меня нет доступа ко всем файлам конфигурации сервера.
Учитывая это, вот мой вопрос:
Это касается приложения Java EE на машине Solaris с Sun Java System Web Server 6.1 и Sun Java System Application Server 8.1. Веб-сервер действует как прокси для запросов, поступающих на сервер приложений. Насколько я понимаю, он также настроен как балансировщик нагрузки, хотя он указывает только на один экземпляр приложения, поэтому кажется, что балансировать нечего.
При отправке запросов через прокси в приложение мы периодически видим фиолетовую / синюю страницу, на которой написано следующее:
Due to a temporary error the request could not be serviced.
The problem could be because:
- The server is busy.
- The server is temporarily unavailable.
You may choose to resubmit the request, but be aware that the request might
have already been processed. Depending on the type of request, you may not
want it to be processed twice. Please click here to re-submit.
Несколько замечаний:
Что могло вызвать появление этой страницы с ошибкой?
Спасибо Джефф
Обновить:
Вот конфигурация балансировщика нагрузки:
<!DOCTYPE loadbalancer PUBLIC "-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.1//EN" "sun-loadbalancer _1_1.dtd"> <loadbalancer> <cluster name="cluster1"> <instance name="instance1" enabled="true" disable-timeout-in-minutes="60" listeners="http://host.domain.com:32000"/> <web-module context-root="/applicationContext" enabled="true" disable-timeout-in-minutes="60" error-url="sun-http-lberror.html" /> <health-checker url="/applicationContext" interval-in-seconds="30" timeout-in-seconds="10" /> </cluster> <cluster name="other_cluster"> <instance name="other_host" enabled="true" disable-timeout-in-minutes="60" listeners="http://host2.domain.com:80000"/> <web-module context-root="/otherContext" enabled="true" disable-timeout-in-minutes="60" error-url="./sun-http-lberror.html" /> <health-checker url="/otherContext" interval-in-seconds="30" timeout-in-seconds="10" /> </cluster> <property name="reload-poll-interval-in-seconds" value="60"/> <property name="response-timeout-in-seconds" value="600"/> <property name="https-routing" value="false"/> <property name="require-monitor-data" value="false"/> </loadbalancer>
Я бы подозревал, что функция проверки работоспособности запущена и решает, что внутренний сервер недоступен. Возможно, попробуйте увеличить значения тайм-аута в конфигурации проверки работоспособности или полностью отключить ее. Поскольку существует только один сервер приложений для прокси, это не приведет к потере функциональности.
Казалось бы, если прокси настроен на балансировку нагрузки, как вы говорите, и есть только один сервер, на который он может указывать, то иногда балансировка нагрузки считает целевой сервер приложений слишком занятым и выдает вам эту ошибку.
Можете ли вы соотнести наблюдаемую ошибку с какой-либо нагрузкой на сервер? Есть ли способ исключить балансировку нагрузки из уравнения и протестировать? Можете ли вы настроить параметры балансировщика нагрузки / просмотреть их, чтобы убедиться, что у него очень консервативные пороги?