• 服务器cpu占用100%,如何排查(java进程&sql)


    服务端cpu占用100%,如何排查?本文从java进程和sql给出排查思路。

    A.java进程---大致流程是找出进程的pid-找到进程下占用资源最大的线程-用jstack打印出进程快照

    linux:

    1.top -c找到占用cpu较高的进程,获取到[pid]

    2.top -Hp [pid],查看该进程对应的线程,找到线程中占用cpu较高的线程id(tid)

    3.jstack -l [pid] > /path/[pid].stack,打印出进程此时的快照

    4.vi [pid].stack或者cat [pid].stack|grep '[tid]的16进制' -C 8,查看该线程在cpu占用100%时做了什么

    使用截图:

    windows:

    1.在任务管理中找到占用cpu较高的进程,获取[pid]

    2.使用Process Explorer获取该[pid]对应的线程,找到占用资源较高的线程id(tid)

    3.cmd窗口中输入jstack -l [pid] > /path/[pid].txt

    4.打开文件[pid].txt,查找[tid]的16进制所在的行,查看具体信息

    B.sql进程---例如在top -c中看到某个select占cpu100%...大致流程是找出当前具体是哪条sql在跑,再结合代码与业务分析

    在pgsql或navicat等sql工具的客户端找到“服务器状态”,然后可以看到服务端此时的sql动态,再将sql具体语句找到,进行分析:

  • 相关阅读:
    Asp.Net Core 3.1 使用Autofac Aop
    Abp中的工作单元UnitOfWork的Aop是如何实现的
    Asp.Net Core 3.1 Api 集成Abp项目AutoMapper
    Asp.Net Core 3.1 Api 集成Abp项目动态WebApi
    php限制登录次数
    vbs小实例
    php导出数据到excel
    mysqli单例模式连接数据库
    微信JsApi支付
    HTML5新增表单控件
  • 原文地址:https://www.cnblogs.com/jinziguang/p/11713380.html
Copyright © 2020-2023  润新知