나는 순간에 다음과 같은 아키텍처가 :디버그 누락 된 메시지 akka
로드 (부하 테스트를위한 기본 인터페이스 재생 응용 프로그램) -> 게이트웨이 (수신 메시지에 대한 REST 인터페이스 스프레이 응용 프로그램) -> 프로세서 (akka MongoDB와 호환되는 앱) -> MongoDB
내가 밀고 나가는 메시지의 수가 낮 으면 모든 것이 잘 작동합니다. 그러나 10000 개의 이벤트를 푸시하려고하면 결국 MongoDB에서 문서로 끝나게됩니다. 예를 들어, 742 메시지 나 982 메시지와 같이 임의의 위치에서 멈추고 아무 것도하지 않습니다.
그런 상황을 디버깅하는 가장 좋은 방법은 무엇입니까? 스프레이 측의 workerRouter
WS.url(server + "/track/message").post(Json.toJson(newUser)).map { response =>
println(response.body)
true
}
에 다음
for (i ← 0 until users) workerRouter ! Load(server, i)
과 : 부하 측면에서 그냥 REST 서비스로 열심히 밀어하고
pathPrefix("track") {
path("message") {
post {
entity(as[TrackObj]) { msg =>
processors ! msg
complete("")
}
}
}
}
를 프로세서 측면에서 그것은이다 기본적으로 컬렉션에 삽입됩니다. 어디서부터 시작해야 하는가?
업데이트 : Gatewat에 메시지를 작성하는 논리를 옮기려고했는데 1에서 10000 사이의주기가 있었지만 제대로 작동합니다. 그러나 스프레이와 플레이가 파이프 라인에 포함되어 있으면 인터럽트 나 임의의 위치가 중단됩니다. 이 경우 디버깅하는 방법에 대한 제안 사항은 무엇입니까?
유형 콘솔을 사용해 보셨습니까? –
아니, 아직 시도하지 않았다. 문제가 Play에 있음을 알게되었습니다. <-> 스프레이 통신. 스프레이 쪽에서 100000 레코드 만 수행하면 (HTTP 통신이 없음을 의미) 정상적으로 작동하기 때문입니다. –
아, 그래. 스프레이 사용자 ml에 대해 물어 본 적이 있습니까? –