#双11技术故事联播#挑战篇 |小金库技术团队备战史
自我挑战之 吕美雪
2015年毕业的美雪,人如其名,名美心也美;初到京东金融时,还是个胆小有点害羞的小姑娘,不敢大声说话,问问题还会脸红,打招呼的时候腼腆一笑,天天面对电脑翻阅各种文档,熟悉业务、操作系统等。
2016年小金库2.0改版,当时组内工作繁忙、人员紧张,就把业务复杂、应用及数据库繁多且相互之间联系密切的大活儿,压在了她的小肩膀上;新改版的系统要熟悉业务、了解中间的逻辑依赖,更难得的是不能影响线上已经运行的1.0需求上线,就这样繁重的小金库之旅开始了,改版的要测试,现有需求也得测试,这块业务又是新接手的,工作难度可想而知,但倔强的她硬是把这块硬骨头啃了下来,以至于现在的她对小金库所有系统相当的熟悉,哪怕是小小的细节也不会逃出她的法眼。
改版还未完全结束时又迎来了618,压测工作接踵而至,又是一次全新的挑战。学压测工具、学习写脚本、白天测试晚上压测,回到家还得翻阅技术书,为第二天的调试做准备,就这样新技能get满满,有了这次经验,双十一也是平滑度过,这一年她的成长有目共睹,俨然不是那个怯生生的大学生了。
去年大部分时间处于996的工作时长,她住的地方不好打车,每天加班又晚,不是赶末班地铁,就是蹭同向的车,加班后半夜的时候,回家大家都替她捏把汗。每当问他周末干啥,睡觉,周末一天的肆放后,又开始和工作亲密接触了,常开玩笑说被工作耽误了找对象的lv子。
今年双十一也不例外,前期与研发确定压测指标、准备压测数据、编写脚本;过程中一次次执行,一次不理想再来一次,一次次的调试直至达到预期,压测后总结过程中碰到的难点、痛点,与人分享避免发生类似的问题;一块小金子已是闪闪发光,最明显的就是压测期间来向小姐姐讨教的同事,也是不断的增加呢,可见她的成长速度非同一般。
是压力也是动力,从一个刚毕业对自己工作无从下手的小姑娘,到工作干的得心应手、游刃有余,每个细节都了如掌指的小姐姐,中间当然离不开不懈的努力和执着的追求。她说再累再辛苦,看到自己经手的程序越来越稳定、用户越来越多,心里的成就感、满足感也是直线上升。
精益求精之 郭蕴霆
为了保证压测效果及双十一系统稳定,进行了五次读压测(第一次单机压测、第二次集群压测、第三次为读优化加扩容、第四次为扩容、第五次为剔除缓存后的查库性能);两次写压测(一次模拟外部系统性能不理想的时候小金库系统的最差容量,一次模拟外部系统性能理想时小金库系统的最高容量);一次查询性能优化;两次系统扩容(因压测过程中发现集群jsf线程池满,压测达到系统容量上限)。
为了获取精确的压测结果,对压测接口分别进行了单接口压测、分应用接口压测以及全接口混合压测。每次压测历时3-5小时不等。(假设有图:图为压测人员凌晨奋战^_^)
在读压测过程中,当发现接口性能打标但并未最优化时,本着精益求精的态度,对小金库开户查询等接口进行了性能优化,进一步提高接口性能;同时,为了模拟在缓存集群不可用时小金库的查库性能,对查询代码进行修改,屏蔽了查缓存步骤,获得了该情况下小金库系统容量的精确数据。在写压测过程中,为了不对外部系统造成脏数据,且能够模拟调用外部系统时因线程调度和网络导致的资源开销,郭蕴霆屏蔽了写接口中所有的外部系统调用,并改为调用为压测开发的模拟接口,较精确地得到了小金库交易系统自身的写性能。
压测过程中,感谢测试组同事及其领导对压测的高度关注和大力支持,对压测实现的细节和关注点等方面给出了很多建设性意见,促使压测圆满达成。
排除万难之 赵思鸣
是否开通小金库接口读库压测,是思鸣在备战双十一过程中负责的压测内容。这个接口是小金库的核心查询接口,无论是外部还是内部都会调用这个接口,每秒调用量很高,因此,这个接口是优先查询缓存信息的,且缓存命中率在99%以上。但是缓存是分片的,双十一过程中,可能存在某个分片损坏或者缓存不可用的情况,因此会有一部分查询或者全部查询,都落到了数据库方面,因此我们需要对是否开通小金库接口进行读库压测,压测代码准备的很顺利,后面就波澜起伏了,且听我一一道来~
J-one读库压测服务器准备,双十一机器已经扩容完成,且各个应用都在扩容没有空闲服务器供读库压测使用,只能将线上服务器分一部分出来做压测使用。因为读库压测代码是专门针对特殊情况修改的,所以不能合并到主干上,因此压测机器只能在预发环境。那么问题来了,在J-one上面,线上分组的机器是无法转移到预发分组的,所以跟运维联系先从J-one删除这几台机器,然后再提申请进行扩容,扩容时选择到了预发分组,但是问题又来了,预发分组里面的小分组之间,服务器是无法互相移动的,与线上分组不同,所以还得跟运维联系先从J-one删除这几台机器,然后再提申请进行扩容,扩容申请指定到预发分组的压测小分组。
压测数据库是提前就准备好的,但是之后有其他技术需求,导致小金库开户信息查询的表有所改变,而新表在压测库是没数据的,因此申请导数据,生产dba倒数完成后,我们通过mydb查询,发现没有数据,经排查是cds没有维护新表的分库分表信息,之后找开发dba维护下cds信息,仍然无效,于是开发dba把压测库重启,还是无效,最终mydb的同学帮忙重启,终于能查到内容了。到此,代码、服务器、数据库都准备完毕,后面就一帆风顺了,压测顺利通过。
总结:在备战618和双十一的时候,还是尽量打好提前量,事先多与相关负责人沟通,遇到问题时,把相关人员拉群讨论,更容易解决问题。最后感谢运维同学、生产dba同学、研发dba同学、mydb同学以及测试同学的支持和配合。
小金库研发团队其他大神(*>.<*)~
来张镇楼照~`o`~
京东金融技术说
▼▼▼
原创·实用·技术·专业
不只一技之长
我有N技在手
你看,我写,共成长!