2009-03-09 4 views
0

У нас возникла проблема с компонентом массовой почты, который я написал в течение длительного времени, и точный характер проблемы, как ее измерить и как ее смягчить оставались неуловимыми.SMTP через ASP.Net 2 Задача размера сеанса

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

В основном этот виджет массовой почтовой рассылки просто отправляет около 25 тыс. Электронных писем по одному электронному письму за раз в список рассылки. Это наше очень предпочтительное сообщение, потому что это означает, что каждый получатель получает почту, адресованную им лично, поэтому мы довольны этим циклом.

Что нас не устраивает, так это то, что если вы просто оставите программу для обработки после примерно 6-килобайтовых электронных писем, мы получим сообщение об ошибке «Максимальный размер сеанса», и он не отправит больше писем.

В настоящее время у нас нет реального способа узнать, в какую почтовую почту это произошло, наш единственный метод дросселирования основан на работе над догадками и включает отправку 1к электронной почты каждые 90 секунд с помощью ручной кнопки.

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

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

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

Есть ли у кого-нибудь какие-либо проблемы с землей и практические рекомендации по отслеживанию .Net 2.0 генерируемых писем из исходного сервера?

ответ

1

Почему сессия растет? Вы делаете это в течение срока действия запроса?

Я предполагаю, что вы «отслеживаете», сохраняя информацию о письмах, отправленных в состоянии сеанса. Я бы написал трекер, который может записывать информацию отслеживания в внешнее хранилище, например, xml-файлы на диске или базу данных sql.

Если часть отслеживания не является причиной возникновения проблем, но одноразовая электронная почта (или их отправка), вы можете попытаться отправить их по электронной почте и BCC, а не отправлять их по одному время. Слепые углеродные копии всегда обращаются лично и не сообщают получателю, что они были отправлены по почте. Вам просто нужно выяснить предел количества писем, которые вы можете отправить через BCC.

Третий вариант заключается в том, чтобы в вашем веб-приложении отказаться от необходимости создавать эти письма в общем хранилище и иметь приложение Windows Service (или приложение с запланированными задачами), которое регулярно проверяет новые задания электронной почты и обрабатывает их вне вашего веб-приложения ... возможно, даже вне хост-сервера вашего веб-приложения. Конечно, такого рода вещи не будут работать на серверах с общим хостингом ...

+0

Что касается сеанса, я просто сообщаю, что говорит сообщение об ошибке. Хотя вы дали мне интересную мысль. Третий вариант звучит как зритель. – 2009-03-10 09:55:50

+0

Возможно, простое приложение, выполняемое как запланированное задание, - ваш лучший выбор. – Will

0

Мы делаем то же самое, но делаем 500 писем за минуту в минуту. Первые 500 отправляются, затем страница перезагружается, и работа продолжается со следующими 500.

Это займет немного времени для регистрации и хранения информации о текущей очереди в 500, что позволяет использовать тайм-ауты, ранние перезагрузки и т. Д., Но она работает (по электронной почте, вероятно, 10 000 или около того электронных писем в любую ночь) для пары лет.

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

  • Нет связанных вопросов^_^