Случайное получение слишком большого количества состояний CLOSE_WAIT при большой нагрузке на сервер промежуточного программного обеспечения (Jetty 9.3.XX)
Мы разработали веб-приложение на Джерси (REST API) и ниже приводим подробную информацию об используемых библиотеках / технологиях:
- Джерси - v2.23.1 Открыть JPA
- v2.4.1 (MySQL - 5.5.50)
- Причал - v9.3.18(JDK 8+)
- ОС - Ubuntu 14.04
В основном, мы получаем слишком много проблем CLOSE_WAIT в случайном порядке. Мы попытались найти решение, и ниже приведен список использованных нами ссылок.
Как указывалось в приведенных выше ссылках, мы обновили файлы /etc/sysctl.conf, /opt/jetty9/etc/jetty.xml и /etc/security/limits.conf со следующими подробностями:
/etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 20
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 16384 16777216
net.core.somaxconn = 4096
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_congestion_control = кубическийЗатем выполняет
Sysctl -p
/opt/jetty9/etc/jetty.xml
<!-- Server Thread Pool -->
<Set name="ThreadPool">
<!-- Default queued blocking threadpool -->
<New class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<Arg>
<New class="java.util.concurrent.ArrayBlockingQueue">
<Arg type="int">6000</Arg>
</New>
</Arg>
<Set name="minThreads">10</Set>
<Set name="maxThreads">200</Set>
<Set name="detailedDump">false</Set>
</New>
</Set>
/etc/security/limits.conf
корень жесткий нофиле 40000
корень мягкий нофиле 40000
Мы также прошли этапы оптимизации кода, но все же не повезло. Я прошел через основные состояния TCP-соединения, и причина состояния CLOSE_WAIT затем попробовал вышеупомянутые способы, как упомянуто, также прошел через многие вопросы, связанные с CLOSE_WAIT на стековом потоке, и попытался решить проблему, поскольку люди упоминали о решениях там, но не получили никакого успех.
Может кто-нибудь сталкивался с такой же проблемой и нашел какое-то решение?