사용자 도구

사이트 도구


web:performance

Web 성능 향상

성능 향상 기법

  • 이미지 등의 정적 리소스는 4대 정도의 서버에 분할해서 서빙하는 것이 좋다(예: img1.xxx.com, img2.xxx.com, …). 4대를 초과하면 DNS Lookup시간 때문에 오히려 성능이 떨어질 수 있다.

keepalive

  • 기본적으로 keepalive를 켜서 커넥션을 재활용하는 것이 좋다.
  • AWS ALB 같은 Proxy 서버에서 Idle 커넥션을 특정 시간에 끊어버릴 수 있다. Http Client 는 Proxy 서버의 idle 타임아웃보다 더 적게 커넥션을 idle 상태로 유지하게 설정해야 한다. 안그러면 Proxy 가 끊어버린 커넥션을 재사용하려들다가 에러가 발생한다.
    • 이에 따라, HTTP Client Keep Alive X → ALB Keep Alive Timeout Y → nginx/was Keep Alive timeout Z 가 있을 때 X < Y < Z 여야 한다.
  • 최근 웹서비스들 중 웹 애플리케이션은 CSS, Image, JS등을 직접 서빙하지 않고 CDN에 맡기고, 웹 애플리케이션 자체는 컨트롤러 역할만 하는 경우가 많다.
    • 이 경우 keepalive를 길게 가져가면 웹 브라우저를 통한 사용자 접속이 커넥션 소켓만 점유할 뿐 실질적인 이득이 없다.
    • 사용자가 컨트롤러를 호출하는 것은 주로 마우스 클릭등이 발생했을 때인데 이 시간이 길기 때문이다.
    • 따라서 웹 애플리케이션 특징에 따라 keepalive를 끄거나 매우 짧게 가져가는 것이 유리할 때도 있다.
  • API 처럼 지속적 호출이 거의 확실한 경우에는 keepalive를 켠다.
  • 무작정 keepalive 유지 시간을 정하지 말고, 성능 테스트를 해가며 살펴볼 것.
web/performance.txt · 마지막으로 수정됨: 2021/10/19 22:51 저자 kwon37xi