5.3. 시스템 전체 TCP 소켓 버퍼 증가


시스템 전체 TCP 소켓 버퍼는 커널이 수신하거나 전송할 큐가 있는 데이터를 임시로 저장합니다. net.ipv4.tcp_rmem (read) 및 net.ipv4.tcp_wmem (write) 소켓 버퍼 커널 설정에는 최소, 기본값, 최대값의 세 가지 설정이 포함됩니다.

중요

너무 큰 버퍼 크기를 설정하면 메모리가 낭비됩니다. 각 소켓은 애플리케이션 요청 크기로 설정할 수 있으며 커널은 이 값을 두 배로 늘립니다. 예를 들어, 애플리케이션이 256KiB 소켓 버퍼 크기를 요청하고 1백만 개의 소켓을 여는 경우 시스템은 잠재적인 소켓 버퍼 공간에 대해서만 최대 512GB RAM(512 KiB x 1KiB)을 사용할 수 있습니다.

또한 최대 버퍼 크기에 대한 값이 너무 크면 대기 시간이 증가할 수 있습니다.

사전 요구 사항

  • 삭제된 TCP 패킷의 비율이 크게 발생했습니다.

프로세스

  1. 연결의 대기 시간을 확인합니다. 예를 들어 클라이언트에서 서버로 ping하여 평균 RTT(Round Trip Time)를 측정합니다.

    # ping -c 10 server.example.com
    ...
    --- server.example.com ping statistics ---
    10 packets transmitted, 10 received, 0% packet loss, time 9014ms
    rtt min/avg/max/mdev = 17.208/17.056/19.333/0.616 ms

    이 예에서 대기 시간은 17ms입니다.

  2. 다음 공식을 사용하여 튜닝하려는 트래픽에 대한 BDP(Bandwidth Delay Product)를 계산합니다.

    connection speed in bytes * latency in seconds = BDP in bytes

    예를 들어 17ms 대기 시간이 있는 10Gbps 연결에 대한 BDP를 계산하려면 다음을 수행합니다.

    (10 * 1000 * 1000 * 1000 / 8) * 0.017 = 21,250,000 bytes
  3. 요구 사항에 따라 /etc/sysctl.d/10-tcp-socket-buffers.conf 파일을 생성하고 최대 읽기 또는 쓰기 버퍼 크기를 설정하거나 둘 다 설정합니다.

    net.ipv4.tcp_rmem = 4096 262144 42500000
    net.ipv4.tcp_wmem = 4096 262144 42500000

    값을 바이트 단위로 지정합니다. 환경에 최적화된 값을 식별하려는 경우 다음과 같은 지문 규칙을 사용합니다.

    • 기본 버퍼 크기(초 값): 이 값을 약간만 늘리거나 최대 524288 (512 KiB)으로 설정합니다. 기본 버퍼 크기가 너무 많으면 버퍼 축소가 발생할 수 있으며 결과적으로 대기 시간이 급증할 수 있습니다.
    • 최대 버퍼 크기(세 번째 값): BDP의 이중에서 3배가 충분한 경우가 많습니다.
  4. /etc/sysctl.d/10-tcp-socket-buffers.conf 파일에서 설정을 로드합니다.

    # sysctl -p /etc/sysctl.d/10-tcp-socket-buffers.conf
  5. net.ipv4.tcp_rmem 또는 net.ipv4.tcp_wmem 매개변수에서 두 번째 값을 변경한 경우 애플리케이션을 다시 시작하여 새 TCP 버퍼 크기를 사용합니다.

    세 번째 값만 변경한 경우 자동 조정이 동적으로 적용되므로 애플리케이션을 다시 시작할 필요가 없습니다.

검증

  1. 선택 사항: iperf3을 사용하여 TCP 처리량을 테스트합니다.
  2. 패킷이 삭제될 때 사용한 것과 동일한 방법을 사용하여 패킷 드롭 통계를 모니터링합니다.

    패킷이 계속 감소하지만 더 낮은 속도로 발생하는 경우 버퍼 크기를 더 늘립니다.

Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동