Я выполнял нагрузочное тестирование для моих API REST с использованием JMeter.Как разрешить ошибку java.net.SocketException: Слишком много открытых файлов
Я получаю следующее сообщение об ошибке при ударе с 1000 одновременных пользователей:
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)
Мой сервер пытается ударить другого REST API, чтобы получить данные и обработать его и, наконец, возвращает ответ в формате JSON.
Как увеличить количество открытых файлов в Linux?
Ниже вызов творю на другой сервер
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
}
}
}
ли http://stackoverflow.com/questions/34588/how-do-i-change-the-number-of-open-files-limit-in-linux помощь? – immibis
Похоже, что файлы не закрыты. Отправьте свой код здесь. –
Возможно, вы создали много сокетов, но не закрыли() их. Я думаю, что максимальный максимум для открытых файлов и/или сокетов на машинах Linux равен 1024. –