2009-11-04 3 views
0

У нас есть интенсивная обработка данных для определенных функций, и мы хотели бы ограничить количество параллельных запросов для этой обработки. Мы можем настроить с помощью «Work Managers» в WebLogic и установить ограничение на количество потоков для этого сервлета.Ограничение потоков работ менеджеров и страница не могут быть отображены

Например, если мы установим максимальный предел потока как 3, тогда, если имеется 10 параллельных запросов; 7 запросов находятся в очереди. Могут быть ситуации, когда эти запросы, ожидающие очереди, могут обрабатываться до 30-40 минут. Мы провели простое тестирование, и полученная страница не может быть отображена из-за таймаута через 15 минут и получила сообщение через 1 час.

Кто-нибудь знает, существует ли в WebLogic параметр для увеличения/уменьшения таймаута и не может отображаться страница?

Оцените, есть ли у кого-нибудь мысли об этом.

+0

Привет, я читал, что тайм-аут по умолчанию для IE6 составляет 60 секунд. Означает ли это, что пользователь увидит, что страница не может быть отображена, если ответ не получен от сервера в течение 60 секунд? – 2009-11-05 02:09:13

ответ

0

1) Используйте другой инструмент (не браузер), такой как WGET, где вы можете контролировать параметр таймаута (--timeout).

2) Почему вы используете HTTP? Используйте сообщения, управляемые beans, и отправляйте JMS сообщение на это, и не заботятся о тайм-аутах.

+0

Спасибо за ответ. Вышеупомянутая обработка начинается, когда пользователь нажимает кнопку, и мы не будем возражать против ожидания пользователя во время обработки. Итак, хотелось бы проверить, сделан ли запрос серверу, а сервер занимает около 30 минут, тайм-аут браузера? – 2009-11-04 22:02:02

+0

У вас хорошие пользователи :). Я бы не дождался 30 минут;). Почему бы вам просто не отправить JMS-сообщение при нажатии кнопки и позволить пользователю делать другие вещи? И у вас также может быть другая страница, на которой пользователь может указать статус задания. –

+0

Что касается тайм-аута, я думаю, что это зависит от многих факторов не только от браузера, но и от потенциального тайм-аута вашего маршрутизатора, сетевого драйвера и т. Д. Например, в FireFox вы можете установить время ожидания с помощью этих параметров * network.http.connect.timeout * и * network.http.request.timeout * (http://forums.techguy.org/web-email/391515-setting-timeout-firefox.html). –

1

Означает ли кто-нибудь, есть ли в WebLogic параметр для увеличения/уменьшения таймаута и не может отображаться страница?

Возможно, что-то есть, но я на самом деле не проверял, так как это было бы плохим советом. Если вы ищете это, вы пытаетесь решить неправильную проблему здесь. Браузер просто не создан для длительного процесса, как тот, который вы описываете (> 30mn), даже если вы не возражаете против ожидания пользователя (не говоря уже о том, что он может обновить страницу и поставить в очередь все больше и больше заданий).

Итак, правильный ответ здесь на мой взгляд: используйте асинхронизм, это идеальный вариант использования. Когда пользователь нажимает на кнопку, отправьте сообщение JMS в очередь (или создайте задание кварца) и отправьте пользователю страницу с идентификатором запроса, чтобы он вернулся позже. Когда обработка выполнена, обновите статус где-нибудь и сделайте статус/результат доступным для пользователя. На самом деле, опыт пользователя будет лучше делать это, и вы столкнетесь с меньшими проблемами, чем с браузером.

0

Возможно, кварц может делать то, что вам нужно? Запустить работу и зарегистрироваться на ней, как вам нужно?

Смежные вопросы