2011-03-16 1 views
7

한 서버에서 다른 서버로 응용 프로그램을 이동하면 새 서버에서 '유명한'- "부족한 리소스로 작업 수행"을 반환합니다. 코드가 여러 메시지를 큐에 보내려고하면 프로세스가 트랜잭션 (TransactionScope) 안에 래핑됩니다. 이전 서버는 코드를 올바르게 실행하고 모든 메시지 (약 150 개)가 예상대로 대기열로 보내지지만 새 서버는 apporx 27에서 실패합니다."작업 수행에 필요한 리소스가 부족합니다." 트랜잭션에 여러 메시지가 포함 된 경우 MSMQ

이제 메시지 크기가 작고 대기열에있는 메시지 수 0입니다.

'Insufficient Resources? Run away, run away!'문서를 읽었지만 MSMQ에 대한 기계 할당량을 변경하는 방법을 잘 모르겠습니다.

System.Messaging.MessageQueueException (0X80004005) : 리소스가 부족하여이 작업을 수행 할 수

응용 로그에 다음 항목이 있습니다.

기술은 닷넷 4.0의 C# &이며, 서버 2003 R2 SP2

나는이납니다 왜 어떤 아이디어 승리인가?

+1

하는 당신은 단지 당신에게 문제를 일으키는 27 메시지를보고 할당량을 설정하는 경우는 아닙니다. 내 블로그 게시물의 항목 # 4는 조사하고 싶은 항목 일 가능성이 큽니다. –

+0

John, 고마워요. – AwkwardCoder

+0

메시지 중 하나가 4MB 제한보다 컸다는 것을 알았습니다. 한 번 처리 된 것으로 보입니다. – AwkwardCoder

답변

7

하나는 -이 분류 한 모든로 일하면 예상했다.

+0

앱 내부에서 수표를 가지고 메시지 형식 변경 사항을 확인해야합니다. http://blogs.msdn.com/b/johnbreakwell/archive/2007/08/22/why-is-there-a-4mb-limit-on-msmq-messages.aspx http : // blogs .msdn.com/b/johnbreakwell/archive/2007/06/29/the-message-format-in-msmq-4-0- 다시 테스트하기 - all-your-applications.aspx –

+0

John , 고마워, 그냥 그 일을 다시 한 번 일어날 수 없다는 것을 확인했다, 그것은 이미지의 크기와 사실 우리가 상한 제한이나 더 중요한 것은 이미지 유형 제한을 두지 않았다는 사실이었다. – AwkwardCoder

3

문제 번호 7 호 저장 공간 및 미치의 답변을 추가하기 만하면됩니다.

할당량 크기는 디스크의 실제 크기이며 큐보고 된 크기가 아닙니다 (QueueExplorer 또는 성능 모니터와 같은 응용 프로그램에서보고 됨).

당신은 당신의 대기열을 제거했다 그래서 비록 당신은 실제로 디스크에서 제거하지 않은 (그 6 시간마다 청소해야 의미) -

기본 위치는 C : \ Windows \ System32입니다 \ MSMQ \ 저장 , 또는 Mitch의 대답의 첫 번째 링크에서 가져옵니다.

정리하려면 파일을 삭제할 수 없습니다.

아래 스크립트를 사용해보십시오 (myScript.vbs로 저장). 실행을 사용하여이 명령 프롬프트에서 관리자로 :

에서 cscript myScript.vbs 우리의 파일이 약 50 MB의의 1Gb에서 제외이 후

Option Explicit 

Dim mqa 
set mqa = WScript.CreateObject("MSMQ.MSMQApplication") 

WScript.Echo "Bytes in all queues: " + CStr(mqa.BytesInAllQueues) 

mqa.Tidy 

WScript.Echo "MSMQ cleaned up" 

에도 불구하고 대기열에있는 바이트 40메가바이트을보고했다. 스레드

신용 : 당신이보고 싶은 곳 https://groups.google.com/forum/#!topic/microsoft.public.msmq.performance/jByfXUwXFw8

관련 문제