ColdFusion 메일 큐 정지 처리
-
01-07-2019 - |
문제
우리의 CF 서버는 가끔 처리를 중단 메일입니다.이로 인해 문제가 발생합니다 많은 우리의 클라이언트에 따라 달라집니다.
우리가 발견한 제안을 온라인으로 포함 바이트에서 파일을 폴더에 배달할 수 없는,그래서 내가 만들어하는 작업을 제거하시오.그러나,정지가 발생했 다.
내가 찾는 것에 대한 제안을 진단하고 이 문제입니다.
- CF8 표준
- Win2k3
추가:
- 에 오류가 있 mail 로그에 시간을 큐에 실패할
- 우리가 시도하지 않을 실행하지 않고 이를 사용하는 큐,으로 인해 대량의 메일 우리가 보내기
추가 2:
- 그것은 보이지 않는 문제가 되는 어떤 파일에서 스풀 폴더에 있습니다.때 우리는 다시 시작 메일 큐,그들은 모든 것 프로세스습니다.
추가 3:
- 우리가 사용하고 있지 않은 첨부 파일이 있습니다.
해결책
우리가 무슨 일을 했:
내가 쓴 두 개의 예약된 작업입니다.첫 번째 있는지를 확인했었다는 메시지 큐에서 폴더 이상 나 n minues(현재 설정이 30).두 번째는 리셋 큐 동안 매일 밤 저렴한 사용합니다.
불행하게도,우리가 결코 발견되었는 이유 큐 오 레일이지만,그만 일어나는 것을 보면 우리가 사용하는 환--기타 메일 서버는 우리가 시도하지 않는 이 문제를 해결합니다.
편집: 하의 게시물 내 코드,그래서 여기 하나를 다시 시작할 때 오래된 메일을 발견:
<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>
다른 팁
우리가 시도하지 않을 실행하지 않고 이를 사용하는 큐,으로 인해 대량의 메일 우리가 보내기
에 관계 없이,당신 도 끄 감?본 메일 전송 속도 500-600 메시지에서 두 번째로,그것의 종류에 대한시 서버입니다.표준 페이지의 제한 시간은 60 초에는 것~72,000 이메일로 보낼 수 있습니다 전에 이 페이지는 시간을 갖는다.당신은 더 많이 보내보다 72,000 니다.
대체 사용하기 전에 CFMail 이 빠르게 되었을 구축하는 사용자 정의 스풀러.대신 이메일을 발송하는 비행에 저장하고,데이터베이스 테이블.다음 설정을 예약된 작업을 보내에 몇백의 메시지와 자체 일정을 변경한 후에,까지 테이블이 비어 있습니다.
우리는 예약된 작업을 하루에 한 번 실행;고 다시 자체 일정을 다시 실행에서는 몇 분이면 테이블이 비어있지 않음.는 문제가 없었습니다.
당신이 노력했지만 우회 큐예?(CF 관리자,아래의 메일 스풀을 설정"체크 해제 스풀 메일 메시지를 전달합니다.")
나는 같은 문제 때로는 그렇지 않으로 인해 제로 바이트 파일이지만 그 문제가 자니다.그것은 것처럼 하나 또는 두 개 파일(가장 오래된 폴더에)것입니다 큐에서 처리합니다.내가 무엇을 하는 이동의 모든 메시지를 들고 폴더에 다시 시작 메일 큐를 복사 메시지를 다시장에 덩어리에서 시간에서 역순으로 그들을 기다린 이동하고 움직이 좀 더니다.는 메시지를 들고 있었다 최대 큐에서 별도의 폴더를 조사한 후자입니다.
할 수 있습 프로그래밍 방식으로 이렇 큐를 중지, 이동,가장 오래된 파일을 다른 폴더,다음 시작 메일 큐 우를 보내기 시작이 성공적으로 검사하여 폴더에 파일을 계산과 날짜를 입력하기만 하면 됩니다.을 제거하는 경우 가장 오래된 파일을 작동하지 않을 반복,이전까지 프로세스의 모든 잘못된 메일의 파일을 이동하고 전송이 계속 성공하였습니다.
데 도움이 됩니다.
우리가 실제로 동일한 설치,32 비트 CF8 에 Win2K3.
우리는 고용이 벤의 솔루션에 대해 전년,그리고 특정을 도왔 자동 재 큐는 이메일을 얻을 붙어 있습니다.
그러나 최근을 위해 특별한 이유 중 하나는 우리의 7 웹 서버를 얻을하기로 결정했으로 이 상태로 모든 이메일을 시도합니다.
예외가 발생했을 때 설정하는 메일 서버를 매개 변수입니다.이외에 의해 발생했:coldfusion.메일입니다.MailSessionException:예외가 발생했을 때 설정하는 메일 서버 매개 변수..
우리 각자의 웹 서버를 동일한 클론의 각각 기타,왜 그만 일어나고 있는 것 중 하나가 기괴한입니다.
다른 품목을 참고 우리는 스크립트는 컴퓨터를 재부팅합의 중간에서 밤으로 인해 JRUN 의 메모리 관리 문제입니다.의 행동 재부팅이 보였을 시작하는 문제입니다.이후 다시 시작하의 CF 서비스는 다음 명확하고,기계가 잘 될 때까지 그것이 다시 부팅 again.
우리가 발견되는 문제와 관련 McAfee 바이러스 스캐너가,후 업데이트를 제외할 c:\ColdFusion8 디렉터리입니다.
는 희망 도움이 됩니다.
할 수 있는 문제를 메일 스풀러와 메시지와 첨부 파일에서 CFMX8 는 수정되었으로 하나의 핫픽스에 대해 설명합니다.버전 8.0.1,적어도가 있어야 했다는 고정됩니다.
에서 버그가 있 벤 운명의 코드입니다.어쨌든 감사합니다 벤 코드고 우리는 그것을 이용에 지금의 우리의 서버와 CF8 설치되어 있지만:는 경우 디렉토리(\spool)은 빈 코드 실패(오류가:날짜 값을 전달되는 날짜를 기 날짜 지정되어 있지 않거나 잘못되었습니다.) 는 경우 쿼리를 개체 스풀은 빈(spool.recordcount EQ0),날짜 함수는 오류가 있습니다.
우리가 사용이 지금:
<!--- 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="x@y.com" 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="x@y.com" subject="cfmailqueue restarted by daemon" server="xxx" port="25" from="xxxx" username="xxxx" password="xxx" replyto="xxxx">
2/2 action: ...succeeded!
#now()#
</cfmail>
</cfif>