From NETWORK PROGRAMMING FOR MICRSOFT WINDOWS
대용량 데이터 처리(High Throughput)
대량의 데이터를 송수신하는 것을 목적으로 하며 해당 서버의 예로 FTP서버가 있다.
대용량 데이터 처리로 인하여 동시에 연결할 수 있는 연결 수가 제한될 수 있는 문제점이 있으며 아래와 같은 방법이 해결책이 될 수 있다.
제한된 수의 연결을 처리하는 동안 제한된 수의 연결을 처리하지 않고 큐에 넣어 대기시키게하며 제한된 수의 연결을 처리한 후에 대기하고 있던 연결을 꺼내어 처리한다. (뭐, 일종의 처리 연결수를 제한하는 전략인듯.. 책의 내용은 Accept를 위한 queue에서 대기시키라는 건지 별도의 User Level queue를 만들라는 건지 애매 모호함)
overlapped I/O를 이용하여 구현시 주의점
1) overlapped I/O는 locked pages와 non-paged pool을 필요로 하기에 overlapped I/O 수를 제한하여야 함
2) 서버에서 각 연결별로 I/O작업이 발생되는 수를 체크해야 한다. 클라이언트가 악의적으로 대량의 데이터를 계속적으로 보내여 I/O작업이 누적돼 서버에 불필요한 부하가 걸리거나 최악의 상황에서 서버에 locked pages나 non-paged pool이 부족해지는 상황을 막는 메카니즘이 있어야 한다.
대량 연결(High Connections)
대량의 연결을 처리하는 것을 목적으로 하며 해당 서버의 예로 메신저 서버가 있다.
overlapped I/O를 이용하여 구현시 주의점
1) 연결당 일정량의 I/O를 할당할 경우 소비되는 locked pages와 non-paged pool의 양이 많다.
-> 연결당 처리능력을 희생(축소)하여 연결 처리수를 늘려야한다.
2) 이와 같은 방법은 아래와 같은 방법으로 해결할 수 있다.
0바이트 overlapped I/O 전략
0 byte overlapped I/O Pending한다. 완료통지시 Non-Blocking I/O(쓰레드블록을 막는다)를 이용하여 WSAEWOULDBLOCK에러가 나올 때까지 데이터를 가져온다.
'서버 프로그래밍' 카테고리의 다른 글
TCP Protocol MindMap (1) | 2009.06.02 |
---|---|
대역폭 지연 곱 (Bandwidth-delay product) (0) | 2009.06.02 |
TCP ECN(Explicit Congestion Notification) (0) | 2009.06.01 |
IP(Internet Protocol) Note #1 (0) | 2009.05.27 |
Overlapped I/O Note #1 (0) | 2009.05.17 |
IOCP 실행순서 보장 번역 오류!... (1) | 2009.05.14 |
TCP Note #2 Gracefully Close(..) (0) | 2009.05.13 |
TCP & UDP Note #1 (0) | 2009.05.12 |