Проблемы с государственной службой ASP.Net - PullRequest
3 голосов
/ 12 февраля 2009

У нас есть веб-приложение ASP.Net 2.0, работающее в веб-ферме, которая использует службу состояния ASP.Net для хранения сеансов.

У нас периодически возникают проблемы с сервисом, и мы изменили несколько вещей, таких как machineKey в machine.config.

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

Распознает ли государственная служба время ожидания сеансов? Есть ли что-то, что мы должны делать вручную?

Редактировать: Мы отказались от службы состояний и перешли к сеансам SQL-сервера.

Чтобы ответить на приведенные ниже вопросы, кажется, что сессии продолжаются вечно до тех пор, пока служба не перестанет работать, и очень сомнительно, что какие-либо потоки oen связаны с сервером состояний. Это довольно простое веб-приложение в конце дня.

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

У MS, похоже, почти нет документации по этой теме.

Ответы [ 4 ]

1 голос
/ 12 февраля 2009

В ASP.Net время ожидания сеанса может быть настроено в web.config и machine.config. Время ожидания по умолчанию при условии, что ничего не изменилось, составит 20 минут. Файл machine.config может быть настроен на запрет переопределения, что означает, что любые изменения, указанные в файлах web.config, не будут переопределять эти параметры.

Убедитесь, что в файлах конфигурации компьютера и веб-конфигурации установлены соответствующие настройки?

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

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

0 голосов
/ 02 апреля 2009

Я уверен, что это уменьшится, но я должен сказать это.

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

Вернитесь к коду и проверьте свои предположения. Возьмите новый компьютер, зайдите на ваш сайт (создайте сеанс) и оставьте его на час. Если ваша сессия еще жива, значит что-то не так. Создайте новое веб-приложение, в котором только одна страница сообщает о возрасте текущего сеанса, и попробуйте то же самое. Вы должны обнаружить, что через час (по умолчанию 20 минут) сеанс больше не действителен. Теперь у вас есть система, которая работает, как ожидалось, и система, которая не работает, оба используют один и тот же сервер сеансов, так что вы можете исключить это как проблему, теперь начните прорабатывать код / ​​конфигурацию и посмотреть, где вы могли бы поддерживать ее ( или предотвращение тайм-аута).

Здесь, между прочим, 'допустимая' конфигурация сеанса. Если у вас нет ничего похожего на это, скорее всего, вы нашли проблему:

<sessionState 
   mode="StateServer" 
   stateConnectionString="tcpip=10.1.1.1:55455" 
   cookieless="false" 
   timeout="20" />

Также убедитесь, что вы не переопределяете ваш web.config с вашим machine.config, чтобы увеличить время ожидания.

0 голосов
/ 02 апреля 2009

По моему опыту, мы обнаружили, что собственный сервер состояний или даже использование SQL Server для сеансов - очень страшный сценарий, поскольку у обоих есть проблемы.

Я думаю, вы можете исследовать другие продукты, чтобы достичь абсолютного лучшего. Свободным вариантом будет Velocity , но он все еще не выпущен.
И еще один комплексный, но проверенный продукт будет (очень дорогой на самом деле) NCache

Взгляните и посмотрите, что выглядит лучше для вас.

Что касается SQL Server, ваш сервер очень скоро умрет, если у вас будет достаточное количество обращений (я полагаю, у вас уже есть несколько обращений, которые привели вас к веб-ферме или вы делаете это просто ради избыточности) *

0 голосов
/ 19 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...