“优速智能客服”项目遇到的影响项目性能的几个因素

之前做的都是传统行业的项目,对性能要求极低,所以对项目的运行速度也不是很关注。但是最近为优速物流做了一个“优速智能客服”项目,由于数据量较大、并发量较大,所以对项目性能产生了极大的考验。现将整个项目关于性能部分的优化经验做个简单的记录:

背景:

1、优速项目全国几万个网点,大约都集中在早上8-10点登录,进行问题件处理

2、优速客服部门(主要为呼叫中心)对项目的响应时间要求极高,分秒必争

3、优速项目大约每天会产生30w的问题件,一个月大约1000W,数据保留三个月大约3000W数据量

浅显的经验:

1、工单编码冲突问题:每条工单对应一个编码,我们将编码放在redis缓存中,每次用的时候取出来,然后在此基础上加1作为新的编码使用,并将新的编码存在缓存中做记录以便下次使用,并发量小的时候,这种方案还可以,当并发量增大时,就会出现编码冲突的问题,但是加同步锁又会影响性能,所以最终确定的解决方案是,利用redis原生的自增方法incr,每次incr后,编码由redis自动加1;(切记:jedis使用后一定要关闭,否则连接数使用完之后,会导致系统瘫痪)代码如下:

 

2、HttpClient接口调用不稳定问题:项目中第三方接口我们是使用Httpclient调用的,结果上线后发现接口请求会越来越慢,有时候会直接出现数据加载不出来的现象,导致部分功能无法正常使用,最开始怀疑是第三方接口响应问题,后来日志验证发现不是第三方接口问题,而是随意请求次数的增加,每次调用响应时间都会变长,最终查资料发现:httpclient为线程安全的,所以再高并发使用时会出现等待问题,当某次请求出现超时或者响应较长时,就会导致后面等待的也会响应增长,从而导致接口响应时长增加,我们最终通过增加HttpClient链接池的方式解决了这个问题,链接池部分代码如下:

HttpClient源码地址:https://pan.baidu.com/s/1sc5DqiGMg_oRmVBhLKFaoA

3、数据库操作相关的经验总结:

1、业务代码与数据库交互时,坚决不做多余的数据库操作

2、数据库常用的查询字段要建索引、尽量索引字段排序、尽量组合索引

3、关联表关联字段编码相同索引才会生效

4、like函数左侧不可加%否则索引会失效

5、多表大数据量组合查询可以使用子查询尽可能多的使索引生效

6、一张表索引不能太多

7、一张表字段不能太多

4、代码规范问题:

1、空指针判断,不对空指针判断,对于业务流程来说是毁灭性的,得不偿失,必须要做

2、Exception错误日志的打印方式:logger.error(“错误”,e);代替e. printStackTrace();

3、类属性字段尽量使用序列化属性,像List用ArrayList代替、Map用HashMap代替

4、不要在非静态方法中给静态属性赋值

5、扫描规范一定要在项目开始的时候定好,不然后面改很麻烦

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值