- Linux OS 의 경우 JEUS WebtoB에서 권고하는 파라미터 값이 있다.
- OS 자원을 효율적으로 사용하여 자원 낭비가 되지 않도록 활용해주면 보다 나은 성능을 보일 것이다.
1. 커널파라미터별 설명 및 설정방법
1.1 nofile ( max number of open files )
- 지원되는 열린 파일 수를 지정한다. 이매 개변수에 설정된 값이 너무 낮으면 파일 열기 오류, 메모리 할당 장애 또는 연결 설정 오류가 발생할 수 있다.
- 해당 값을 확인하려면 ulimit -a 명령을 사용한다.
· 기본값:SLES 9(SUSE Linux Enterprise Server 9)의 경우 기본값은 1024
· 권장값:8192이상
1.2 nproc ( max user processes )
- user에서 생성할 수 있는 최대 process 개수이며, process와 Thread를 합한 개수이다. 만약 적게 설정되어 있을 경우에 native thread를 생성할 수 없다는 에러등이 발생할 수 있다.
- 해당 값을 확인하려면 ulimit -a 명령을 사용한다.
· 기본값:SLES 9(SUSE Linux Enterprise Server 9)의 경우 기본값은 1024
· 권장값:8192이상
1.3 연결 백로그
- 수신 연결 요청의 높은 비율이 연결 실패가 될 때 값을 변경한다.
· echo 3000 > /proc/sys/net/core/netdev_max_backlog
· echo 3000 > /proc/sys/net/core/somaxconn
1.4 timeout_timewait 매개변수
- TCP/IP가 닫힌 연결을 해제하고 그의 자원을 다시 사용하기 전에 경과해야 하는 시간을 확인 하면 가장 좋다. 닫힌 연결을 재 사용하는 것이 새로운 연결을 맺는 것보다 효율적이므로 가능하다면 값을 줄여 재연결을 빠르게 하도록 한다. (TIME_WAIT 인 연결을 빨리 없애기 위함)
· echo 15 > /proc/sys/net/ipv4/tcp_fin_timeout
· 기본값:75초
· 권장값:15초
1.5 TCP_KEEPALIVE_INTERVAL
- tcp_keepalive_intvl 값은 상대로부터 활성화 상태 지속 응답이 수신되지 않을 경우 TCP/IP에서 활성화 상태 지속 전송을 반복하는 빈도를 결정한다. 응답이 없는 연속적인 활성화 상태 지속 전송 수가 tcp_keepalive_probes의 값을 초과할 경우 연결이 중단된다. 응답 시간이 길 것으로 예상될 경우 이 값을 늘려 오버헤드를 줄여야 할 수 있다. 상대가 손실되었는지 확인하는 데 소비되는 시간을 줄여야 할 경우 이 값 또는 tcp_keepalive_probes 값을 줄인다.
· echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl
· 기본값:75초
· 권장값:15초
1.6 TCP_KEEPALIVE_PROBES
- tcp_keepalive_probes 값은 TCP/IP가 기존 연결에 대한 수신확인되지 않은 활성화 상태 지속 메시지를 재전송하는 횟수를 결정한다. 네트워크 품질이 낮을 경우 이 값을 늘려 효과적인 통신을 유지해야 할 수 있다. 네트워크 품질이 높을 경우 이 값을 줄여 상대가 손실되었는지 확인하는 데 걸리는 시간을 줄여도 됩니다.
echo 5 > /proc/sys/net/ipv4/tcp_keepalive_probes
· 기본값:9초
· 권장값:5초
1.7 TCP_KEEPALIVE_TIME
- tcp_keepalive_time 값은 TCP/IP가 대기 연결이 계속 원래 상태를 유지하는지 확인을 시도하는 빈도를 제어한다. 이 시간 동안 주고 받는 통신이 있었는지를 확인하므로 네트워크의 지연이 없다면 이 변수를 줄여 쓸모 없는 연결을 없애도록 한다.
· echo 10 > /proc/sys/net/ipv4/tcp_keepalive_time
· 기본값:7200초
· 권장값:1200초
2. 커널파라미터 영구적으로 적용하는 방법
2.1 ulimit –n 값 확인 (max number of open files )
- max number of open files값이 디폴트값이 1024이며, 최소 8192 이상으로 설정 권고함.
- 아래와 같이 /etc/security/limits.conf 파일에서 수정하면 영구적으로 적용된다.
[확인방법] jeus:/home/jeus> ulimit -a : (생략) max number of open files (-n) 65536 [변경방법] /etc/security/limits.conf를 추가하는 방법이 있다. |
/etc/security/limits.conf에 아래의 내용을 추가한다. # nofile tunning - max number of open files 모든 계정에 적용 * soft nofile 65536 * hard nofile 65536 jeus 계정에 적용 jeus soft nofile 65536 jeus hard nofile 65536 |
2.2 ulimit -u값 확인 (max user processes )
- max user processes값이디폴트값이 1024이며, 최소 8192 이상으로 설정 권고함.
- 아래와 같이 /etc/security/limits.conf 파일에서 수정하면 영구적으로 적용된다.
[확인방법] jeus:/home/jeus> ulimit -a : (생략) max user processes (-u) 65536 [변경방법] /etc/security/limits.conf를 추가하는 방법이 있다. |
/etc/security/limits.conf에 아래의 내용을 추가한다. : 아래는 예제이며, tmax라는 사용자 계정에 nproc값을 설정하였다. 모든 계정에 적용 * soft nproc 65536 * hard nproc 65536 jeus 계정에 적용 jeus soft nproc 65536 jeus hard nproc 65536 |
2.3 TCP 커널 파라미터 튜닝 및 확인방법
/etc/sysctl.conf 파일을 아래와 같이 수정한다. 그리고, 바로 적용하기 위해서 root권한에서 sysctl -p 명령을 실행한다. 그러면, OS를 restart하더라도 설정한 TCP 커널 파라미터 값들이 초기화되지 않는다.
적용된 내용을 확인하는 방법은 sysctl -a 명령을 실행하면 결과값이 출력된다.
#tcp tuning net.ipv4.tcp_fin_timeout = 30 net.core.netdev_max_backlog = 3000 net.core.somaxconn = 3000 net.ipv4.tcp_keepalive_intvl = 15 net.ipv4.tcp_keepalive_probes = 5 net.ipv4.tcp_keepalive_time = 1200 |