-
NATS 성능 테스트.개발실 2020. 1. 12. 17:01반응형
- https://nats.io/ 에서 서버프로그램 다운받고, 테스트에 사용한 소스도 다운받음.
- 서버는 그냥 프로그램받아 실행 하고, publisher 샘플은 c#으로된것 컴파일해서 실행함.
- 2020년 01월 12일자 사이트 소스임.
- 노트북은 최신 인텔 i7 이긴한데, cpu 클럭을 2.2로 제한하여 사용하고 있음 ( boost 꺼서 )
아래 테스트는 동일한 노트북에, 서버를 실행시키고
publisher 와 subscriber 를 실행시켜놓은 상태에서 수행됨.
과연 성능이 얼마나 나오는지 확인해 보기 위해서 간략하게 수행한 결과를 캡쳐함.
publisher의 샘플은 아래와 같다.
사이트에서 샘플을 받으면 아래와 같이 코딩이 되어 있다.
아래 캡쳐에 1000번, 10000번.... 씩 천만번까지 늘려가면 수행한 결과가 있다.
using (IConnection c = new ConnectionFactory().CreateConnection(opts))
{
sw = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
c.Publish(subject, payload);
}
c.Flush();
sw.Stop();
Console.Write("Published {0} msgs in {1} seconds ", count, sw.Elapsed.TotalSeconds);
Console.WriteLine("({0} msgs/second).",
(int)(count / sw.Elapsed.TotalSeconds));
printStats(c);
}매번 접속했을때 어느정도 성능이 나오는지 확인해 보고 싶어서, 아래와 같이 코드를 변경했다.
// 아래와 같이 1번 수행할때마다, 접속을 새로이 할경우 급격히 느려진다.
// 역시, 접속에 가장 많은 부하가 걸리는걸 알 수 있다.
// 아래 캡쳐 그림에 수행 결과가 나와 있다.
// 마지막 2건을 제외하고, 10건, 100건, 1000건 수행한 내용임.sw = Stopwatch.StartNew();
for (int i = 0; i < count; i++)
{
using (IConnection c = new ConnectionFactory().CreateConnection(opts))
{
c.Publish(subject, payload);
c.Flush();
}
}
sw.Stop();
Console.Write("Published {0} msgs in {1} seconds ", count, sw.Elapsed.TotalSeconds);
Console.WriteLine("({0} msgs/second).",
(int)(count / sw.Elapsed.TotalSeconds));// 아래와 같이 접속만 할경우에는 시간이 조금 줄어드는걸 볼 수 있다.
// 1000건 수행했을때, 1.55초가 소요되었다.
// 아래 캡쳐 그림의 마지막 2건.
using (IConnection c = new ConnectionFactory().CreateConnection(opts))
{
}** 참고로, NetMQ는 tcp로 매번 접속을 새로 했을때 현재 동일한 노트북에서 초당 3000~4000건정도의 성능이 나왔음.
확실히, middle ware( 서버) 를 거치지 않고 하니 빠른것 같음.
반응형'개발실' 카테고리의 다른 글
[C#] Task.Wait()가 deadlock 걸리는 경우 (0) 2020.09.10 CMake error "Invalid escape sequence \L" (0) 2020.09.10 Quic.NET (0) 2020.01.02 .net core library reference error (0) 2019.12.12 PostgreSQL 실행 오류 (0) 2019.12.09