TsgcWebSocketServer_HTTPAPIÖzellikler › FineTune

FineTune Özellik

http.sys'in istekleri nasıl kuyruğa aldığını, dağıttığını ve tamamladığını şekillendiren düşük seviyeli kernel-mode ayarları.

Sözdizimi

property FineTune: TsgcServerHTTPAPI_FineTune read FFineTune write SetFineTune;

Varsayılan Değer

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

Remarks

QueueLength, çekirdek istek kuyruğu derinliğidir (HttpServerQueueLengthProperty); dolduğunda, http.sys kullanıcı modunu dahil etmeden 503 Service Unavailable yanıtı verir — yeniden bağlanma patlamalarını emmek için onu yükseltin (65535'e kadar). SkipIOCPOnSuccess, istek kuyruğunda FILE_SKIP_COMPLETION_PORT_ON_SUCCESS özelliğini etkinleştirir, böylece eşzamanlı başarılar bir IOCP paketi olmadan satır içi gönderilir (Windows XP'de yoksayılır). OperatingMode, ompClassic (tek kabul edici iş parçacığı + PostQueuedCompletionStatus, tarihsel davranış) ve ompHighPerf (Microsoft'un MSDN HP deseni: kabul edici yok, kuyruğa bağlı IOCP'de ThreadPoolSize x HighPerfAcceptsPerWorker önceden gönderilmiş eşzamansız alımlar) arasında seçim yapar; yalnızca etkinleştirmeden önce değiştirin. HighPerfAcceptsPerWorker (varsayılan 4), yüksek eşzamanlılık iş yükleri için önceden gönderilen alım penceresini genişletir — önceden gönderilen her alım, tamamlanana kadar ReadBufferSize boyutunda bir arabellek tutar. Tam tartışma için HTTPAPI FineTune kılavuzuna bakın.

Örnek


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;

Özelliklere Dön