【发布时间】:2021-12-13 17:15:29
【问题描述】:
有一个我操作的服务器。 我用 Spring Boot 构建了一个 Restful API 服务器,当我用 Postman 测试我的 API 时,通常需要大约 20 毫秒到 50 毫秒才能响应。但有时响应时间长达 5.2 秒。
我想找出原因,所以我试图检查瓶颈发生在哪里。 当我通过在 InterceptorHandler 类中实现 PreHandle 和 PostHandle 来计算实际执行时间时,它以 5 ms 结束。 在java日志中,我可以在业务逻辑已经结束5秒后用Servelet日志检查200OK日志。
有什么方法可以检查同时发生的事情? 网络和内存 CPU 利用率都没有奇点。还没有用户,因为它是一个测试服务器。 但是,这台服务器上运行着大约三个 Spring Boot 应用程序。
我检查了这些东西。
1004 pidstat 1
1005 uptime
1006 dmesg | tail
1008 vmstat 1
1011 mpstat -P ALL 1
1012 iostat -xz 1
1013 free -m
1014 sar -n DEV 1
1019 sar -n TCP,ETCP 1
【问题讨论】:
-
反应时间长是服务启动后出现的还是随机的?你看过你的应用程序的垃圾收集器吗?我经常使用 Spring Actuators 来监控我的服务的行为。
-
@seism0saurus 我知道我第一次打开应用程序时很慢,但有时它是随机的。
-
S0 S1 E O M CCS YGC YGCT FGC FGCT CGC CGCT GCT -
0.00 100.00 47.02 30.06 96.86 91.30 18 0.286 0 0.000 6 0.012 0.298
标签: java spring spring-boot servlets tomcat8