ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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
Designed by Tistory.