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;
  • 相关阅读:
    使用批处理脚本在win10系统启动Redis 5.0.10
    异常分析 JedisConnectionException: java.net.SocketTimeoutException: Read timed out
    Spring Boot基于redis分布式锁模拟直播秒杀场景
    管理的经验二
    第三方api接口
    接口测试总结
    测试框架的基本能力
    接口测试的价值
    面试的经验
    管理的经验
  • 原文地址:https://www.cnblogs.com/moy25/p/13065134.html
Copyright © 2011-2022 走看看