测试中碰到响应时间慢、TPS上不去、访问页面转圈圈,该怎么分析?把从发请求到返回请求整个架构图画出来,分析整个链路中哪些地方可能导致这些问题。

通常碰到这些问题,都是由以下11种情况导致,下面我们挨个分析,查找问题。

1)客户端

原因:客户端请求发布出去,有可能导致页面转圈圈

排查:请求一下其他地址,若访问其他地址没问题,请求能发出去,则可排除客户端问题。

2)网络

原因:服务器网络很慢或者TCP/IP连接满了有可能导致访问结果很慢,页面在转圈圈

排查:

①netstat i查看服务器网络丢包情况

②ping服务器,查看是否有丢包

3)CPU load

原因:cpu高、负载高,资源竞争,抢时间片,线程等待cpu去调度

排查:top看cpu,负载有没问题

4)内存泄漏、gc

原因:

排查:oom时发请求无法在eden去new对象,请求无法处理,gc时对象new完,请求暂停处理,页面转圈圈

ps -ef |grep java

Jstat -gcutil pid,查看老年代是否满,看是否在不停full gc,如下图老年代没满,说明没有oom;FGC数量也没有增加,说明不是gc导致页面转圈圈

5)wait for io等待磁盘io

原因:等待磁盘io,cpu空闲不干活,导致页面转圈圈

排查:iostat -x,查看是否有io队列

* rrqm/s:每秒进行 merge 的读操作次数,即 delta(rmerge)/s 。 Ø

* wrqm/s:每秒进行 merge 的写操作次数,即 delta(wmerge)/s 。 Ø

* r/s:每秒完成的读 I/O 设备次数,即 delta(rio)/s 。 Ø

* w/s: 每秒完成的写 I/O 设备次数,即 delta(wio)/s 。 Ø

* rsec/s:每秒读扇区数,即 delta(rsect)/s。 Ø

* wsec/s:每秒写扇区数,即 delta(wsect)/s  Ø

* rkB/s:每秒读K字节数,是 rsect/s 的一半,因为每扇区大小为512字节。 Ø

* wkB/s:每秒写K字节数,是 wsect/s 的一半 Ø

* avgrq-sz:平均每次设备I/O操作的数据大小 (扇区),即delta(rsect+wsect)/delta(rio+wio)

* avgqu-sz:平均I/O队列长度,即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。

* Await:请求队列中等待时间+svctm(服务时间) 单位是毫秒,按照每次IO平均。 ,即  delta(ruse+wuse)/delta(rio+wio) 。 一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。 这个时间包括了队列时间和服务时间,也就是说,一 般情况下,await大于svctm,它们的差值越小,则说明队列时间越短,反之差值越大,队列时间越长,说明系统出了问题。 Ø

* Svctm:平均每次设备I/O操作的服务时间 (毫秒),即 delta(use)/delta(rio+wio) 。

* %util:一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的,  即 delta(use)/s/1000 (因为use的单位为毫秒) 。

6)web容器排队、连接池

tomcat监听怎么配置

7)数据库连接池排队 连接池不释放

排查:查看数据库连接池是否满了

①查看项目配置文件中配置的最大连接数,一般配置文件在../webapps/dangdang_dk/WEB-INFO/class下,maxActive=20,代表最大连接数为20

②执行语句show PROCESSLIST,查看数据库连接数,若当前连接数=20则数据库连接池满

附加:

①数据库连接池有2个,一个是mysql数据库对外提供的连接数(所有的数据库加起来对外提供的连接数),在my.cnf中配置,一个是当前项目的数据库连接数

②如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接。 show processlist;只列出前100条,如果想全列出请使用show full processlist;

8)慢查询

排查:前提,已开启数据库慢查询,show variables like 'slow_query%';查看祝健康慢查询日志中是否有慢查询语句

附加:开启慢查询的两种方法

①将slow_query_log 全局变量设置为“ON”状态

set global slow_query_log='ON';

设置慢查询日志存放的位置

set global slow_query_log_file='/opt/slow.log';

查询超过1秒就记录

set global long_query_time=1;

②修改配置文件my.cnf,在[mysqld]下的下方加入

slow_query_log = ON

slow_query_log_file = /usr/local/mysql/data/slow.log

long_query_time = 1

9)数据库死锁

原因:语句执行不了

排查:

①show engine innodb status查看status

②SELECT * FROM information_schema.INNODB_TRX; (定位哪个线程导致死锁)

10)线程死锁

①ps -ef |grep java,查找pid

②jstack pid > aaa,将线程栈文件重定向到aaa中

③过滤http线程,查看里面的blocked(monitor)状态线程,或者大量的waitting线程,如下图则是DbUtil.java文件中getConnection出现问题,导致线程死锁

11)业务逻辑

更多内容欢迎关注微信公众号查看

访问页面转圈圈,怎么分析相关推荐

  1. java cpu过高排查_CPU使用率过高,访问页面的速度越来越慢?今天我教你解决

    tomcat要运行依赖于JDK,tomcat服务器的CPU使用率过高,大多都是因为部署的web程序的问题. 一.现象描述 在一次线上环境,前台访问页面的速度越来越慢,从浏览器F12中看到发出的请求都是 ...

  2. linux访问网页元素,Linux_DOM和JAVASCRIPT访问页面上的元素,访问方法:getElementById() - phpStudy...

    DOM和JAVASCRIPT访问页面上的元素 访问方法: getElementById():返回拥用传递给该方法的指定id的第一个对象的引用. getElementsByName():返回拥用传递该方 ...

  3. php判断访客语言,php实现获取及设置用户访问页面语言类

    本文实例讲述了php实现获取及设置用户访问页面语言类,分享给大家供大家参考.具体分析如下: 该实例User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取 ...

  4. php页面设定语言,php实现获取及设置用户访问页面语言类,php页面_PHP教程

    php实现获取及设置用户访问页面语言类,php页面 本文实例讲述了php实现获取及设置用户访问页面语言类,分享给大家供大家参考.具体分析如下: 该实例User Language Class 获取/设置 ...

  5. WordPress生成网站访问日志和蜘蛛爬行分析日志

    这篇文章 说了两个事情,在我们的wordpress网站生成访问日志和实现蜘蛛爬行日志的分析,主要是无插件来实现的,所以很感兴趣,网上很多转载,分析了半天最初的原创应当是 千丝海阁,不知道了,总之分享来 ...

  6. 基于Python, Selenium, Phantomjs无头浏览器访问页面

    引言: 在自动化测试以及爬虫领域,无头浏览器的应用场景非常广泛,本文将梳理其中的若干概念和思路,并基于代码示例其中的若干使用技巧. 1. 无头浏览器 通常大家在在打开网页的工具就是浏览器,通过界面上输 ...

  7. maven WEB项目启动没问题访问页面就报错:org.apache.jasper.JasperException: Unable to compile class for JSP

    idea 通过maven插件创建一个WEB项目通过内嵌Tomcat加载项目,启动没问题,一访问页面就报错提示无法将jsp编译为class文件: HTTP Status 500 - type Excep ...

  8. Eclipse中新建jsp文件访问页面时乱码问题

    新建.jsp文件,charset和pageEncoding默认是ISO-8859-1,这样的话访问页面时会出现乱码,解决办法:将charset和pageEncoding改为UTF-8(或者GBK/GB ...

  9. js记录用户访问页面和停留时间

    1.setInterval setInterval() 方法可按照指定的周期(以毫秒计)来调用函数或计算表达式. setInterval(code,millisec[,"lang" ...

最新文章

  1. 157. Leetcode 674. 最长连续递增序列 (贪心算法-进阶题目)
  2. 从人生(论文)的数量追求人生的质量
  3. mysql字段名大写好处_数据库的表名字段名大小写问题
  4. 通过Rman定期删除归档脚本
  5. CountDownLatch应用及原理
  6. SAP 电商云 Spartacus UI 单元测试的依赖隔离设置举例
  7. springboot3——Email
  8. 分布式缓存Memcached---开篇的话
  9. 索引扫描时,对同一个叶子块访问多次的原因初探
  10. QEMU学习笔记——QOM(Qemu Object Model)
  11. python如何删除代码_删除代码(上)
  12. CTF---青青子衿(无C++注册机)
  13. 2014黑帽大会揭露十大恐怖安全漏洞!
  14. 阿里云SSL域名证书申请和宝塔配置
  15. Scala实现WordCount简易案例
  16. 【熊猫TV】《程序员》:聚光灯下的熊猫TV技术架构演进
  17. 第一章第十三题(代数:求解2 × 2线性方程组)(Algebra: solve 2 × 2 linear equations)
  18. 博弈论——2.4古诺模型练习题
  19. 不可以涩涩!AI续写软件初体验;迁移学习路线图;谷歌新闻非官方搜索API;CS295『因果推理』2021课程资料;前沿论文 | ShowMeAI资讯日报
  20. 支付宝 福卡 出花花卡 敬业福 的 福图片

热门文章

  1. 【word小技巧】用WPS调整你的论文格式
  2. android 通知 广告,解决三星/小米等Android手机通知栏推送广告的问题
  3. 如何关闭计算机服务检测,电脑知识:Win7系统如何关闭交互式服务检测窗口?...
  4. 杰里之开立体声左右声道数据对调---【篇】
  5. 兼容低版本IE浏览器的一些技巧分享
  6. http://www.cvvision.cn/2888.html
  7. 商场导航反向寻车方案及造价分析
  8. 无奈的我,无奈的C++ Builder
  9. FaceBook有戏没戏(转)
  10. HEU Monkey CC