Domanda

Abbiamo un servlet che occupa più memoria virtuale sul server mentre scarica i file. Per questo motivo, vorremmo limitare le richieste simultanee a questo server, ad esempio vorremmo solo 10 richieste elaborate in parallelo. Vorremmo che altre richieste attendessero in coda.

È possibile creare un pool di thread personalizzato e configurarlo per definire il numero massimo di thread e assegnarlo a questo servlet per gestire questo scenario? Stiamo utilizzando il server WebLogic 9.2. O c'è qualche altro approccio migliore per farlo? Apprezzo qualsiasi pensiero.

Potremmo configurare un servlet separato e configurare il pool di thread per consentire solo il numero X di richieste simultanee, tutte le altre richieste verrebbero messe in coda per utilizzare il servlet successivo disponibile. Questo approccio genera un errore di timeout? Potete per favore condividere maggiori dettagli in merito? Grazie

http: // download .oracle.com / docs / cd / E13222% 5F01 / wls / docs92 / perform / appb% 5Fqueues.html

È stato utile?

Soluzione

  

È possibile creare un pool di thread personalizzato e assegnarlo a questo servlet per gestire questo scenario? Stiamo utilizzando il server WebLogic 9.2. O c'è qualche altro approccio migliore per farlo? Apprezzo qualsiasi pensiero.

Sì, questo è possibile. Invece di utilizzare il gestore lavori di automazione predefinito (a partire da Weblogic 9.x, le code di esecuzione sono sostituite dai gestori del lavoro per i pool di thread 1 ), è possibile creare un gestore del lavoro con vincoli come il limite massimo di thread e possibilmente la capacità . È quindi possibile assegnare un Servlet a un responsabile di lavoro specifico utilizzando wl-dispatch-policy del file descrittore di distribuzione weblogic.xml .


1 Nota che è ancora possibile abilita il modello di pool di thread di WebLogic 8.1 e per utilizzare le code di esecuzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top