Serwer EPOLL

Akceptor epoll systemu Linux dla wysokiej współbieżności. Obsługuj tysiące połączeń na serwerze sgcWebSockets, używając ograniczonej puli wątków zamiast jednego wątku na połączenie, jak domyślnie robi to Indy.

IOHandler EPOLL

Wysokowydajny tryb I/O dla serwerów opartych na Indy w systemie Linux. Włącz epoll na standardowym serwerze poprzez właściwość IOHandlerOptions i skaluj daleko poza model jednego wątku na połączenie.

Klasa komponentu

TsgcWebSocketServer / TsgcWebSocketHTTPServer — włączane przez IOHandlerOptions

Mechanizm

Akceptor epoll systemu Linux z pulą wątków — tylko Linux

Platformy

Linux

Edycja

Enterprise

Ustaw typ IOHandler, gotowe

Wybierz iohEPOLL we właściwości IOHandlerOptions serwera Indy, aby przełączyć się z domyślnego modelu wątków na pulę wątków 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;

Co jest w środku

Jak działa pula wątków epoll i jak dostroić ją do swojego obciążenia.

I/O z puli wątków

Obsługuj tysiące połączeń, używając ograniczonej puli wątków zamiast jednego wątku na połączenie. Asynchroniczne (nakładane) żądania są rozdzielane po puli, zamiast dedykować wątek dla każdego gniazda.

EPOLLThreads

Wątki używane do asynchronicznych żądań EPOLL. Domyślna wartość 0 oznacza, że liczba jest obliczana na podstawie liczby procesorów. W Delphi 7 i 2007 domyślną wartością jest 32, ponieważ cpucount nie jest obsługiwane. W razie potrzeby dostosuj ją ręcznie.

WorkOpThreads

Domyślnie każde żądanie dla połączenia może działać na innym wątku puli. Ustaw WorkOpThreads, aby przypiąć każde połączenie do tego samego wątku. Wpływa to na wydajność, więc ustaw wartość większą od zera tylko wtedy, gdy wymagasz tej funkcji.

Kiedy używać

Zalecane, gdy musisz obsługiwać tysiące połączeń. Jeśli twój serwer obsługuje maksymalnie około 100 jednoczesnych połączeń, możesz pozostać przy domyślnym modelu wątków Indy.

Wykrywanie rozłączenia

EPOLL wykrywa martwe gniazdo tylko przy zapisie. Aby wywołać OnDisconnect, włącz CleanDisconnect := True na TsgcWebSocketClient lub włącz heartbeat po stronie serwera, który okresowo pinguje klientów.

Limit połączeń w systemie Linux

Zwiększ limit otwartych deskryptorów plików, aby zwiększyć liczbę jednoczesnych otwartych połączeń. ulimit -n 10000 ustawia maksymalną liczbę otwartych deskryptorów plików na 10000.

Specyfikacje i odniesienia

Wiarygodne źródła dla mechanizmu, na którym opiera się ten tryb.

Dokumentacja i wersje demo

Przejdź bezpośrednio do pomocy online, pobierz gotowy do uruchomienia projekt demo i przeczytaj pełny podręcznik.

Pomoc online — EPOLL Pełna dokumentacja funkcji z przykładami kodu dla Delphi, C++ Builder i .NET.
Projekt demo — Demos\Server Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Podręcznik użytkownika (PDF) Kompleksowy podręcznik obejmujący każdy komponent w bibliotece.

Skaluj do tysięcy połączeń w systemie Linux

Pobierz bezpłatną wersję próbną i przełącz swój serwer Delphi na pulę wątków epoll systemu Linux.