TsgcWebSocketServer_HTTPAPIWłaściwości › FineTune

FineTune Właściwość

Niskopoziomowe ustawienia trybu jądra kształtujące sposób, w jaki http.sys kolejkuje, wysyła i finalizuje żądania.

Składnia

property FineTune: TsgcServerHTTPAPI_FineTune read FFineTune write SetFineTune;

Wartość domyślna

QueueLength=1000, SkipIOCPOnSuccess=False, OperatingMode=ompClassic, HighPerfAcceptsPerWorker=4

Uwagi

QueueLength to głębokość kolejki żądań jądra (HttpServerQueueLengthProperty); gdy kolejka jest pełna, http.sys odpowiada komunikatem 503 Service Unavailable bez angażowania trybu użytkownika — należy ją zwiększyć, aby pochłonąć skoki ponownych połączeń (do 65535). SkipIOCPOnSuccess włącza flagę FILE_SKIP_COMPLETION_PORT_ON_SUCCESS w kolejce żądań, dzięki czemu synchroniczne sukcesy są wysyłane bezpośrednio bez pakietu IOCP (ignorowane w Windows XP). OperatingMode pozwala wybrać między trybem ompClassic (jeden wątek akceptujący + PostQueuedCompletionStatus, zachowanie historyczne) a trybem ompHighPerf (wzorzec HP MSDN firmy Microsoft: brak akceptatora, ThreadPoolSize x HighPerfAcceptsPerWorker wstępnie umieszczonych asynchronicznych odbiorów w kolejce IOCP); należy go zmieniać wyłącznie przed aktywacją. HighPerfAcceptsPerWorker (domyślnie 4) rozszerza okno wstępnie umieszczonych odbiorów dla obciążeń z wysoką współbieżnością — każdy wstępnie umieszczony odbiór zajmuje bufor o rozmiarze ReadBufferSize do czasu jego zakończenia. Szczegółowe omówienie zawiera przewodnik HTTPAPI FineTune.

Przykład


oServer := TsgcWebSocketServer_HTTPAPI.Create(nil);
oServer.Host := '0.0.0.0';
oServer.Port := 8080;
// high-concurrency IoT backend
oServer.FineTune.QueueLength := 10000;
oServer.FineTune.OperatingMode := ompHighPerf;
oServer.FineTune.HighPerfAcceptsPerWorker := 8;
oServer.FineTune.SkipIOCPOnSuccess := true;
oServer.Active := true;

Wróć do Właściwości