KEEPALIVE
-
Application 튜닝해서 성능 최적화하기커널(Kernel) 2022. 12. 26. 01:03
이번 포스팅은 redis, flask로 이루어진 애플리케이션을 system level, app level에서 어떻게 튜닝하고 최적화할 수 있는지에 대해서 알아본다. 환경 정보 - OS: ubuntu 20.04 - IP: 172.30.1.40 - redis가 설치된 환경 - 부하 테스트를 위한 siege가 설치된 환경 - net.ipv4.tcp_max_tw_buckets=30000(time wait socket 개수를 30000개로 설정) - net.ipv4.tcp_tw_reuse = 0 (time wait 소켓을 재사용하지 않음) - net.ipv4.ip_local_port_range = 30000 60000 (약 3만 개의 포트를 사용할 수 있도록 설정) - redis, flask, siege는 모두 ..
-
Linux TCP Keepalive 정리커널(Kernel) 2022. 12. 11. 22:33
환경 정보 OS: ubuntu18.04 TCP Keepalive 종단 간 커넥션을 만들기 위해서는 TCP 맺음/ 끊기가 필요하다. 하지만 통신할 때마다 TCP 연결을 맺고 끊는 방식은 비효율적이기 때문에, 만들어진 세션을 계속 사용함으로써 자원을 아끼고 애플리케이션 응답속도를 향상시킬 수 있다. 이렇게 세션을 유지하는 방법이 keepalive이다. keepalive는 클라이언트와 서버 둘 다 사용할 수 있으며, 둘 중 하나라도 있으면 세션은 유지된다. keepalive로 커넥션을 맺게 되면, 서로가 살아 있는지 확인하기 위해 아주 작은 패킷 하나를 보내는데, 둘 중 하나에서만 보내도 충분하기 때문에 keepalive를 사용하기 유리한 쪽에서 보내 세션을 유지한다. keeplialive를 사용 중인 소켓은..
-
Linux TIME_WAIT 소켓 정리커널(Kernel) 2022. 12. 11. 16:50
환경 정보 OS: ubuntu18.04 이번 포스팅은 4-way handshake에서 TIME_WAIT 소켓을 어떻게 관리하면 좋을지에 대한 내용들을 다룬다. TCP 통신 과정 tcpdump를 통해서 client(192.168.9.194) => nginx(192.168.9.75:80)로 가는 패킷을 dump한다. tcpdump -i any port 80 -A -nn -w nginx.pcap curl 192.168.9.75 Wireshark를 이용하면, 방금 nginx로 보낸 요청이 tcp 3-way handshake, http get 요청, 4-way handshake라는 단계로 이루어져 있음을 확인할 수 있다. 일단 대략적인 흐름은 다음과 같다. 3-way handshake 1. [클라이언트 => ng..