大量数据更新导致fgc频繁引起jvm服务暂停。
2017-04-29 17:11
260 查看
线上跑的几台server突然出现大量fgc,因为在fgc过程的stop the world太久。引起其他应用訪问该server上的接口大量超时。(发生超时的时间点和fgc时间点一致)
先进行初步的优化。
方案:改动CMSInitiatingOccupancyFraction=85这个调低到60,加快cms gc处理防止concurrent mode failure触发FGC,
降低CMSMaxAbortablePrecleanTime到500以缩短PreClean时间。
改动mn2560m为2048,让eden小于old。
可是改动后效果不大,于是分析FGC产生的根本原因:
突然发生频繁fgc的时间点为是有一个新上业务,该业务每五分钟dump一次词表,然后在本地jvm内解压。一次1G多的数据。然后下一次再更新词表时原词表摒弃。也就是每5分钟就会产生1g多的垃圾。并且是突发式的,不是说慢慢累积到1G,而是在新词表数据下载后瞬间抛弃原词表数据。这样大的垃圾回收确实须要一定处理时间。这种业务假设靠 优化參数,起的作用杯水车薪 ,仅仅能优化业务。后来了解5分钟更新一次本身就是配置错误,改动为正常频率后2小时产生一次fgc,全然正常。
先进行初步的优化。
方案:改动CMSInitiatingOccupancyFraction=85这个调低到60,加快cms gc处理防止concurrent mode failure触发FGC,
降低CMSMaxAbortablePrecleanTime到500以缩短PreClean时间。
改动mn2560m为2048,让eden小于old。
可是改动后效果不大,于是分析FGC产生的根本原因:
突然发生频繁fgc的时间点为是有一个新上业务,该业务每五分钟dump一次词表,然后在本地jvm内解压。一次1G多的数据。然后下一次再更新词表时原词表摒弃。也就是每5分钟就会产生1g多的垃圾。并且是突发式的,不是说慢慢累积到1G,而是在新词表数据下载后瞬间抛弃原词表数据。这样大的垃圾回收确实须要一定处理时间。这种业务假设靠 优化參数,起的作用杯水车薪 ,仅仅能优化业务。后来了解5分钟更新一次本身就是配置错误,改动为正常频率后2小时产生一次fgc,全然正常。
相关文章推荐
- 大量数据更新导致fgc频繁引起jvm服务暂停。
- JVM成长之路,记录一次内存溢出导致频繁FGC的问题排查及解决
- UPS电源滤波质量下降,接地通路故障,谐波大量涌入系统,导致网络变慢、数据出错
- 当局域网内某台主机使用P2P进行下载时,P2P软件会占用局域网到互联网出口的大量的带宽,导致其他用户网速慢、卡等现象。BT等软件在下载的同时又作为种子为其他人提供下载服务
- 如何高效的更新大量数据 -- 有待考究
- 警惕:全球裁员导致公司敏感数据大量流失
- 解决VS更新/增加服务引用出现“XML 文档中有错误。 读取 XML 数据时,超出最大名称表字符计数配额 (16384)”
- [AspNetPager 4.3.3]DataGrid url分页的小Bug导致更新过程无法取得编辑文本框数据
- IE中由于缓存导致页面数据不能及时更新的解决办法
- 数据访问更新服务在生产环境部署注意事项
- IE中由于缓存导致页面数据不能及时更新的解决办法
- 关闭IBM HTTP Server插件自动生成服务,以避免部署大量应用时导致Dmgr内存溢出
- 使用SQL Loader导入大量数据,避免使用SQL频繁写库
- 大量数据生成excel时候造成jvm内存泄漏问题的解决与测
- SQL2005中因为删除大量数据,导致事务日志增大
- SQL2005中因为删除大量数据,导致事务日志增大
- 批量更新数据引起 DataGrid 的绘制错误及解决方法
- Timesten在大量数据导入、更新之后需要更新统计信息
- 安装数据服务后,要记得更新
- 分批更新大量数据,避免锁表