2016-09-08 5 views
0

많은 양의 작업을 수행하고 메시지 전달을 통해 진행 상황을보고하는 Akka 기반 응용 프로그램이 있습니다. "근로자"는 자신의 "매니저"에게 일을 마치면 더 많은 작업을 제공하고 동시에 "관리자"는 진행 상황을 추적하는 행위자 심판에게 메시지 (화재 및 잊음)를 보냅니다.Akka - 대기중인 메시지, 자주 소모되지 않는 메시지

"manager"와 "workers"는 모두 디스패치 스레드 풀을 공유하고 "tracker"액터는 자신의 작은 스레드 풀에 있습니다. 또한 진행률의 기본 모듈을 사용하여 게시되는 물건의 양을 조절할 수 있으므로 매회 20 개의 작업 항목이 완료 될 때만 메시지를 보냅니다. 이는 소수의 일자리에 대해서는 괜찮은 것으로 보입니다. 추적기 액터가 메시지를 받고 인스턴스 변수를 업데이트하고 진행 데이터를 검색하는 요청에 응답하는 것을 봅니다.

그러나 수천 개의 작업 항목을 처리 할 때 진행 카운트가 잠시 올라간 다음 완전히 멈추는 것처럼 보입니다. 메시지가 추적기 액터에 의해 선택되지 않고 모두 채워지는 것처럼 메시지 대기열. "작업자"운영자가 모든 리소스를 아마도 사용하고 있습니까? 각 디스패처는 일정한 규칙으로 메시지를 전달할 수 있어야한다고 생각했습니다. 각 디스패처에서 "공정성"구성에 대해 혼란스럽게 시도했지만 아무런 차이가없는 것처럼 보입니다.

나는 이것에 대한 누구의 생각을 소중하게 생각합니다.

+0

마침내 메시지가 다시 시작되는 경우가 있습니다. 마침내 몇 개의 메시지가 수집되었지만 중지 된 것처럼 보입니다. 몇 분 후에 다시 메시지 몇 개를 처리하기 시작합니다. – AndyMoose

+0

근로자와 트래커에 대해 사용하는 운영자 유형은 무엇입니까? – Tim

+0

또한 근로자가 다른 수단 (예 : 통나무)을 통해 진전을 보이고 있습니까? – Tim

답변

0

나는 일부 주변을 바꾸고 "관리자"를 별도의 배차원에 배치하고 모든 것이 다시 움직이기 시작했습니다. 나는 그것을 통해 109,000 개의 일자리를 아무 문제없이 달렸다.

관련 문제