我在安装在Nginx代理后面的5个EC实例(m4.4xlarge)上安装了Spring应用程序(使用SpringBoot版本1.3.6.RELEASE)。所有的实例都运行Ubuntu 14.04。Spring应用程序在响应请求时显示间歇性延迟
开始使用java -jar API-0.0.1-SNAPSHOT.jar -Xms8192m -Xmx16384m -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses
当我从本地实例中的一个查询API,以确保该实例运行起来,达4秒的间歇延迟的应用程序之前,应用程序响应被示出请求。该请求从本地实例启动到本地实例。
要调用API,我执行DATE=$(date +"%Y%m%d%H%M%S"); echo $DATE; curl -XGET http://xxxx:9998/api/ping --header "Content-Type:application/json"
(其中xxxx是实例的私有IP地址)。 api/ping
端点只返回一个pong值,不接触数据库或文件系统。
嵌入式Tomcat的访问日志也显示处理请求的延迟。
tcpdump的看起来如下这也反映了端口上的延迟。
我已经试过
- TCPv6是我测试
- 的net.ipv4.tcp_fin_timeout参数设置为30
- 实例禁用让嵌入式Tomcat服务器听一个特定的地址(不是*)
- 试图扩展Tomcat的最小线程数
- 增加超时值Tomcat服务器
的API我的本地开发机器上一致响应(当然它!)
的问题是在处理请求的间歇延误。 API响应的速度在可接受的参数范围内,但间歇性延迟导致API响应时间大幅延迟。
--- UPDATE 20/9
我设法模仿我的本地计算机上的问题。如果应用程序使用mvn spring-boot:run
运行,则在调用API时不会出现延迟。但是,当使用java -jar API-0.0.1-SNAPSHOT.jar
开始应用程序时,可以看到延迟。
谢谢,我会看看。我们最终在独立的tomcat安装中安装了spring-boot应用程序 –