Connectionless --> Connection-Close 로 변경시 부하 상승 정도?
글쓴이: befoed / 작성시간: 수, 2007/11/07 - 1:05오후
안녕하세요.
최근 프로젝트를 완료한것이 있었는데 서버와의 연결 방식이 TCP로
Connection을 맺고 난 뒤에 메세지만 계속 송수신 하면 되는 방식 이였습니다.
그런데 최근에 L7을 도입하려는 계획을 세우면서
메세지 하나하나 마다 Connection-Close를 반복 하라고 하네요.
즉 TCP Connect -> Message Send -> Message Recv -> TCP Close
이경우 이전에 방법보다 Connetion 과 Close에
CPU부하라던지 처리시간이 조금 더 걸릴거 같은데요..
혹시 이런것에 대하여 계산 한 자료 같은것이 나온데가 있을까요?
성능이 너무 떨어지면 방식 바꾸는 것을 고려 해봐야 하기 때문에
시작전에 이론상으로라도 계산을 해보려고 합니다.
결국 필요한건 Tcp Connection과 Close에 걸리는 부하나 시간자료가 되겠네요.
감사합니다.
Forums:
원하시는 정확한
원하시는 정확한 자료는 아니지만..
connectionless 대 connection에서 향상시키고자 하는 성능 목표가 무엇이냐를 명확히 하고 비교해야 할 문제로 보입니다.
서버들의 처리량을 늘려서 throughput과 scalability를 올리려는 것인지, 연결당 반응속도를 높이려는 것인지 등 목표에 따라 접근 방법을 달리해야 할 것 같군요. 의문을 가지시는 것처럼 connectionless로 바꾸면 메시지 하나당 처리 비용이 늘어나면서 분명 반응속도가 떨어질 겁니다. 그러나 connectionless로 가능해지는 분산처리의 효과가 목적에 더 부합한다면, 개별 연결의 반응속도는 희생할 수 있는 것이겠죠. connectionless로 바꿀 경우, stateless하게 설계되지 않은 시스템은 state를 유지하느라 성능상 큰 이득을 보지 못할 수도 있으니 이 점도 유의하셔야 할 것 같습니다.
참고로, 성능 개선을 위해서 HTTP는 Keep Alive를 1.1에서 명시했습니다.
connectionless인 HTTP를 보완하기 위해서 Keep Alive 및 pipelining을 고안한 것이죠.
http://www.io.com/~maus/HttpKeepAlive.html
http://www.w3.org/Protocols/rfc2616/rfc2616-sec8.html
http://www.mozilla.org/projects/netlib/http/pipelining-faq.html
성능과 직접 관련해서: Optimizing HTTP Server Performance
http://download.oracle.com/docs/cd/A95428_01/a86059/listener.htm
--
Every truth is in the detail.
댓글 달기