spring-boot - Web 服务器性能下降
问题描述
Web 应用程序在 Springboot 上运行并部署在 WebLogic 上。我们将 400 指定为最大线程,并将 JDBC 指定为 100 个连接。
当我们对 Web 应用进行负载测试时,在负载较低的情况下性能最佳(我们调用的大多数 http 请求的响应时间都小于 200 毫秒)。
当我们增加负载时,我们可以看到线程数增加,jdbc 数也逐渐增加,但没有接近最大值。但是,响应时间越来越长,响应时间可能超过 5 秒。
在这段时间内,CPU 使用率、线程数、内存、JDBC 连接似乎都正常。
另一个观察是,在测试过程中,我们看到性能下降,我们使用另一台机器对服务器进行 http 调用,该服务器仅检索文本,没有任何 DB 或逻辑,即使是这个简单的 http 调用也需要 10 秒才能响应。(而且服务器资源还不是MAX!)
所以,我们想知道是什么让他们等待?还有其他可能的瓶颈吗?
解决方案
如果服务器不缺少 CPU/RAM/等资源。只有分析器可以告诉您应用程序花费最多时间的位置可能在:
- 在队列中等待池中的下一个线程/数据库连接可用
- 数据库查询慢
- 需要优化的低效函数/算法
- WebLogic 配置不适合高负载
- JVM 配置不适合高负载(即系统经常/太长时间进行垃圾收集)
因此,我建议在启用探查器工具遥测的情况下重新运行您的测试,同时使用JMXMon Sample Collector监控基本的 JVM 指标,它也可用于监控您的应用程序特定指标。这是一个可以使用JMeter Plugins Manager安装的插件
推荐阅读
- botframework - Skype for business 频道将在 2019 年 6 月 30 日之后工作吗?
- jquery - 当我使用 Tab 键水平滚动问题时
- authentication - 如何从 chrome 扩展请求休息基于会话的 api
- javascript - 发送前修改 Graphql 的响应
- kotlin - 如何在 Kotlin 中使用 LinkedHashSet 插入一个又一个元素
- javascript - WebSocket 会发出什么错误?
- javascript - 如何从可观察数组中的可观察数组中删除项目
- angular - 在新选项卡中打开应用程序页面时出现 Angular Service Worker 问题
- python - Django REST 框架 - MultiSelectField - TypeError:“set”类型的对象不是 JSON 可序列化的
- azure-application-gateway - 我应该将证书放在 App Gw 和 Web App 级别