下单接口调优实战,性能提高10倍

  • 时间:
  • 浏览:0
  • 来源:UU直播快三官方_大发UU直播快3

Djava.rmi.server.hostname填写JAVA进程池池所在服务器的IP地址,-Dcom.sun.management.jmxremote.port=7969是指定JMX监控端口的,这里是7969。

让执行库存操作的进程池执行之后 ,赶紧释放行锁。本来 做全部全是个风险,本来 库存扣减成功后,下单失败了。不过什儿 情況比较少,肯能当时的下单接口中,大每种业务逻辑全部全是前面做好判断了,到达插入订单的代码时,就本来 单独的insert了,除非数据库挂了,不然不让老要出显下单失败的情況。

在开发环境下,经过调优后,下单接口的TPS提升了3倍左右,当然肯能开发环境的数据库和应用服务器都比较差,也会对TPS有影响的。当时优化之后 ,在生产上进行了压测,发现TPS提升了10倍。

在压测的过程中,做一下进程池dump,同時 利用nmon观察应用服务器CPU的负载情況。

是因为着锁的代码是HttpClient的execute最好的妙招,该最好的妙招在执行的之后 ,老要在等候获取HTTP连接,通过查看源代码,发现岂全部全是里能了 使用连接池,醉了。赶紧加带如下代码:

负载很低,将进程池并发调整到400后,CPU还是上不去,本来 的话,初步时要判断,代码里有锁。 通过观察dump文件,发现如下信息:

压测结果发现,下单接口的TPS提高了一倍,CPU也上去了不少,否则仍然欠缺理想,代码里,应该还有什儿 的锁。再次做进程池dump,又发现了几只 锁。

触发什儿 lock的业务代码是reduceSkuStock最好的妙招。通过阅读代码,发现reduceSkuStock被包在几只 大事务顶端。

本文来自云栖社区媒体协作伙伴“开源中国”

下单属于写接口,大每种情況下,瓶颈都出在DB里,进程池池肯能全部全是等候DB锁的释放。为了验证什儿 想法,大伙儿儿时要使用Jmeter和jvisualvm来验证一下。

什儿 是下单接口的逻辑里能了大改的情況下的优化方案,一般来说,库存操作应该是单独的服务,时要单独优化的。而单纯的下单逻辑也是时要优化的。

1、打印下单接口的所有SQL,否则逐一进行explain操作,看看有里能了 全表扫描的的话肯能没用到索引的SQL的话;

重新启动进程池池后,打开本地的(我用的是Window10)jvisualvm,加带JMX配置。配置成功后,时要点击进程池那个tab,肯能大伙儿儿要做进程池dump,观察进程池的执行情況。

腾讯云2核4g的服务器1台

2、观察下单接口执行的过程中,FULL GC趋于稳定的次数;

3、增加应用的MYSQL连接数;

库存记录通常趋于稳定一张独立的库存表,肯能创建订单的最好的妙招,是几只 大事务,本来 就会是因为着某条库存记录里能了当整个createorder()最好的妙招执行之后 ,数据库行锁才会被释放,在什儿 期间,什儿 进程池是无法对这条库存记录进行写操作的。否则大伙儿儿时要在reduceSkuStock()中,再开几只 事务,操作完这条库存记录后,立刻释放锁,本来 应该时要提高什儿 性能。为了验证与否肯能事务的是因为着是因为着下单接口慢,大伙儿儿时要直接将createOrder()最好的妙招的事务加带,再压测一下。

本文作者:王练

为了监控服务器和服务器中JAVA进程池池,大伙儿儿时要开启JMX,时要在JAVA进程池池启动的之后 ,加带如下几只参数:

好了,现在大伙儿儿时要使用Jmeter来对下单接口进行压测了。时要先用400进程池并发压,执行时间是1分钟。 

再次压测后,发现代码里肯里能能了 锁了。TPS提升了5倍。否则接下来还得做几件事情:

好了,到了这地方,大伙儿儿时要回到前面,来外理库存什么的疑问了。肯能老板说,里能了大改,否则让他在reduceSkuStock最好的妙招上,再开几只 事务。

原文链接

腾讯云Mysql