SNR#3835 리눅스 UDP 수신 시 큐 균등 분배 옵션 추가

버전: 4.0.2609.0

대용량 시스로그를 UDP로 수신할 때 일부 큐에만 부하가 몰려 로그가 누락(drop)될 수 있던 문제를 완화하는 옵션을 추가했습니다.

  • 원인: 리눅스에서 UDP 수신은 큐마다 별도 소켓을 두고, 커널의 기본 규칙(발신지 IP 주소와 포트 등을 기준으로 한 해시)으로 어느 큐가 패킷을 받을지 정합니다. 이 규칙은 같은 발신지에서 오는 트래픽을 항상 같은 큐로 보내므로, 대용량으로 로그를 보내는 발신지가 소수라면 특정 큐에 트래픽이 편중되어 그 큐만 과부하되고 나머지 큐는 여유가 있어도 활용되지 않았습니다.
  • 해결: 시스템 프로퍼티 logpresso.udp.even_distributiontrue로 설정하면, 발신지가 무엇이든 패킷을 무작위로 모든 큐에 고르게 분산합니다. 대용량 트래픽을 보내는 발신지가 소수여도 특정 큐(코어)에 부하가 몰리지 않습니다.

이 옵션은 리눅스 환경에서 큐가 2개 이상일 때만 동작합니다. 지정하지 않으면 기존과 동일하게 동작하며, 균등 분배 적용에 실패하면 기존 방식으로 대체됩니다. 윈도우·macOS 등 다른 운영체제는 이 옵션과 무관하게 기존과 동일하게 동작합니다.