У меня небольшой тест с приложением hello world на JavaEE.Я использовал wildfly 10 для развертывания этого приложения и использую почтальон для выполнения api hello world .И затем я использую команду lsof для проверки списка открытых файлов wildfly. Я видел увеличение числа в каждом запросе , см. Следующую картинку.
Тогда я пытаюсь с более новой версией дикой бабочки 12 или выше, этого не происходит ![enter image description here](https://i.stack.imgur.com/Tujj7.jpg)
мой код API ![enter image description here](https://i.stack.imgur.com/ccJWz.jpg)
Я думаю, что эта ошибка исправлена в более новой версии, но есть ли способ обойти эту проблему в wildfly 10 или 11. В настоящее время по какой-то причине я не могу перейти на новую версию.
Я использую докер в окне для тестирования этого и двух изображений openshift / wildfly-100-centos7, openshift / wildfly-120-centos7
== Обновленная информация после расследования глубоко
Я обнаружил одну проблему моего приложения, которая привела к ситуации слишком много открытых файлов.
На нашем сервере приложений wildfly содержит около 15war файлов, и я использую Client client = ClientBuilder.newClient (); для создания rest api-клиента между каждым модулем, но после этого я не закрываю этот клиент должным образом, тогда это приведет к слишком большому количеству открытых файлов.
При небольшом количестве файла warтрудно привести кпроблема, но с большим количеством военных файлов легко решить эту проблему.
Я использую эту команду для поиска wildfly pid ps aux |grep wildfly затем я использую следующую команду, которая показывает мне номерной файл, открытый в wildfly sudo watch 'ls / proc / 12750 / fd |wc -l ' 12750 - это pid для wildfly.
Затем я проверяю максимальное количество открытых файлов в wildfly с помощью команды sudo cat / proc / 12750 / limit равно 4096 ![enter image description here](https://i.stack.imgur.com/07o1d.jpg)
Я думаю, что у меня есть два решения для этого, одно - я должен правильно закрыть httpclient, чтобы убедиться, что число открытых файлов не увеличивается.
И еще мне нужно увеличить это число 4096 до большего, потому что после запуска моего сервера wildfly число уже составляет около 3700.
Затем я нашел эту команду для увеличения максимального значения prlimit --nofile = 8192: 8192 --pid 12750 но у меня возникла другая проблема, когда число открываемых файлов достигает старого числа 4096, исключение скажет Причина: java.net.SocketException: сброс соединения или соединение закрыто
aused by: java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.net.SocketInputStream.read(SocketInputStream.java:141)
at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:160)
at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:84)
at org.apache.http.impl.io.AbstractSessionInputBuffer.readLine(AbstractSessionInputBuffer.java:273)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:140)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:57)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:261)
at org.apache.http.impl.AbstractHttpClientConnection.receiveResponseHeader(AbstractHttpClientConnection.java:283)
at org.apache.http.impl.conn.DefaultClientConnection.receiveResponseHeader(DefaultClientConnection.java:251)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.receiveResponseHeader(ManagedClientConnectionImpl.java:197)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:272)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:124)
at org.apache.http.impl.client.DefaultRequestDirector.tryExecute(DefaultRequestDirector.java:685)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:487)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
at org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient4Engine.invoke(ApacheHttpClient4Engine.java:283
Кто-нибудь имеет опыт об этом, пожалуйста, помогите мне?