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日志,这也影响了快速定位问题。

时间: 2024-08-02 01:00:14

jvm 之 国际酒店 8 月 19 一次full GC 导致的事故的相关文章

jvm 之 国际酒店 6月25日上线内存溢出原因

6月25日OMS,Ihotel上线成功后执行了一个批处理,SOA报警提示某一台IHOTEL机器调用OMS失败率大于阀值,登录这个机器后发现这台机器CPU使用率处于80%以上,调用OMS有的时候超过5秒.tomcat日志显示一直在执行fullGC. tomcat报错: 后联系OPS重启这台机器上的tomcat,系统运行正常. 错误原因分析: 使用MAT分析java_pid20367.hprof文件 pool-8-thread-2这个线程产生了占用了1.6GB的内存.造成下面的错误: 这个线程在执行

jvm之 国际酒店 一次报表 load数据死循环导致的FULLGC

从目前这几天的运行情况看,每天晚上0点到3点,应该是你们那边有大数据任务处理,在这个时间段,SOA会频繁报ZK断开重联的告警,见下图. 类似的问题,在CRM系统上也有出现过,我们dump内存,分析后,结论如下,看是否你们有类似的情况,供参考: 代码中使用了大量循环,在循环体中产生了众多对象,这些对象基本在本次循环结束后就成为垃圾对象,但因为对象过大过多,可能会逃逸到old区. 这 样,多次循环下来,old区被占满,于是full gc开始工作,在full gc过程中,jvm会暂停所有线程,且这个过

11月19日全球六大国际域名解析量:.US颓势逆转

IDC评述网(idcps.com)11月23日报道:根据DailyChanges公布的实时数据显示,截止至2015年11月19日,在全球域名解析市场上,六大国际域名解析量相比上期11月12日,均成功实现净增长,共获得1,251,210个增长量,增速相对平稳,总量随之增至159,025,390个. (图1)全球六大国际域名解析量变化统计分布图 通过图1可清晰了解到,11月19日全球六大国际域名解析量变化分布所在区域,环比上期,发生变化.域名.COM在域名解析市场上最为活跃,新增.减少与转移的解析量

9月19日全球域名注册商(国际域名)保有量及市场份额

IDC评述网(idcps.com)09月22日报道:根据RegistrarStats公布的实时数据显示,截止至2015年9月19日,全球域名注册保有量十五强排行榜,环比上期9月12日,无任何变化.其中,中国万网.新网两家中国域名商上榜,分列9.14名.下面,请看IDC评述网对相关数据的整理与分析. (图1)全球域名注册商(国际域名)保有量市场份额TOP15 如图1所示,截止至2015年9月19日,全球域名注册保有量市场份额十五强名单如下所示:GODADDY.COM, LLC.eNom.Tucow

7月19日28家中国域名商六类国际域名注册保有量统计

IDC评述网(idcps.com)07月23日报道:根据RegistrarStats公布的实时数据显示,截止至2015年7月19日,国内域名注册市场相对稳定,前二十八强域名商排名顺序略有变动.北京中科三方取代广州名扬信息,升至第23,广州名扬信息则跌至第24,排名两两互换.下面,请看IDC评述网对数据进行详细解读. (图1)中国域名注册商(国际域名)保有量TOP15分布图 根据图1,IDC评述网得知,在7月19日,国内域名注册保有量十五强排行榜,与上期7月12日对比,无任何变化.其中,阿里云(万

06月19日【迅雷王】已更新可用迅雷会员114个

关注迅雷王迅雷王博客中的所有迅雷账号由Python程序自动验证可用后发送到Blog中供大家免费享用,如果很快被查封可以扫描微信二维码免费领取每日专享迅雷VIP账号! [迅雷王Blog]ID:xunleiaccount 按[Ctrl + D]收藏 [迅雷王]迅雷账号_迅雷王坚持在博客园至少每天更新10个可用迅雷账号!06月19日[迅雷王]已更新可用迅雷会员114个 [迅雷王迅雷钻石会员]81267[密码]size517984 [迅雷王迅雷钻石会员]tlxnvyw[密码]tlxnvyw:240735

8月19号=》436页-440页

16.1 Web Storage 在传统的HTML时代,浏览器的主要功能只是负责展现HTML页面,即使增加了JavaScript脚本,依然只是为动态地修改HTML页面服务.因此 浏览器只是一个“界面呈现工作”. 如果开发者需要在客户端存储少量数据,早起只能通过Cookie来实现,但Cookie存在如下3点不足: Cookie的大小被限制为4KB. Cookie会包含在每个HTTP请求中向服务器发送,这样势必导致多次发送重复数据. Cookie在网络传输时并未加密(除非整个应用都使用SSL),因此

抱团App iOS版1.6已于5月19日0点10分发布

抱团App iOS版1.6已于5月19日0点10分发布, App Store 下载地址:https://itunes.apple.com/cn/app/bao-tuan-tuan-gou-jing-pin/id789571099?ls=1&mt=8 欢迎各种吐槽,技术交流,等等. 抱团App iOS版1.6已于5月19日0点10分发布,布布扣,bubuko.com

2016年7月19日学习笔记

2016年7月19日学习笔记 计算机系统的组成部分 计算机系统由硬件系统和软件系统两大部分组成 硬件系统 冯.诺依曼体系结构: 1946年数学家冯.诺依曼提出运算器,控制器,存储器,输入设备,输出设备. 具体变现为一下硬件: 运算器,控制器  ------>  CPU 存储器          ------>  内存(断电数据清空),硬盘(可永久存储数据) 输入设备------>  键盘,鼠标等 输出设备------>  显示器 打印机等 软件系统 OS : Operating S