TsgcWebSocketServer_HTTPAPI › Proprietà › FineTune
Parametri a livello kernel che definiscono come http.sys mette in coda, distribuisce e completa le richieste.
property FineTune: TsgcServerHTTPAPI_FineTune read FFineTune write SetFineTune;
QueueLength=1000, SkipIOCPOnSuccess=False, OperatingMode=ompClassic, HighPerfAcceptsPerWorker=4
QueueLength è la profondità della coda di richieste del kernel (HttpServerQueueLengthProperty); una volta piena, http.sys risponde con 503 Service Unavailable senza coinvolgere la modalità utente — aumentarla per assorbire i picchi di riconnessione (fino a 65535). SkipIOCPOnSuccess abilita FILE_SKIP_COMPLETION_PORT_ON_SUCCESS sulla coda di richieste in modo che i successi sincroni vengano inviati inline senza un pacchetto IOCP (ignorato su Windows XP). OperatingMode sceglie tra ompClassic (singolo thread acceptor + PostQueuedCompletionStatus, comportamento storico) e ompHighPerf (pattern HP MSDN di Microsoft: nessun acceptor, ThreadPoolSize x HighPerfAcceptsPerWorker ricezioni asincrone pre-inviate sulla IOCP legata alla coda); modificare solo prima dell'attivazione. HighPerfAcceptsPerWorker (predefinito 4) amplia la finestra di ricezione pre-inviata per carichi di lavoro ad alta concorrenza — ogni ricezione pre-inviata mantiene un buffer di dimensione ReadBufferSize fino al suo completamento. Consultare la guida HTTPAPI FineTune per una discussione completa.
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;