Api 部署在负载很重的 Wildfly 13 红帽服务器上。一段时间后,wildfly 访问日志没有写入任何请求,但我们可以看到 api 被多个设备使用。但是,如果我们 telnet ip 和端口它正在工作。我们可以看到 api 正在工作,因为正在写入内部日志。发生这种情况时,我们必须始终重新启动 wildfly。在那一刻重新加载不起作用。我们观察到的另一件事是,通常请求计数超过 100 万(大约 1.2 和 150 万请求)所有 http 会话都无效,即使从 api 级别我们也看不到任何内存泄漏(缓存没有逐渐增加,ram 使用)。
即使从上述状态请求正在处理
以下是我在独立 xml 中的数据源配置
<datasource jndi-name="java:/EAPG_CON" pool-name="EAPG_CON" statistics-enabled="true">
<connection-url>jdbc:mysql://localhost:3306/******?autoReconnect=true&useSSL=false</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<driver>mysql</driver>
<pool>
<min-pool-size>20</min-pool-size>
<initial-pool-size>20</initial-pool-size>
<max-pool-size>200</max-pool-size>
<flush-strategy>AllGracefully</flush-strategy>
</pool>
<security>
<user-name>******</user-name>
<password>******</password>
</security>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLValidConnectionChecker"/>
<background-validation>true</background-validation>
<use-fast-fail>true</use-fast-fail>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.mysql.MySQLExceptionSorter"/>
</validation>
<timeout>
<idle-timeout-minutes>2</idle-timeout-minutes>
</timeout>
</datasource>
以下是我的默认服务器设置
<subsystem xmlns="urn:jboss:domain:undertow:6.0" default-server="default-server" default-virtual-host="default-host" default-servlet-container="default" default-security-domain="other" statistics-enabled="true">
<buffer-cache name="default"/>
<server name="default-server">
<http-listener name="default" tcp-keep-alive="true" socket-binding="http" max-post-size="50000000" always-set-keep-alive="false" record-request-start-time="true" no-request-timeout="10000" request-parse-timeout="2000" redirect-socket="https" enable-http2="true"/>
<host name="default-host" alias="localhost">
<location name="/" handler="welcome-content"/>
<location name="/download" handler="download-dir"/>
<http-invoker security-realm="ApplicationRealm"/>
</host>
</server>
<servlet-container name="default" default-session-timeout="60">
<jsp-config/>
<websockets/>
</servlet-container>
<handlers>
<file name="welcome-content" path="${jboss.home.dir}/welcome-content"/>
<file name="download-dir" path="*************" directory-listing="true" follow-symlink="true"/>
</handlers>
</subsystem>
我在这里注意到的另一件事是,如果我将 tcp-keep-alive 设置为未定义,那么这很快就会发生