订单系统新增订单接口负载测试性能问题及定位

来源:互联网 发布:nginx 直播服务器搭建 编辑:程序博客网 时间:2024/06/06 13:57

http://localhost:8084/addOrder?orderName=niu&orderDesc=123&orderStatus=undelivery

get


一、假设tps上不去很低,是有什么引起的,在代码中加如Thread.sleep(200); tps 会不高 ,延迟上不去,rt在800毫秒,响应时间长,通过线程dump定位这个问题,某个方法阻塞在哪里。线程阻塞

jstack 进程号 | more 。打线程dump的命令 ,jstack 进程号>文件名.log (例如jstack 5328 >order.log)。用编辑器在打开这个文件order.log 。线程dump,线程是对象,线程用来跑程序的。程序调用链就是A调B,B调C,就有了一个调用栈,线程调用栈,这个就是由来此。多个线程可以处理一件事情。线程的名字 http-bio-8888-exec-3 这是一个tomcat的线程,我们的实例运行在tomcat,如果我们用jar包来启动一个线程,就不有这个 http-bio-8888-exec-3 这个。我们的应用程序是运行在tomcat上的,tomcat去调util 起线程池,

项目脚本



测试执行,数据收集




在服务器上打线程dump文件,jstack 599 >order.log,下载到本地查看


二、发生频繁fgc和报oom 堆内存溢出两种情况,old区满了以后,jstat -gcutil 进程号 1000 fugc不了 ,会导致oom,植入代码,Byte 定位问题

用jmap  -histo  进程号 | more  查看堆内存情况 第一列是数字 第二列是对象 第三列数据的大小 第四列在java虚拟机里类的名字,在程序里有很多byte,内存空间 (934444/1024/1024=891m)。打堆dump命令 jmap -dump:live,format=b,file=dump.hprof 28920 ,用ecplise 的mat打开 分析


原创粉丝点击