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 non è supportata e non ha alcun effetto, perché l'I/O overlapped del server si basa su un pacchetto di completamento per ogni chiamata; viene mantenuta solo per compatibilità. 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.Active := true;