2009-12-13 2 views
0

Helo,Asp.Net Chat-серверный опрос

Я внедрил приложение чата с использованием кометы. запрос «зависает» на сервере, пока не появятся новые сообщения. Затем он возвращается клиенту с новыми сообщениями и снова переходит на сервер.

Моя проблема:

Для того, чтобы проверить наличие новых сообщений, я опрашивать к базе данных через каждые 600 мс. я выполнить простой запрос «выбрать ... из сообщений, где MESSAGEID> '+ lastMessageId.

Кроме того, для того, чтобы поддерживать присутствие, я обновлять базу данных очень (очень) часто с каждым пользователем„LastKeepAliveTime“.

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

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

спасибо Ярон

ответ

1

Не могли бы вы использовать общий объект кеша для сохранения последней информации? Похоже, что это небольшой объем информации, и вы можете избежать множества обновлений sql.

1

Вот как сохранить журнал транзакций выйти из-под контроля: http://support.microsoft.com/kb/873235

Варианты в этой статье, включают:

  • Выполнение усадку.
  • Изменение размера журнала.
  • Настройка автоматического расширения.
  • Изменение модели восстановления.
  • Резервное копирование журнала.

и больше.

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

0

Переключение из журнала транзакций в полном режиме в простой режим должно решить проблемы с журналом.

Однако я должен также добавить, что, как правило, рекомендуется избегать опроса, если вы можете, так как он не масштабируется. Вы можете подумать о переключении на управляемую событиями модель с помощью Service Broker или SqlDependency. Есть и другие подходы к удержаниям.

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