Lsof увеличить каждый запрос в wildfly 10 - PullRequest
1 голос
/ 06 мая 2019

У меня небольшой тест с приложением hello world на JavaEE.Я использовал wildfly 10 для развертывания этого приложения и использую почтальон для выполнения api hello world .И затем я использую команду lsof для проверки списка открытых файлов wildfly. Я видел увеличение числа в каждом запросе , см. Следующую картинку.enter image description here Тогда я пытаюсь с более новой версией дикой бабочки 12 или выше, этого не происходит enter image description here

мой код API enter image description here

Я думаю, что эта ошибка исправлена ​​в более новой версии, но есть ли способ обойти эту проблему в 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

Я думаю, что у меня есть два решения для этого, одно - я должен правильно закрыть 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

Кто-нибудь имеет опыт об этом, пожалуйста, помогите мне?

...