0

엑스 박스 서버 (EWS API를 통해 2010)에서 정보를 검색하고 싶습니다. 자세히 말하면 모든 excachange 사용자를 반복하고 비 개인화를 사용하여 개인 사서함을 인덱싱하는 Windows 서비스를 빌드해야합니다. 잘 작동하지만 메일 볼륨과 사용자가 많아서이 한 사용자를 수행 할 때 매우 느립니다. 인덱싱 속도는 이제 분당 약 500 개의 항목입니다.EWS 통화를 속도를 늦추지 않고 병렬 처리 할 수 ​​있습니까?

다음 호출은 내 테스트 시스템에서 약 250 밀리 초를 취합니다

PropertySet myPropertySet = new PropertySet(BasePropertySet.FirstClassProperties, ItemSchema.ParentFolderId); 
myPropertySet.RequestedBodyType = BodyType.Text; 
myPropertySet.Add(entryIdExtendedProperty); 
Item item = Item.Bind(es, itemKey, myPropertySet); 

그래서 내 생각은 병렬화을 할 수 있었다. 지금까지 나는 3 가지 방법을 시도했다 :

  1. 배경 작업자 : 사용자 당 하나의 작업자 스레드. 결과 : 효과가 없습니다. 이렇게하면 전화가 늦어지는 것 같습니다. 요약하면 전체 속도는 동일하게 유지됩니다.

  2. 별도의 EXE 프로세스 : 사용자 당 하나의 EXE. "Worker"-Exe를 작성하여 인수로 사용자와 함께 호출했습니다. IndexWorker.exe -user1
    결과 : 동일한 결과! 모든 exe의 호출 속도가 느려집니다!

  3. 별도 Windows 서비스 : 사용자 당 하나의 서비스. 결과 : 갑자기 요청이 느려지지 않았습니다. 즉, 전체 속도를 분당 500 개의 항목의 배수로 가져갈 수 있습니다 (최대 3 개 프로세스, 즉 분당 1500 개 항목). 나쁘지하지만이 질문을 나 혼자 할 수 있습니다 :

    EWS 호출이 1 감속), 2)하지만 3에 왜

)? 스레딩이 나를위한 가장 우아한 방법일까요, 내가 사용할 수있는 옵션이나 설정이 있습니까?

스로틀 정책과 EWSFindCountLimit에 대한 몇 가지 내용을 읽었습니다. 이것이 올바른 방향입니까?

답변

0

별도의 서비스로 성능이 향상되는 이유는 무엇입니까? 스로틀은 서비스 계정 수준에서 적용되므로 전화를 걸지 않아도됩니다.

+0

감사합니다. 어느 스로틀 옵션을 생각합니까? 내 모든 변화는 아무런 효과가 없었다. – MartinHappyCoding

0

문제는 제한 정책입니다. EWS 또는 RPC 작업을 제한하지 않는 서비스 계정에 대한 제한 정책을 만들어야합니다.

관련 문제