TsgcWebSocketServer_HTTPAPI › Propriétés › FineTune
Commandes de bas niveau au niveau du noyau qui façonnent la façon dont http.sys met en file d'attente, distribue et complète les requêtes.
property FineTune: TsgcServerHTTPAPI_FineTune read FFineTune write SetFineTune;
QueueLength=1000, SkipIOCPOnSuccess=False, OperatingMode=ompClassic, HighPerfAcceptsPerWorker=4
QueueLength est la profondeur de la file d'attente de requêtes du noyau (HttpServerQueueLengthProperty) ; une fois remplie, http.sys répond 503 Service Unavailable sans impliquer le mode utilisateur — augmentez-la pour absorber les pics de reconnexion (jusqu'à 65535). SkipIOCPOnSuccess active FILE_SKIP_COMPLETION_PORT_ON_SUCCESS sur la file d'attente des requêtes afin que les succès synchrones soient distribués en ligne sans paquet IOCP (ignoré sous Windows XP). OperatingMode choisit entre ompClassic (thread accepteur unique + PostQueuedCompletionStatus, comportement historique) et ompHighPerf (modèle HP MSDN de Microsoft : pas d'accepteur, ThreadPoolSize x HighPerfAcceptsPerWorker réceptions asynchrones pré-postées sur l'IOCP lié à la file) ; ne modifiez ce paramètre qu'avant l'activation. HighPerfAcceptsPerWorker (4 par défaut) élargit la fenêtre de réception pré-postée pour les charges à haute concurrence — chaque réception pré-postée retient un tampon de taille ReadBufferSize jusqu'à son achèvement. Consultez le guide HTTPAPI FineTune pour une discussion complète.
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;