千万数据量查询接口优化及并发量提高

简单记录一下,系统并发量的优化记录。

背景:
某市疫情爆发,由于此前我司负责汇总该市的所有核酸检测数据,我写了一个非常简单的查询接口,根据身份证号和姓名获取核酸检测结果。现在需要对该接口进行优化,提升其性能。
千万数据量查询接口优化及并发量提高_第1张图片

自测:
jemtter压测接口所在服务,并发大约在700左右。
压测网关,并发大约500左右。
压测nginx,由于并发量不大,没有瓶颈。

问题:
接口所在服务器的压测结果不理想,与预计值低,于是开始进行排查。写了一个不查数据库的接口,直接获取静态数据,逻辑与查询数据库的接口逻辑相同。然后分别进行压测,发现静态数据接口的并发可以达到5000。于是排查数据库性能。
DBA排查完数据库后反馈,数据库所在服务器的qps比较高,但数据库并未达到瓶颈。且查询条件已经加过索引。最后就是,使用更高性能的服务器存放数据。并把数据库配置为主从,一台用于查询,一台用于增删改。
另外对新增多台服务器,配置服务集群。
千万数据量查询接口优化及并发量提高_第2张图片
最终集群接口的压测并发可以达到5000以上。

总接:
1、更换性能更好的服务器,数据库主从,读写分离
2、对架构的关键节点进行集群处理

插曲:
当时的接口性能已经压到了5000,但是接口使用方反馈并发还是只有几百。经过沟通发现,他们在调用接口时,首先调用认证平台的接口,获取token,然后根据获取到的token,再请求核酸结果查询接口。导致获取token也成为了一个瓶颈,经过协商,token设置为30分钟过期,使用方每30分钟获取一次token。

你可能感兴趣的:(框架,数据库,java,分布式)