первый раз постер так легко на меня.WCF - WebHttpBinding - RESTful - Performance Issue
В настоящее время я пытаюсь решить проблему производительности при попадании на мой веб-сервис после одного минута бездействия. Буквально спустя минуту после того, как пользователь THAT не попадет в веб-службу, следующий вызов займет 15 секунд, прежде чем на самом деле удастся выполнить операцию. Если вы продолжаете делать случайные (не то же самое действие службы, что и вы, ребята, не думаете, что это «кеширование» вызова), операция службы вызывает немедленное возвращение службы (менее секунды).
Вот некоторые «тайминги» я решил взять, чтобы вы могли видеть, как я пришел в одну минуту бездействия:
- 2:04 PM
- 2:16 вечера --15 секунд
- 2:21 PM --15 секунд
- 2:24 PM --15 секунд
- 2:25 вечера --15 секунд
Опять же, если вы нажмете веб-службу непрерывно без одного минута бездействия, тогда ВСЕ методы вернутся менее чем за секунду.
Вот некоторые подробности, касающиеся моего веб-сервиса:
- WCF, WebHttpBinding, RESTful, используя HTTPs.
- Основная аутентификация + пользовательская аутентификация с использованием IDispatchMessageInspector. Аутентификация происходит при каждом вызове (кроме страницы Initializer.aspx).
- Создана пользовательская страница Initialization.aspx, которая вызывается каждую ночь после повторного использования пула приложений. На этой странице хранится куча глобальных данных, используемых всеми пользователями, а также запуск этой компиляции.
- Приложение Pool ТОЛЬКО перерабатывает каждую ночь в 2 часа ночи. Рабочие потоки никогда не уничтожаются, поскольку тайм-аут отключен.
Я слышал о ReliableSession, но поскольку установка предполагает, что звучит так, это будет работать только для PerSession, а не PerCall.
Есть ли способ разрешить это или я придерживаюсь прибегать к «pinging» серверу каждые 45 секунд, используя операцию фиктивного обслуживания?