• 常见的性能问题及定位方法


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

    举个例子:

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

    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是否高

  • 相关阅读:
    Go 映射 (map)
    Go 字节 (byte) & 文字符号 (rune)
    Go 数组(array) & 切片(slice)
    Go 字符串 (string)
    Go 变量(var) & 常量(const)
    Go 循环 (for)
    Go 函数
    Go package: strings
    Linux crontab (定时任务)
    Python gc
  • 原文地址:https://www.cnblogs.com/wangguoyuan-09/p/7831982.html
Copyright © 2020-2023  润新知