사용자 도구

사이트 도구


web:performance

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
web:performance [2012/02/21 10:48]
kwon37xi
web:performance [2021/10/19 22:51] (현재)
kwon37xi [keepalive]
줄 1: 줄 1:
 ====== Web 성능 향상 ====== ====== Web 성능 향상 ======
 +  * [[http://stevesouders.com/examples/rules.php|High Performance Web Sites]] 
 +  * [[https://developers.google.com/speed/pagespeed/|Google PageSpeed]] : 웹 성능 최적화 측정 및 개선사항 추천 
 +  * [[https://developers.google.com/speed/docs/best-practices/rules_intro|Google Web Performance best practices]]
   * [[http://sixrevisions.com/web-development/decrease-webpage-load-times|10 Tips for Decreasing Web Page Load Times]]   * [[http://sixrevisions.com/web-development/decrease-webpage-load-times|10 Tips for Decreasing Web Page Load Times]]
   * [[http://blog.mozilla.com/webdev/2011/10/25/go-speed-racer/|From 80 Seconds to 6: Optimizing Our Asset Compression]]   * [[http://blog.mozilla.com/webdev/2011/10/25/go-speed-racer/|From 80 Seconds to 6: Optimizing Our Asset Compression]]
   * [[http://www.mnot.net/cache_docs/|Caching Tutorial]]   * [[http://www.mnot.net/cache_docs/|Caching Tutorial]]
 +  * [[http://channel9.msdn.com/Events/Build/2012/3-132|50 performance tricks to make your HTML5 apps and sites faster]]
 +  * [[http://www.webpagetest.org/|WebPageTest]] 지역별 브라우저별 웹 페이지 반응속도 측정
 +  * [[https://hpbn.co/|High Performance Browser Networking]]
 +
 +===== 성능 향상 기법 =====
 +  * 이미지 등의 정적 리소스는 4대 정도의 서버에 분할해서 서빙하는 것이 좋다(예: img1.xxx.com, img2.xxx.com, ...). 4대를 초과하면 DNS Lookup시간 때문에 오히려 성능이 떨어질 수 있다.
 +
 +===== keepalive =====
 +  * 기본적으로 keepalive를 켜서 커넥션을 재활용하는 것이 좋다.
 +  * [[aws:alb|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.1329788919.txt.gz · 마지막으로 수정됨: 2012/02/21 10:48 저자 kwon37xi