Назад | Перейти на главную страницу

Что может вызвать конфигурация Sun Web или App Server «Из-за временной ошибки запрос не может быть обработан»

Я не системный администратор этого сервера, но я пытаюсь помочь группе системных администраторов быстро найти исправление. По этой причине у меня нет доступа ко всем файлам конфигурации сервера.

Учитывая это, вот мой вопрос:

Это касается приложения 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.

Несколько замечаний:

  1. Как я уже упоминал, мы периодически видим этот экран, может быть, один запрос из каждых 100-500.
  2. Когда мы действительно видим экран, он незамедлительно возвращается. Другими словами, это не похоже на тайм-аут.
  3. При обновлении страницы отобразится фактическая страница приложения. Другими словами, не похоже, что произошел временный сбой сервера в те 1-2 секунды между загрузкой страницы с ошибкой, обновлением и реальной загрузкой страницы.
  4. Я не думаю, что сеть представляет собой проблему, поскольку веб-серверы и серверы приложений находятся на одном хосте.
  5. Когда появляется эта страница с ошибкой, в журналах веб-сервера появляется следующая ошибка: [02 / Feb / 2009: 15: 37: 32] warning (19614): reports: lb.runtime: ROUT1014: Неидемпотентный запрос / контекст приложения не может быть повторен. [02 / фев / 2009: 15: 37: 32] информация (19614): отчеты: lb.runtime: RNTM3003: Ошибка при обслуживании запроса: выбранный сервер не может обслуживать

Что могло вызвать появление этой страницы с ошибкой?

Спасибо Джефф

Обновить:

Вот конфигурация балансировщика нагрузки:

<!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>

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

Казалось бы, если прокси настроен на балансировку нагрузки, как вы говорите, и есть только один сервер, на который он может указывать, то иногда балансировка нагрузки считает целевой сервер приложений слишком занятым и выдает вам эту ошибку.

Можете ли вы соотнести наблюдаемую ошибку с какой-либо нагрузкой на сервер? Есть ли способ исключить балансировку нагрузки из уравнения и протестировать? Можете ли вы настроить параметры балансировщика нагрузки / просмотреть их, чтобы убедиться, что у него очень консервативные пороги?