IOCP Server

고동시성을 위한 Windows I/O Completion Ports 수용기예요. sgcWebSockets 서버를 IOCP IOHandler로 전환하면 연결당 하나의 스레드 대신 작고 고정된 스레드 풀로 수천 개의 연결을 처리할 수 있어요.

IOCP IOHandler

표준 sgcWebSockets 서버를 위한 Windows 전용 I/O Completion Ports 모드예요. IOHandlerOptions로 활성화하면 기본 Indy의 연결당 스레드 모델을 훨씬 뛰어넘어 확장할 수 있어요.

컴포넌트 클래스

TsgcWebSocketServer / TsgcWebSocketHTTPServerIOHandlerOptions로 활성화해요.

메커니즘

Windows I/O Completion Ports (Windows 전용)

플랫폼

Windows

에디션

Enterprise

IOHandler 타입을 설정하면 끝

IOHandlerOptions 속성으로 가서 IOHandler Type을 iohIOCP로 선택하세요. 스레드 수를 0으로 두면 CPU 수에 따라 자동으로 크기가 정해져요.

Server.IOHandlerOptions.IOHandlerType := iohIOCP;
Server.IOHandlerOptions.IOCP.IOCPThreads := 0;
Server.IOHandlerOptions.IOCP.WorkOpThreads := 0;
Server->IOHandlerOptions->IOHandlerType = iohIOCP;
Server->IOHandlerOptions->IOCP->IOCPThreads = 0;
Server->IOHandlerOptions->IOCP->WorkOpThreads = 0;
Server.IOHandlerOptions.IOHandlerType = iohIOCP;
Server.IOHandlerOptions.IOCP.IOCPThreads = 0;
Server.IOHandlerOptions.IOCP.WorkOpThreads = 0;

내부 구성

IOCP IOHandler가 어떻게 동작하고 어떻게 튜닝하는지 알아보세요.

스레드 풀 I/O

Indy가 기본으로 동작하는 연결당 하나의 스레드 방식 대신, 제한된 스레드 풀로 수천 개의 연결을 처리해요.

IOCPThreads

IOCP 비동기(오버랩) 요청에 사용하는 스레드예요. 0이면 프로세서 수에 따라 자동으로 크기가 정해져요. Delphi 7과 2007에서는 cpucount를 사용할 수 없어 기본값이 32예요.

WorkOpThreads

필요할 때 연결을 동일한 스레드에 고정해요. 요청은 일반적으로 풀 전체에 분산되므로, 한 연결의 각 요청이 서로 다른 스레드에서 실행될 수 있어요. 이 기능이 필요할 때만 0보다 큰 값을 설정하세요. 성능 측면의 트레이드오프가 있어요.

언제 사용하나

수천 개의 연결을 처리해야 할 때 권장돼요. 서버가 동시 연결 100개 안팎에서 한계에 다다른다면 기본 Indy 스레드 모델로도 충분해요.

연결 끊김 감지

IOCP는 쓰기 시에만 끊긴 소켓을 감지해요. TsgcWebSocketClient에서 CleanDisconnect를 활성화하거나 서버 측 하트비트를 사용하면, 서버가 연결 끊김을 인지하고 OnDisconnect가 발생해요.

사양 & 참고 자료

이 모드가 기반하는 메커니즘의 공인된 원문 자료예요.

문서 & 데모

기능 레퍼런스로 바로 이동하고, 바로 실행 가능한 데모 프로젝트를 받고, 평가판을 다운로드하세요.

온라인 도움말 — IOCP sgcWebSockets 서버에서 Windows I/O Completion Ports를 활성화하는 기능 레퍼런스예요.
데모 프로젝트 — Demos\Server 바로 실행 가능한 예제 프로젝트예요. sgcWebSockets 패키지에 포함돼 있어요 — 아래에서 평가판을 다운로드하세요.
사용자 매뉴얼 (PDF) 라이브러리의 모든 컴포넌트를 다루는 종합 매뉴얼이에요.

수천 개의 연결까지 확장하세요

무료 평가판을 다운로드하고 Delphi 서버를 Windows IOCP IOHandler로 전환하세요.