【发布时间】:2019-12-17 07:18:23
【问题描述】:
我们正在使用 Jersey、Spring、hibernate 来开发一个 RESTful 服务器。使用 JMeter 工具在本地运行负载测试,并使用 javamelody 监控 CPU 和内存使用情况。
几天后,我发现内存一直在上升,但似乎永远不会释放回来。我从 javamelody 生成堆转储并使用 Eclipse Memory Analyzer (MAT) 检查任何内存泄漏,但结果是没有发现内存泄漏。
我不知道内存不断上升的原因。 有经验的人知道原因吗?
我的服务器环境是 Tomcat 9 和 MySQL 数据库。
以下是 Tomcat Java 选项
-Xms1024m
-Xmx4096m
-XX:NewSize=512m
-XX:MaxNewSize=2560m
-XX:MaxGCPauseMillis=250
-XX:+UseConcMarkSweepGC
-XX:+UseAdaptiveGCBoundary
-XX:+CMSClassUnloadingEnabled
-XX:PermSize=300m
-XX:MaxPermSize=300m
-Dnetworkaddress.cache.ttl=43200
谢谢!
【问题讨论】:
-
附加信息请求。 RAM 大小、# 核心、MySQL 主机服务器上的任何 SSD 设备?在 pastebin.com 上发布并分享链接。从 SSH 登录根,文本结果: B) SHOW GLOBAL STATUS;至少 3 天后正常运行时间 C) 显示全局变量; D) 显示完整的处理程序; E) 完整的 MySQLTuner 报告和可选的非常有用的信息,如果可用,包括 - htop 或 top 用于大多数活动应用程序,ulimit -a 用于 Linux/Unix 限制列表,iostat -xm 5 3 用于按设备和核心/cpu 计数的 IOPS,为服务器工作负载调优分析提供建议。
-
@WilsonHauck 我的服务器有 32GB RAM、i7 CPU 和 256GB SSD。在我的负载测试期间,CPU 使用率仅约为 5%。 MySQL全局变量和状态中有很多值。我认为这很难在这里展示。你有什么需要的变量吗?
-
请在 pastebin.com 上发帖并分享链接以避免 SO 上的存储限制。这是一个免费的 TEXT 文件共享网站。
标签: tomcat memory-leaks jmeter