zoukankan      html  css  js  c++  java
  • 在linux服务器上初步定位java接口耗时

    # 查看linux服务器cpu使用最高的pid
    top -c
    # 查看指定进程pid中cpu使用最高的线程pid
    top -Hp 39348 -c
    # 转成16进制
    printf "%x
    " 39361
    # java查看指定进程pid中对应线程信息
    jstack 39348 | grep 99c1
    
    #Jstack的输出中,Java线程状态主要是以下几种:
    RUNNABLE 线程运行中或I/O等待
    BLOCKED 线程在等待monitor锁(synchronized关键字)
    TIMED_WAITING 线程在等待唤醒,但设置了时限
    WAITING 线程在无限等待唤醒
    # 例如出现数据库查询sql卡死
    # 就会有大量线程为处于TIMED_WAITING状态,并且堆栈信息显示数据库驱动的类名
    # 查看sqlserver耗时sql
    SELECT TOP 20
        total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],
        qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],
        last_execution_time AS [最后一次执行时间],max_worker_time /1000 AS [最大执行时间(ms)],
        SUBSTRING(qt.text,qs.statement_start_offset/2+1, 
            (CASE WHEN qs.statement_end_offset = -1 
            THEN DATALENGTH(qt.text) 
            ELSE qs.statement_end_offset END -qs.statement_start_offset)/2 + 1) 
        AS [使用CPU的语法], qt.text [完整语法],
        dbname=db_name(qt.dbid),
        object_name(qt.objectid,qt.dbid) ObjectName
    FROM sys.dm_exec_query_stats qs WITH(nolock)
    CROSS apply sys.dm_exec_sql_text(qs.sql_handle) AS qt
    WHERE execution_count>1
    ORDER BY  total_worker_time DESC;
  • 相关阅读:
    阿里开源混沌工程工具 ChaosBlade
    十天入门java教程 Day01
    如何破解IDEA
    Locust压力测试使用总结
    python+requests接口自动化测试框架实例详解教程
    一个完整的性能测试流程
    jmeter测试报告汉化及脚本编写
    tomcat的日志文件权限与启动用户的权限不一致
    Linux下部署开源版“禅道”项目管理系统
    ELK原理与介绍
  • 原文地址:https://www.cnblogs.com/moy25/p/13065134.html
Copyright © 2011-2022 走看看