Ho eseguito test di carico per le mie API REST utilizzando JMeter.Come risolvere l'errore java.net.SocketException: Troppi file aperti
Sto ottenendo il seguente errore quando ha colpito con 1000 utenti contemporanei:
Too many open files. Stacktrace follows:
java.net.SocketException: Too many open files
at java.net.Socket.createImpl(Socket.java:397)
at java.net.Socket.getImpl(Socket.java:460)
at java.net.Socket.setSoTimeout(Socket.java:1017)
at org.apache.http.conn.scheme.PlainSocketFactory.connectSocket(PlainSocketFactory.java:126)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:180)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:294)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:640)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:479)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:906)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:805)
at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:476)
at groovyx.net.http.HTTPBuilder.doRequest(HTTPBuilder.java:441)
at groovyx.net.http.HTTPBuilder.request(HTTPBuilder.java:390)
Il server cerca di colpire un altro REST API per ottenere i dati e di processo e, infine, restituire una risposta JSON.
Come aumentare il numero di file aperti in Linux?
seguito è la chiamata che sto facendo a un altro server
Map getResponse(Map data, String url){
HTTPBuilder httpBuilder = new HTTPBuilder(url);
httpBuilder.request(Method.POST, JSON) {
headers.'Authorization' = AppConfig.config.appKey;
headers.'Content-type' = 'application/json'
body = data
response.success = { resp, reader ->
return reader as Map;
}
response.failure = { response, reader ->
return null
}
}
}
Does http://stackoverflow.com/questions/34588/how-do-i-change-the-number-of-open-files-limit-in-linux aiuto? – immibis
Sembra che i file non siano chiusi. Inserisci il tuo codice qui. –
Probabilmente hai creato molti socket ma non li hai chiusi(). Penso che il massimo predefinito per i file aperti e/o socket su macchine Linux sia 1024. –