我制作的一个小型Web应用程序遇到了一些问题,几天前我投入了生产。当您访问该应用程序并与之交互时,几分钟后会立即崩溃(等待SSL握手的时间太长)。我使用了letencrypt证书。
问题似乎是Undertow在尝试使用SSLConduit.java
类时会阻塞一些线程,这导致服务器的某些核心使用率为100%。
服务器中的Java版本为:
openjdk version "11.0.2" 2018-10-16
OpenJDK Runtime Environment 18.9 (build 11.0.2+7)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+7, mixed mode)
SpringBoot版本为:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
application.properties文件:
server.port=9002
server.ssl.key-store=keystore.jks
server.ssl.key-store-password=password
server.ssl.key-password=password
spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/example_db
spring.datasource.username=example_user
spring.datasource.password=password_db
下排版本是:
您的装备正在告诉这个:
我尝试放置另一个证书,但是问题仍然存在。我不想更改为其他Web服务器(但是如果问题仍然存在,我会)。可以解决这个问题吗?还是必须更改应用程序服务器?
编辑:github中的相关PR:https://github.com/undertow-io/undertow/pull/721和JIRA中的问题:https://issues.jboss.org/browse/UNDERTOW-1493