EPOLL Server
고동시성을 위한 Linux epoll 수용기예요. Indy가 기본으로 동작하는 연결당 하나의 스레드 방식 대신, 제한된 스레드 풀로 sgcWebSockets 서버에서 수천 개의 연결을 처리하세요.
고동시성을 위한 Linux epoll 수용기예요. Indy가 기본으로 동작하는 연결당 하나의 스레드 방식 대신, 제한된 스레드 풀로 sgcWebSockets 서버에서 수천 개의 연결을 처리하세요.
Linux의 Indy 기반 서버를 위한 고성능 I/O 모드예요. IOHandlerOptions 속성으로 표준 서버에서 epoll을 활성화하면 연결당 스레드 모델을 훨씬 뛰어넘어 확장할 수 있어요.
TsgcWebSocketServer / TsgcWebSocketHTTPServer — IOHandlerOptions로 활성화해요
Linux epoll 스레드 풀 수용기 — Linux 전용
Linux
Enterprise
Indy 서버의 IOHandlerOptions 속성에서 iohEPOLL을 선택하면 기본 스레드 모델에서 epoll 스레드 풀로 전환돼요.
Server.IOHandlerOptions.IOHandlerType := iohEPOLL;
Server.IOHandlerOptions.EPOLL.EPOLLThreads := 0;
Server.IOHandlerOptions.EPOLL.WorkOpThreads := 0;
Server->IOHandlerOptions->IOHandlerType = iohEPOLL;
Server->IOHandlerOptions->EPOLL->EPOLLThreads = 0;
Server->IOHandlerOptions->EPOLL->WorkOpThreads = 0;
Server.IOHandlerOptions.IOHandlerType = iohEPOLL;
Server.IOHandlerOptions.EPOLL.EPOLLThreads = 0;
Server.IOHandlerOptions.EPOLL.WorkOpThreads = 0;
epoll 스레드 풀이 어떻게 동작하고 워크로드에 맞게 어떻게 튜닝하는지 알아보세요.
연결당 하나의 스레드 대신 제한된 스레드 풀로 수천 개의 연결을 처리해요. 비동기(오버랩) 요청은 각 소켓에 스레드를 전담시키지 않고 풀 전체에 분산돼요.
EPOLL 비동기 요청에 사용하는 스레드예요. 기본값 0은 프로세서 수에 따라 개수가 계산된다는 의미예요. Delphi 7과 2007에서는 cpucount가 지원되지 않아 기본값이 32예요. 필요할 때 수동으로 조정하세요.
기본적으로 한 연결의 각 요청이 서로 다른 풀 스레드에서 실행될 수 있어요. 모든 연결을 동일한 스레드에 고정하려면 WorkOpThreads를 설정하세요. 성능에 영향을 주므로 이 기능이 필요할 때만 0보다 큰 값을 설정하세요.
수천 개의 연결을 처리해야 할 때 권장돼요. 서버가 최대 동시 연결 100개 안팎을 처리한다면 기본 Indy 스레드 모델을 그대로 사용해도 돼요.
EPOLL은 쓰기 시에만 끊긴 소켓을 감지해요. OnDisconnect를 발생시키려면 TsgcWebSocketClient에서 CleanDisconnect := True를 활성화하거나, 주기적으로 클라이언트를 핑하는 서버 측 하트비트를 활성화하세요.
동시에 열 수 있는 연결 수를 늘리려면 열린 파일 디스크립터 한도를 높이세요. ulimit -n 10000은 열린 파일 디스크립터의 최대 개수를 10000으로 설정해요.
이 모드가 의존하는 메커니즘의 공인된 원문 자료예요.