일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- Gradle
- springboot
- java
- php
- devops
- redis
- IntelliJ
- Spring Boot
- JVM
- elasticsearch
- 요리
- jsp
- linux
- javascript
- it
- MySQL
- Spring
- db
- Spring Batch
- laravel
- jenkins
- Web Server
- ReactJS
- tool
- Design Patterns
- AWS
- 맛집
- Oracle
- Git
- ubuntu
Archives
- Today
- Total
아무거나
커널 파라미터 튜닝 본문
반응형
커널 파라미터 튜닝
- 예시: 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"
- Local Port 범위 증가 (일시적으론 대체가 가능하나 결국 지속적인 요청으로 인하여 포트의 고갈이 다시 발생)
- 소켓 상태 확인 (만약 timewait가 20xxx개면 timewait 소켓이 2만개나 되는것이다)
반응형
'Infra > Linux & Unix' 카테고리의 다른 글
[Linux] Soft Limit, Hard Limit (0) | 2022.07.29 |
---|---|
tcp_max_tw_buckets 값 설정 (0) | 2021.02.11 |
[centos] 프로세스 systemd에 등록 및 서버 재부팅시에 자동 실행하게 등록 (3) | 2020.12.07 |
[ubuntu] Could not get lock /var/lib/dpkg/lock ... 오류 (0) | 2020.05.20 |
프로세스 백그라운드 실행 및 nohup (0) | 2020.04.16 |
Comments