zoukankan      html  css  js  c++  java
  • 常见的性能问题及定位方法

    作为一名测试人员,在工作中肯定会遇到各种性能问题,我大致汇总了五个原因导致性能瓶颈,一起来学习一下吧。

    举个例子:

         比如我们访问一个网页或请求,服务器返回的结果非常慢或者访问不到,可以从以下几个方面来考虑:

    1.数据库连接池被沾满

         需要有空闲的才能执行其他SQL,现在是从数据库拿不到结果

    2.数据库死锁
    Show engine innodb status;看是否有block字样
    数据库死锁过程,怎么看:

    3. 线程死锁

    以后做项目:第一个排查,硬件,硬件没问题,第二个排查线程栈
    Ps -ef | grep java
    Jstack java10092 > 3月26日.log
    Vi 3月26日.log查看
    1.看BLOCK
    2.看是数据库死锁还是线程池死锁,线程池死锁有http和BLOCK字样
    3.at后面就是原因,哪个class下的某个方法导致的(java:43 )
    at 后面的at.org.tarena.common.dbuile.conection
    拔代码 webapps/项目名/web-INF/class中找org.tarrena.common下的dbuile.class文件
    Vi dbuile.class会有乱码,需要将该文件反编译一下

    4.线程池满了     应用程序的代码需要线程池去调度

    1)配置线程池用户,才知道配多少个线程,去cd omcatconfservice.xml 看看配多少个连接池;vi service.xml :Tomcat最大连接池默认是200 connector port=8080这一行
    2)配置线程池用户,才能进行监听 cd omcatconf omcat-users.xml
    Vi tomcat-users.xml 看看是否配置了用户数,在Tomcat主页看一下数量
    如果没有配置,看不了,配置的话,需要把注释掉的重启Tomcat才可以,查看Tomcat主页(IP:端口号),看用户满了没有,如果count数没满,说明这不是转圈问题根源
    3)数据库连接池
    连接数据库 mysql -u root -p
    使用哪个数据库:cd opt/lampp/bin/mysql/ 启动:.mysql/ -u root -p
    如何启动lampp下的数据库:find / -name mysql        进到mysql启动文件所在的目录    执行     ./mysql

    use mysql;
    show full processlist; 当前数据库对外连接的进程数,观察有几个项目对应的数据库(db)跟我设置的项目数据库开的个数相比较判断是否用满了
    如何查看我设置的项目数据库个数:cd /user/local/tomcat/webapps/dangdang/WEB -INF/classes/dbcp.properties Vi dbcp.properties 中找到maxactive的个数

    5.硬件原因,CPU满了或者负载非常高 top命令就可以看哪些进程占用较高,负载怎么样(load average)
    CPU高不高

         

    IO操作:iostat 看TPS 然后iostat 3 ,看具体的tps是否高

  • 相关阅读:
    JavaScript 的数据类型及其检测
    编写JavaScript 代码的5个小技巧
    canvas标签的基本用法
    析构函数的调用------新标准c++程序设计
    类型转换构造函数 及使用explicit避免类型自动转换------新标准c++程序设计
    c++小知识
    this指针------新标准c++程序设计
    类的互相包含------新标准c++程序设计
    封闭类------新标准c++程序设计
    c++内存模型------计算机系统核心概念及软硬件实现
  • 原文地址:https://www.cnblogs.com/wangguoyuan-09/p/7831982.html
Copyright © 2011-2022 走看看