Sto utilizzando Jersey 1.4, la classe ApacheHttpClient
e Apache MultiThreadedHttpConnectionManager
per gestire le connessioni. Per lo HttpConnectionManager
, ho impostato staleCheckingEnabled su true, maxConnectionsPerHost su 1000 e maxTotalConnections su 1000. Tutto il resto è predefinito. Siamo in esecuzione in Tomcat e facciamo connessioni a più host esterni utilizzando il client Jersey.Socket in CLOSE_WAIT da Jersey Client
Ho notato che dopo un breve periodo di tempo inizierò a vedere i socket in uno stato CLOSE_WAIT associati al processo Tomcat. Alcuni monitoraggi con tcpdump mostrano che gli host esterni sembrano chiudere la connessione dopo un po 'di tempo ma non si chiudono da soli. Di solito ci sono alcuni dati nella coda di lettura del socket, spesso 24 byte. Le connessioni utilizzano https e i dati sembrano essere crittografati, quindi non sono sicuro di cosa sia.
Ho controllato per essere sicuro che gli oggetti ClientRequest che vengono creati siano chiusi. Le prese in CLOSE_WAIT sembrano essere riciclate e non stiamo esaurendo le risorse, almeno in questo momento. Non sono sicuro di cosa stia succedendo sui server esterni.
La mia domanda è, è normale e dovrei essere preoccupato?
Grazie,
John
Posso vedere qualche codice? Ho appena sentito parlare di questo e vorrei vedere come hai configurato MultiThreadedHttpConnectionManager in Jersey ... – markthegrea
Spiacente, non posso pubblicare il codice. –