Linux Kernel Parameter
# 커널이 할당할 수 있는 파일 핸들 최대값 조정 (max 65535) # 128M -> 8192 # 256M -> 13684 # 512M -> 32768 # 1G -> 65536 # 2G -> 131072 fs.file-max = 65535 # 동시 사용자가 몰릴 경우에 대비해 received host대한 충분한 backlog 수치를 늘려주는 것이 좋음 net.core.netdev_max_backlog=2500 # 소켓 수신 큐 최대값과 기본값 조정. # 일반적인 경우의 대용량 Serving을 위한 설정. 기본 값이 변경되는 경우 아파치 등의 웹서버 설정을 특별히 해줄 필요는 없다고 함. net.core.rmem_default = 65536 net.core.rmem_max = 8388608 # 소켓 출력 큐 최대값과 기본값 조정. # 일반적인 경우의 대용량 Serving을 위한 설정으로 더 적은 시스템콜로 웹페이지를 네트웍 스택에 보낼 수 있음. # 기본 값이 설정되는 경우 아파치 등의 웹서버 설정을 특별히 해줄 필요는 없다고 함. net.core.wmem_default = 65536 net.core.wmem_max = 8388608 # TCP layer의 수신 버퍼를 상향 조정 # 대량의 데이터를 클라이언트로 전송하는 경우에는 이 값을 추천. net.ipv4.tcp_rmem = 4096 87380 8388608 # TCP layer의 송신 버퍼를 상향 조정 대량의 데이터를 클라이언트로 전송하는 경우에는이 값을 추천. net.ipv4.tcp_wmem = 4096 65536 8388608 # The tcp_mem variable defines how the TCP stack should behave when it comes to memory usage. # TCP스택이 메모리를 어떻게 사용할지에 대한 메모리 페이지 단위 설정. # 순서대로 min pressure max설정이다. tcp_wmem과 tcp_rmem설정에 따른 적정한 크기를 할당한다. # IA32는 4KB가 한 개의 페이지이다. # ※ 이 설정 값은 네트워크 성능에 영향을 큰 영향을 줄 수 있으므로 주의가 요구된다. # {min} {pressure} {max} net.ipv4.tcp_mem = 4096 4096 4096 # 유저 파일 핸들에 할당되지 않은 커넥션에 대해 몇번을 제거 시도를 할 것인지를 정하는 파라메터. # 하이로드의 웹서버인 경우 이 값을 7이하로 떨어뜨릴 경우 “TCP: too many of orphaned sockets”와 # “Out of socket memory”에 대한 커널 메시지가 나타날 수 있다. net.ipv4.tcp_orphan_retries = 7 # 클라이언트의 소켓으로부터 RST을 받아 TIME_WAIT 상태로 가는 경우 즉시 소켓을 종료시킴. # 웹서버와 같은 유형의 서버에서는 소켓을 열고 닫는 회수가 많으므로 이 쪽을 튜닝하면 # net.ipv4.tcp_max_tw_buckets 값을 줄이는 설정을 해도 됨. 파일 서버와 같은 경우는 이 값을 기본값으로 놓는 것이 좋음. net.ipv4.tcp_rfc1337 = 1 # SPECWeb99의 권고는 인트라넷 네트워크에서만 사용하는 네트웍인 경우 selective acknowledgements를 off 시킴으로써 성능이 향상된 다고 함. SPECWeb99의 테스트는 완전한 1-2hop 이내의 네트워크 토폴로지를 가정하였으므로 일반적으로는 이 부분을 on으로 해주는 좋다 는 권고. # ※ 외부 접속을 받는 네트워크에선 on으로 해야함. net.ipv4.tcp_sack = 1 # SPECWeb99의 권고는 인트라넷 네트워크에서만 사용하는 서버인 경우 timestamps 생성를 off 시킴으로써 성능이 향상됨. # SPECWeb99의 테스트는 완전한 1-2hop 이내의 네트워크 토폴로지를 가정하였으므로 일반적으로는 # 이 부분을 on으로 해주는 좋다는 권고. tcp_window_scaling 부분 참조 # ※ 외부 접속을 받는 네트워크에선 on으로 해야함 net.ipv4.tcp_timestamps = 1 # tcp_sack와 tcp_timestamps의 경우와 같은 튜닝 관점이다. # 단, rmem, wmem과 tcp_rmem, tcp_wmem의 버퍼 상향 조정시에는 # tcp_timestamps와 함께 on 설정을 해주어 윈도크기를 조절하도록 하는 것이 좋다고 권고함. net.ipv4.tcp_window_scaling = 1 # KEEPALIVE 시간을 줄이면 비정상적으로 stale된 접속을 해제하는 시간을 줄일 수 있음. net.ipv4.tcp_keepalive_time = 1300 # 소켓의 listen backlog 값 조정으로 동시접속이 몰릴 경우에 대한 최적화 net.ipv4.tcp_max_syn_backlog = 8192 # FIN_TIMEOUT 대기 시간을 줄이면 끊어진 소켓의 소거 시간을 줄일 수 있음. net.ipv4.tcp_fin_timeout = 30 # 새 접속에서 사용할 수 있는 포트의 사용 가능 범위를 확장. net.ipv4.ip_local_port_range = 16384 65536 # DOS 공격 중의 하나인 SYN flooding 공격을 막아주도록 On으로 변경. # 방화벽으로부터 보호되고 있어도 위 공격에 대한 대비책이 없다면 켜주는 것이 좋으나 성능에 영향이 있으며, # 이 부분을 켜주는 것 보다는 tcp_ net.ipv4.tcp_syncookies = 1 # off상태면 두 네트웍 인터페이스간 IP 패킷 전달을 해제합니다. net.ipv4.ip_forward = 0 # 웹서버와 같은 유형의 서버에서 high load에서는 사용자 소켓의 종료 진행에서 # TIME_WAIT 상태가 되는데 이 것의 양이 60초간 지속 된다는 것을 가정하고 이 값을 충분히 높여 주는 것이 좋음. net.ipv4.tcp_max_tw_buckets = 2000000 # Linux 2.4에서 주의해야할 점. # 주어진 경로에 대한 ssthread 값이 라우팅 테이블에 캐시되는데 이 값으로 윈도 값 설정이 감소하게 되면 # 이후 10분간의 모든 다른 커넥션에 이 값을 사용하게 되므로 웹서버등에서는 켜주는 것이 좋을 것 같다. net.ipv4.route.flush = 1 # 가상 메모리 하부 시스템의 성능 향상. # 가상 메모리 및 버퍼 메모리 관리에 대한 성능을 높여줌. vm.bdflush = 100 1200 128 512 15 5000 500 1884 2 # 브로드캐스브, 멀티캐스트 주소에 ICMP ECHO 요청을 막음. smurf 공격 방지용 # net.ipv4.icmp_echo_ignore_broadcasts = 1 # SRR 옵션으로 패킷들을 수용한다. IP source routing 을 제어한다. 보통 호스트로 # 향하게 하는 것을 권장한다. TRUE (router) FALSE (host) # net.ipv4.conf.all.accept_source_route = 0 #net.ipv4.conf.all.send_redirects=0 #net.ipv4.conf.all.accept_redirects=0 # DOS 공격 중 하나인 IP Spoofing을 Source Route 를 검사해서 방지합니다. # 방화벽에서 막아주거나 외부에 노출되어 있지 않은 서버 등 공격의 우려가 없다면 끄는 것이 좋음. # 알 수 없을 경우 on으로 설정해둡니다. # RFC182에 따른 IP spoof 방지를위한 설정(커널 2.2이상 버전) # net.ipv4.conf.eth0.rp_filter = 1 net.ipv4.conf.lo.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.all.rp_filter = 1 # Log Spoofed Packets, source Routed Packets, Redirect packetes # ip주소를 스푸핑한다고 예상되는 경우 로그에 기록하기 # net.ipv4.conf.all.log_martians = 1 # 공유 메모리 최대값 조정 kernel.shmmax=3800000000 # 세마포어 최대값 조정 # 의미: {배열당 최대 SEM 수}{최대SEM시스템넓이}{SEMOP호출당최대OP수}{최대배열수} # 공식: {최대SEM시스템넓이} = {최대 배열 수} x {배열당 최대 SEM 수} (DB2 튜닝문서에 따름) kernel.sem=1000 32000 32 512 # 메시지큐 시스템 크기 조정 kernel.msgmni = 1024
- 시스템 튜닝 (서버, 클라이언트)
# vi /etc/sysctl.conf net.ipv4.tcp_sack = 0 net.ipv4.tcp_rmem = 4096 87380 16194304 net.ipv4.tcp_wmem = 4096 87380 16194304 net.core.rmem_max = 16194304 net.core.wmem_max = 16194304 net.core.rmem_default = 87380 net.core.wmem_default = 87380 net.core.optmem_max = 87380 net.core.netdev_max_backlog = 300000 net.ipv4.tcp_adv_win_scale = 1
- offload 기능 비활성화 (서버, 클라이언트)
# ethtool -K eth0 gso off # ethtool -K eth2 gso off # ethtool -K eth0 lro off # ethtool -K eth2 lro off
로그인하면 댓글을 남길 수 있습니다.