Page History
...
초당처리가 최고 10만건 정도되기때문에 GC가 엄청나게 발생합니다.
성능테스트기를 어떻게 구현되었는지 구현하고 검증하였는지 간략하게 살펴보겠습니다.
무한반사 액터구현
Code Block | ||||
---|---|---|---|---|
| ||||
using Akka.Actor; using Akka.Event; using Akka.Monitoring; namespace AkkaDotBootApi.Actor { public class InfiniteMessage { public string Message { get; set; } public uint Count { get; set; } } public class InfiniteReflectionActor : ReceiveActor { private IActorRef ReplyActor; private readonly ILoggingAdapter logger = Context.GetLogger(); public InfiniteReflectionActor() { ReceiveAsync<IActorRef>(async actorRef => { ReplyActor = actorRef; }); ReceiveAsync<InfiniteMessage>(async infiniteMessage => { Context.IncrementCounter("akka.infinite.metric"); // <-- 요녀석이 성능카운터 측정기, 지정된이름으로 메시지당 1증가합니다.(관찰자를 등록함으로 성능이 미비하게 희생될수 있으나,게의치 않겠습니다.) var reply = new InfiniteMessage { Message = infiniteMessage.Message, Count = ++infiniteMessage.Count }; if(reply.Count % 50000 == 0) // <-- 작동잘하는지 확인하기위해 5만건당 로그를 찍습니다.( 참고로 콘솔창은 해당 TPS를 못 따라가기때문에 건수마다 찍으면 안됩니다.) { logger.Info($"Count:{reply.Count}"); } ReplyActor.Tell(reply); // 카운팅 1증가된 메시지를 되돌려줍니다.(상대편이 받고 다시 받게됩니다. - 무한반사) }); } } } |
...