jvm 之 国际酒店 8 月 19 一次full GC 导致的事故
事故经过:
1 15:18收到短信报警:国际酒店调用OMS queryGorderOrderList方法失败;成单接口调用OMS获取token失败。
2 查看checkList发现15:18开始发现调用OMS 订单列表接口响应时间明显变长。
3 业务反馈国际酒店MIS系统查询不到数据,也无法导出数据。怀疑是因为这个引起的。
登录ihotelMs系统
IhotelMis调用OMS返回errorCode
总共调用OMS出现问题3000多次,并且还在调用。
4 查看ihotelMs cpu使用率正常,gc也正常。
5 15:27登录OMS一中心机器,CPU使用率60%以上,并且一直full gc,几乎把老龄带内存全部占满。导致OMS服务不可用,
影响其他业务线。二中心的机器没有问题。
6 15:28重启一中心两台OMS,但是过几分钟又挂了。
7 查看日志曾有人在导出国际酒店半个月的数据,大概两万条,猜测是国际酒店的问题。15:38将ihotel的业务都切到outeroms.
然后国际酒店业务正常,查询OMS没有问题。
8 15:56将OMS全部切到二中心。
9 15:59trainAPI也切到outeroms,服务也正常了。
10 16点以后所有服务正常【OMS一中心没有流量】
11 17:45恢复一中心流量。所有业务正常。
事故分析:
国际酒店MS系统大量调用OMS造成OMS服务不可用,进而影响其他业务线。
分析订单导出代码,发现可能造成死循环:
标红线部分代码,一次调用OMS设置的是分页大小是5000,很容易造成OMS返回失败,如果调用OMS返回失败【可能OMS收到请求,已经执行了查询命令,但是因为网络或者别的异常原因没有返回国际酒店数据】,代码会执行continue,重试去调用OMS,如果再失败再重试。。如果正好有几秒钟的时间,网络不好或者因为OMS系统问题没有返回正常数据,这段代码会一直循环调用OMS,这种大量调用造成OMS系统压力大,OMS堆内存使用过多,更加剧国际酒店这行代码收不到正常数据,恶性循环。。最终造成OMS down掉。
解决方案:
1.代码中写continue的作用是为了防止在业务导出数据,多次查询OMS有一次失败,可以进行重试操作,保证拿到的数据。但是会造成死循环,并且查询OMS订单列表底层已经设置了重试机制,双重重试会加重OMS负担。因此去掉continue。
2. 设置OMS分页大小为5000,很容易造成OMS压力过大,因此设置分页大小为500,分多次调用OMS。
薛天俊
OMS国际酒店
事故经过:
1 15:18收到短信报警:国际酒店调用OMS queryGorderOrderList方法失败;成单接口调用OMS获取token失败。
2 查看checkList发现15:18开始国际酒店开始大量调用OMS 订单列表接口,很不正常。
3 业务反馈国际酒店MIS系统查询不到数据,也无法导出数据。怀疑是因为这个引起的。
登录ihotelMs系统
IhotelMis调用OMS返回errorCode
总共调用OMS出现问题3000多次,并且还在调用。
4 查看ihotelMs cpu使用率正常,gc也正常。
5 15:27登录OMS一中心机器,CPU使用率60%以上,并且一直full gc,几乎把老龄带内存全部占满。导致OMS服务不可用,
影响其他业务线。二中心的机器没有问题。
6 15:28重启一中心两台OMS,但是过几分钟又挂了。
7 查看日志曾有人在导出国际酒店半个月的数据,大概两万条,猜测是国际酒店的问题。15:38将ihotel的业务都切到outeroms.
然后国际酒店业务正常,查询OMS没有问题。
8 15:56将OMS全部切到二中心。
9 15:59trainAPI也切到outeroms,服务也正常了。
10 16点以后所有服务正常【OMS一中心没有流量】
11 17:45恢复一中心流量。所有业务正常。
事故分析:
国际酒店MS系统大量调用OMS造成OMS服务不可用,进而影响其他业务线。
分析订单导出代码,发现可能造成死循环:
标红线部分代码,一次调用OMS设置的是分页大小是5000,很容易造成OMS返回失败,如果调用OMS返回失败【可能OMS收到请求,已经执行了查询命令,但是因为网络或者别的异常原因没有返回国际酒店数据】,代码会执行continue,重试去调用OMS,如果再失败再重试。。如果正好有几秒钟的时间,网络不好或者因为OMS系统问题没有返回正常数据,这段代码会一直循环调用OMS,这种大量调用造成OMS系统压力大,OMS堆内存使用过多,更加剧国际酒店这行代码收不到正常数据,恶性循环。。最终造成OMS down掉。
解决方案:
1.代码中写continue的作用是为了防止在业务导出数据,多次查询OMS有一次失败,可以进行重试操作,保证拿到的数据。但是会造成死循环,并且查询OMS订单列表底层已经设置了重试机制,双重重试会加重OMS负担。因此去掉continue。
2. 设置OMS分页大小为5000,很容易造成OMS压力过大,因此设置分页大小为500,分多次调用OMS。
补充一些:
1.当发现oms一中心的服务处于假死状态时,ops操作重启了一中心的服务,但是一起来就挂了,因为这时候ihotelMis还有大量的三级联查(每次5000条)的查询请求打到一中心(办公网请求都会打到一中心)。
2.oms流量切到二中心,请求也会打到二中心,所以出现了二中心的请求量也很高的现象。
3.ihotelMis引用的omsagent的包刚好有问题,打印不出inOut日志,这也影响了快速定位问题。
jvm 之 国际酒店 8 月 19 一次full GC 导致的事故的更多相关文章
- jvm 之 国际酒店 6月25日上线内存溢出原因
6月25日OMS,Ihotel上线成功后执行了一个批处理,SOA报警提示某一台IHOTEL机器调用OMS失败率大于阀值,登录这个机器后发现这台机器CPU使用率处于80%以上,调用OMS有的时候超过5秒 ...
- jvm之 国际酒店 一次报表 load数据死循环导致的FULLGC
从目前这几天的运行情况看,每天晚上0点到3点,应该是你们那边有大数据任务处理,在这个时间段,SOA会频繁报ZK断开重联的告警,见下图. 类似的问题,在CRM系统上也有出现过,我们dump内存,分析 ...
- [ZT] 酒店大洗脑:最全各大国际酒店集团族谱图
原文地址: http://www.licai.com/yuedu/201411-62884.html 如果你对各大耳熟能详的国际酒店管理集团还有什么问题,相信今天和你分享的各大酒店集团家族系谱图和最全 ...
- Python array,list,dataframe索引切片操作 2016年07月19日——智浪文档
array,list,dataframe索引切片操作 2016年07月19日——智浪文档 list,一维,二维array,datafrme,loc.iloc.ix的简单探讨 Numpy数组的索引和切片 ...
- 2016年12月19日 星期一 --出埃及记 Exodus 21:14
2016年12月19日 星期一 --出埃及记 Exodus 21:14 But if a man schemes and kills another man deliberately, take hi ...
- 2016年11月19日 星期六 --出埃及记 Exodus 20:10
2016年11月19日 星期六 --出埃及记 Exodus 20:10 but the seventh day is a Sabbath to the LORD your God. On it you ...
- 2016年10月19日 星期三 --出埃及记 Exodus 19:3
2016年10月19日 星期三 --出埃及记 Exodus 19:3 Then Moses went up to God, and the LORD called to him from the mo ...
- 7月19日Docker&Kubernetes技术沙龙总结 - DockOne.io
7月19日Docker&Kubernetes技术沙龙总结 - DockOne.io undefined
- 9月19号-9月21号丰宁坝上草原行 - 营销系统 - 京东内部论坛 - Powered by Discuz!
9月19号-9月21号丰宁坝上草原行 - 营销系统 - 京东内部论坛 - Powered by Discuz! 9月19号-9月21号丰宁坝上草原行 [复制链接]
随机推荐
- EMVTag系列2《磁条等效数据》
Ø 57 磁条2等效数据 L: var. up to 19 -M(必备):此数据必须存在并提供给终端,终端在读应用数据过程中,如果没有读到必备数据,终端中止交易 按GB/T 17552,磁条2的数据 ...
- [原创]从Oracle和Microsoft Sql Server迁移到PostgreSQL Plus Advanced Server
一.了解PPAS的迁移方式1.在线迁移和离线迁移使用Migration Studio或Migration Toolkit直接向PPAS数据库进行对象定义和数据表中数据的迁移称为在线迁移,生成要迁移对象 ...
- hdu 4217 Data Structure?/treap
原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=4217 可用线段树写,效率要高点. 这道题以前用c语言写的treap水过了.. 现在接触了c++重写一遍 ...
- Android UmengShareSDK第三方登录
Android UmengShareSDK 第三方登录- 今天就不废话了,集成平台第三方登录.市面上集成平台有shareSDK 和 Ument两种,shareSDK的ipa和服务好些,如果自己研究会很 ...
- iOS 开发者能用上的 10 个 Xcode 插件
本文由 伯乐在线 - 邢敏 翻译,黄利民 校稿.未经许可,禁止转载! 英文出处:code.tutsplus.com.欢迎加入翻译小组. 1. XcodeColors:给 Xcode 控制台添加颜色 2 ...
- java数据结构和算法------堆排序
package iYou.neugle.sort; public class Heap_sort { public static void HeapSort(double[] array) { for ...
- P2763: [JLOI2011]飞行路线
然而WA了呀,这道分层图,也是不明白为什么WA了=-= ; maxn=; points=; type node=record f,t,l:longint; end; var n,m,k,i,j,u,v ...
- responsive menu
http://responsive-nav.com/#instructions https://github.com/viljamis/responsive-nav.js http://tympanu ...
- 4月7号周二课堂练习:NABC
团队项目——7-magic 分析特点:游戏简单容易上手 NABC分析: N(needs需求)现在存在的很多游戏操作比较,游戏规则也比较繁琐,用户很难或者不愿意去玩操作难度比较大的游戏,容易上手的游戏比 ...
- TF/IDF(term frequency/inverse document frequency)
TF/IDF(term frequency/inverse document frequency) 的概念被公认为信息检索中最重要的发明. 一. TF/IDF描述单个term与特定document的相 ...