Очередь почты ColdFusion останавливается

Наш CF-сервер иногда останавливает обработку почты. Это проблематично, так как многие из наших клиентов зависят от этого.

В Интернете мы нашли предложения, в которых упоминаются файлы с нулевым байтом в недоставленной папке, поэтому я создал задачу, которая удаляет их каждые три минуты. Однако остановка произошла снова.

Я ищу предложения по диагностике и устранению этой проблемы.

  • Стандарт CF 8
  • Win2k3

Добавлено:

  • В почтовом журнале нет ошибок во время сбоя очереди
  • Мы не пытались запустить это без использования очереди из-за большого количества отправляемых нами писем

Добавлено 2:

  • Похоже, что это не проблема ни с одним из файлов в папке спула. Когда мы перезапускаем почтовую очередь, кажется, что все они обрабатываются правильно.

Добавлено 3:

  • Мы не используем вложения.
13 голосов | спросил Ben Doom 18 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 18 Sep 2008 21:52:44 +0400 2008, 21:52:44

6 ответов


0

Что мы в итоге сделали:

Я написал две запланированные задачи. Сначала проверяется, есть ли в папке очереди какие-либо сообщения старше, чем n минут (в настоящее время установлено значение 30). Второй сбрасывает очередь каждую ночь во время низкого использования.

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

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

<cfdirectory action="list" directory="c:\coldfusion8\mail\spool\" name="spool" sort="datelastmodified">
<cfset restart = 0>
<cfif datediff('n', spool.datelastmodified, now()) gt 30>
    <cfset restart = 1>
</cfif>
<cfif restart>
    <cfset sFactory = CreateObject("java","coldfusion.server.ServiceFactory")>
    <cfset MailSpoolService = sFactory.mailSpoolService>
    <cfset MailSpoolService.stop()>
    <cfset MailSpoolService.start()>
</cfif>
ответил Ben Doom 9 FebruaryEurope/MoscowbMon, 09 Feb 2009 18:11:24 +0300000000pmMon, 09 Feb 2009 18:11:24 +030009 2009, 18:11:24
0
  

Мы не пытались запустить это без использования очереди из-за большого количества отправляемых нами писем

Несмотря на это, вы пытались отключить буферизацию? Я видел, как почта отправлялась со скоростью 500-600 сообщений за полсекунды, и это на каком-то дерьмовом сервере. При стандартном тайм-ауте страницы в 60 секунд это будет ~ 72 000 электронных писем, которые вы можете отправить до истечения срока ожидания страницы. Вы отправляете более 72 000 одновременно?

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

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

ответил Adam Tuttle 26 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 26 Sep 2008 20:48:16 +0400 2008, 20:48:16
0

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

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

Я надеюсь, что поможет.

ответил Dan Roberts 21 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowSun, 21 Sep 2008 00:12:55 +0400 2008, 00:12:55
0

У нас фактически идентичная установка, 32-битный CF8 на Win2K3.

Мы использовали решение Бена около года назад, и это определенно помогло автоматически перезаписывать письма, которые застряли.

Однако в последнее время без особой причины один из наших 7 веб-серверов решил переходить в это состояние при каждой попытке электронной почты.

  

Исключительная ситуация при настройке параметров почтового сервера.   Это исключение было вызвано:   coldfusion.mail.MailSessionException:   Возникла исключительная ситуация при настройке почтового сервера   Параметры ..

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

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

Мы обнаружили, что проблема связана с антивирусным сканером McAfee, после обновления его для исключения каталога c: \ ColdFusion8 проблема исчезла.

Надеюсь, это поможет.

ответил Tariq Ahmed 11 Mayam12 2012, 01:37:30
0

Есть проблема с почтовым диспетчером и сообщениями с вложениями в CFMX 8, которая была исправлена ​​с помощью одного из исправлений. По крайней мере, в версии 8.0.1 это должно было быть исправлено.

ответил ale 25 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowThu, 25 Sep 2008 05:12:05 +0400 2008, 05:12:05
0

В коде Бена Доума есть ошибка. В любом случае, спасибо, код отличный, и мы используем его сейчас на одном из наших серверов с установленным CF8, но: если каталог (\ spool) пуст, код завершается ошибкой (ошибка: значение Date, переданное в функцию date, DateDiff не указан или недействителен.) Это потому, что, если spool объекта запроса пуст (spool.recordcount EQ 0), функция datediff создает ошибка.

мы использовали это сейчас:

<!--- check if request for this page is local to prevent "webusers" to request this page over and over, only localhost (server) can get it e.g. by cf scheduled tasks--->
<cfsetting requesttimeout="30000">
<cfset who = CGI.SERVER_NAME>
<cfif find("localhost",who) LT 1>
    security restriction, access denied.
    <cfabort>
</cfif> 

<!--- get spool directory info --->
<cfdirectory action="list" directory="C:\JRun4\servers\cfusion\cfusion-ear\cfusion-war\WEB-INF\cfusion\Mail\Spool\" name="spool" sort="datelastmodified">
<cfset restart = 0>
<cfif spool.recordcount GT 0><!--- content there? --->
    <cfif datediff('n', spool.datelastmodified, now()) gt 120>
        <cfset restart = 1>
    </cfif>
</cfif>
<cfif restart><!--- restart --->
    <cfsavecontent variable="liste">
        <cfdump var="#list#">
    </cfsavecontent>    
    <!--- info --->
    <cfmail to="[email protected]" subject="cfmailqueue restarted by daemon" server="xxx" port="25"  from="xxxx" username="xxxx" password="xxx" replyto="xxxx">
    1/2 action: ...try to restart. Send another mail if succeeded!
    #now()#

    Mails:
    #liste#
    </cfmail>

    <cfset sFactory = CreateObject("java","coldfusion.server.ServiceFactory")>
    <cfset MailSpoolService = sFactory.mailSpoolService>
    <cfset MailSpoolService.stop()>
    <cfset MailSpoolService.start()>

    <!--- info --->
    <cfmail to="[email protected]" subject="cfmailqueue restarted by daemon" server="xxx" port="25"  from="xxxx" username="xxxx" password="xxx" replyto="xxxx">
    2/2 action: ...succeeded!
    #now()#
    </cfmail>

</cfif>
ответил user3576573 26 PMpSat, 26 Apr 2014 21:38:05 +040038Saturday 2014, 21:38:05

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132