Веб-сервер HTTP: агент не завершил работу в течение заданного срока

#lotus-notes #lotus-domino #lotusscript

#lotus-notes #lotus-domino #lotusscript

Вопрос:

У меня есть веб-приложение, которое создает веб-страницы с использованием agent (оно написано на LS, и мы используем [print html] для вывода HTML), и время от времени я вижу ошибку, как показано ниже.

 02-11-2020 10:00:18   HTTP Web Server: Agent did not complete within configured time limit [/path-to-database.nsf/web?openagent] Anonymous
02-11-2020 10:00:18   HTTP Server: Execution time limit exceeded by Agent '(Web)|Web' in database '/path-to-database.nsf'. Agent signer 'signer name'.
  

В результате HTTP-задача застряла, поэтому я должен перезапустить ее, но это означает, что я должен постоянно ее отслеживать.

Похоже, это не связано с временем выполнения агента, иначе у меня постоянно возникала бы эта проблема. Активность, похоже, также не является проблемой, согласно Google Analytics, это около ~ 50 активных пользователей.

Я сомневаюсь, что [Задачи сервера диспетчер агентов] поможет, потому что агент выполняется под HTTP-задачей.

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

Обновить

Версия Domino 11.0

Агент запускается анонимным посетителем и выполняет некоторые относительно сложные вычисления для построения HTML-ответа (циклы и поисковые запросы присутствуют, но я уверен, что все циклы завершаются правильно, без бесконечного запуска).

Я предполагаю, что настройки для HTTP-агентов находятся в этом разделе (так что 2 минуты).

Веб-агенты и веб-службы

Запускать веб-агенты и веб-службы одновременно? Включено

Время ожидания веб-агента и веб-служб: 120 секунд

В общем случае запрос занимает от 300 мс до 1 секунды, однако есть несколько тяжелых страниц продолжительностью 1-5 секунд (но не более 10 секунд и более).

Я замечаю ошибку только тогда, когда мы получаем более 50 активных пользователей (которые открывают новые страницы и, таким образом, запускают агент).

Я думаю, Ричард прав, и должно быть какое-то условие, когда агент зависает (возможно, связано с обновлением представлений или каким-либо фоновым процессом).

На данный момент я просто перезапускаю HTTP, чтобы исправить эту проблему (на некоторое время).

Поэтому мой вопрос можно было бы перефразировать на:

Что может вызвать задержку агента, создающего веб-страницу (с учетом того, что она связана с 50-100 активными пользователями).


Большое спасибо 🙂

Комментарии:

1. Почему вы так уверены, что на самом деле это не превышает лимит? Что делает агент? Есть ли в нем какие-либо циклы и что происходит в этих циклах? Какая версия Domino? Каков заданный срок для веб-агентов на сервере? Если вы обычно приходите через десять секунд после ограничения, тогда может быть вполне разумно полагать, что оно превышает ограничение «время от времени».

2. @richardSchwarts спасибо за комментарий, я обновил сообщение.

3. Интересно, связано ли это каким-то образом с ограничением на активные потоки, настроенные в соответствии с интернет-протоколами — HTTP. В описании говорится, что сервер ставит в очередь новые запросы, если вы достигнете предела, но мне интересно, не прерывает ли он поток, когда агент приостанавливает ожидание перестройки или завершения ввода-вывода и т. Д., А Затем он находится в нижней части очереди. Если у вас больше пользователей, чем разрешено потокам, некоторые экземпляры агента могут проводить много времени в режиме ожидания в ожидании открытия слота. И, возможно, это время ожидания все еще учитывается в отношении срока.

4. @RichardSchwartz это очень хороший момент, он установлен на 400, чего может быть недостаточно при высокой активности пользователей. Я проверю это сегодня и дам вам знать.

5. @richardSchwartz Я пытался поиграть с настройками — не повезло. Я подозреваю, что существуют некоторые ограничения, когда мы говорим о запуске агентов через HTTP. Я попытался смоделировать 50 пользователей с пустыми агентами — и со временем это стало медленным.