프로그래밍/Akka.Net

[Akka.NET] Akka Message 수신 오류

Victory_HA 2024. 3. 11. 13:18

akka 메시지 큐 오버플로우

  • Inference Window Actor에서 Message Queue가 꽉 차서 수신 못했을 가능성 높습니다.

Message Buffer Size

  • `send-buffer-size`와 `receive-buffer-size`가 너무 작은 경우에는 메시지 송수신에 문제가 발생할 수 있습니다. 이 옵션들은 TCP 송수신 버퍼의 크기를 제어하며, 충분히 큰 크기로 설정되어야 합니다. 그렇지 않으면 다음과 같은 문제가 발생할 수 있습니다

1.송신 부분에서의 문제

  • Send buffer size가 작으면, 송신측에서 메시지를 버퍼에 쓰는 속도가 느려질 수 있습니다. 이는 메시지를 네트워크로 전송하는 속도를 제한하고, 따라서 메시지 전송이 지연될 수 있습니다. 또한 송신 버퍼가 가득 차면 추가적인 데이터를 버퍼에 쓸 수 없게 되며, 이는 송신 지연을 유발할 수 있습니다.

    2. 수신 부분에서의 문제

  • Receive buffer size가 작으면, 수신측에서 메시지를 버퍼에서 읽어오는 속도가 느려질 수 있습니다. 이는 수신부에서 메시지를 처리하는 속도를 제한하고, 따라서 메시지 처리가 지연될 수 있습니다. 또한 버퍼가 가득 차면 추가적인 데이터를 받을 수 없으며, 이는 수신 부분에서의 데이터 유실을 유발할 수 있습니다.

  • 따라서 send buffer size와 receive buffer size를 충분히 크게 설정하지 않으면, 송수신의 효율성과 신뢰성이 저하될 수 있습니다. 특히 큰 메시지를 다루는 경우에는 이러한 버퍼의 크기가 특히 중요합니다.

Message Frame Size

1. message-frame-size

  • 이 옵션은 하나의 메시지가 TCP 프레임 내에 들어갈 수 있는 최대 크기를 설정합니다.
  • 즉, 하나의 메시지가 TCP 프레임에 담겨 전송될 때, 해당 프레임의 크기는 이 옵션에 따라 결정됩니다.
  • 이 옵션은 개별 메시지의 크기를 제한하는 데 사용됩니다.

2. maximum-frame-size

  • 이 옵션은 단일 TCP 프레임의 최대 크기를 설정합니다.
  • TCP 프레임의 크기가 이 옵션에 지정된 값보다 크면, 해당 프레임은 여러 개의 TCP 프레임으로 분할됩니다.
  • 이 옵션은 TCP 프로토콜 자체에서 프레임의 크기를 제한하는 데 사용됩니다.

  • 주요한 차이점은 message-frame-size는 개별 메시지의 크기를 제어하고, maximum-frame-size는 단일 TCP 프레임의 크기를 제어한다는 것입니다.
  • 따라서 메시지가 TCP 프레임보다 큰 경우에는 maximum-frame-size가 적용되어 여러 개의 TCP 프레임으로 나누어 전송됩니다.

'프로그래밍 > Akka.Net' 카테고리의 다른 글

[Akka.NET] Akka.NET 가이드  (0) 2023.08.18
[Akka.NET] Stash  (0) 2023.05.30
[Akka.NET] Receive()와 ReceiveAny()  (0) 2023.05.30
[Akka.NET] Akka.NET Blog Archieve  (0) 2023.05.30
[Akka.Net] MailBox  (0) 2022.06.09