아무거나

커널 파라미터 튜닝 본문

Infra/Linux & Unix

커널 파라미터 튜닝

전봉근 2021. 2. 11. 05:07
반응형

커널 파라미터 튜닝

  • 예시: Nginx가 9091 포트로 연결하는 과정에서 문제가 발생(하나의 서버에 Nginx + app 이 있을 때 Nginx가 Client 기준으로 되므로 포트 고갈 이슈 발생)
    • 소켓 상태 확인 (만약 timewait가 20xxx개면 timewait 소켓이 2만개나 되는것이다)
        // 소켓 상태 확인
        $ ss -s
        
        // 소켓 상태 확인(자세히)
        $ netstat -napo | grep -i time_wait
        
        // 9091 포트가 목적지인 timeout 소켓 개수 확인
        $ netstat -napo | grep -ic 9091
      
    • 해결방법
      • Local Port 범위 증가 (일시적으론 대체가 가능하나 결국 지속적인 요청으로 인하여 포트의 고갈이 다시 발생)
          $ echo "10240 65535" > /proc/sys/net/ipv4/ip_local_port_range
          
          // root 계정이 아닐 때
          $ "10240 65535" | sudo tee -a /proc/sys/net/ipv4/ip_local_port_range
        
      • 상기 포트설정에 대해 임시로 대응한 후 그 다음 방법 -> local Port 재사용 (time_wait된 소켓을 처리할때 대기하지 않고, 바로 재사용)
          // net.ipv4.tcp_tw_reuse는 항상 net.ipv4.tcp_timestamps와 함께 사용되어야하고, net.ipv4.tcp_timestamps는 반드시 1이어야만 합니다.
          // 주의할점: TW_REUSE 옵션은 통신을 하는 양측 모두 TCP timestamp 옵션이 설정되어 있어야 활성화된다는 것 입니다. 한쪽에 TCP timestamp 옵션이 활성화 되지 않은 경우, TIME_WAIT 상태의 소켓을 재사용 할 수 없습니다.
          $ sudo sysctl -w "net.ipv4.tcp_timestamps=1"
          $ sudo sysctl -w "net.ipv4.tcp_tw_reuse=1"
        
  •  

 

참고: jojoldu.tistory.com

반응형
Comments