jcmd的简要分析命令


背景

端午加班一整天. 回到家同事让他们抓取一下堆栈信息好进行分析
连上VPN后就进行了一下处理.
自己简单看了下堆栈的总数等信息. 同事使用工具进行了分析. 我这边其实下过很多工具,但是都荒废了
就想,自己这些时间一直学习shell, 可以手工写一个简单分析.这样也有主语问题的快速分析与判断
晚上还顺便看了扣丁的微信公众号,学到了些新的知识点, 也准备记录一下. 感谢前人的努力贡献.

进行堆栈抓取和简要分析

now=`date +%Y%m%d%H%M`
jcmd `jcmd |grep caf |awk '{print $1}'` Thread.print >${now}.log
echo "**************堆栈里面的进程前缀分类********************" >> ${now}.analyzer.log
cat ${now}.log |grep java.lang.Thread.State -B 1 |grep -v java.lang.Thread.State: |grep -v '\-\-' |grep ^'"' |awk '{print $1}' |awk -F "-" '{print $1}' |sort |uniq -c |sort -k1hr >>${now}.analyzer.log
echo "**************堆栈里面的进程状态分类********************" >> ${now}.analyzer.log
cat ${now}.log |grep java.lang.Thread.State|awk -F ":" '{print $2}' |sort |uniq -c |sort -k1hr >> ${now}.analyzer.log
echo "**************locked的资源分类********************" >> ${now}.analyzer.log
cat ${now}.log|grep -i locked |awk -F "(" '{print $2}'|sort |uniq -c |sort -k1hr >> ${now}.analyzer.log

说明

其实抓取的方式很简单 就是 jcmd $pid Thread.print
jcmd 其实是JDK7 增加的一个总调命令, 他可以实现技术又有的java性能相关命令的工作. 这里不展开讲, 其实就是先抓取JVM的堆栈信息
先按照线程名字的最前面的前缀进行排序和分析并且转储到一个日期前缀的文件中 然后分析进程的状态信息. 然后也转储到相同文件中. 最后在看一下 locked的到底是锁到了哪些资源 其实命令可以随便加. 这个都是可以的.

其他学习

今天晚上顺便学习了 http-nio的进程的分类和pool进程的区别等. 感觉还是有收获的. 这里想总结一下:
1. http和pool其实都是线程池, pool也不是连接池的概念, 这里需要着重清晰
http主要进行网络交互相关的现场池, 他针对网络做了大量的调优工作. pool更趋向于普通任务或者是一次性动作类的线程池.
pool更加通用. http更加专注于http网络请求处理. 2. http-nio 仔细看其实有三类. 一类是accept 一类是poller, 最多的一类其实就是exec的进程
accept 顾名思义就是监听接收client请求的线程, 一般只有一个.
poller 线程一般用于 对accept接收管理的线程进行处理, 也可以进行redirect, 需要exec处理的就提交给jvm内部处理.
exec 的线程一般就是干活的了. 产品里面的max和min的线程数一般限制的就是这个线程池数为主 3. 今天还学了一个这样的参数: maxKeepAliveRequests
其实这个参数是tomcat 学习 apache 而来的一个参数.
他的含义是一个tcp连接上面最多可以复用的请求数,
如果设置为1 就是http1.0 没有任何复用,一个http一个tcp请求
不设置时默认值是100, 他在连续处理了100个请求后就会强制断掉tcp连接, 四步挥手后重新三步握手建议tcp连接.
设置为 -1 就不在进行max值的限制, 可以尽可能多的复用tcp连接.
如果是单用户或者是 很多负载均衡的场景, 我理解是可以将这个数值改大的.

jcmd的简要分析命令的更多相关文章

  1. MapReduce启动的Map/Reduce子任务简要分析

      对于Hadoop来说,是通过在DataNode中启动Map/Reduce java进程的方式来实现分布式计算处理的,那么就从源码层简要分析一下hadoop中启动Map/Reduce任务的过程.   ...

  2. hidraw设备简要分析

    关键词:hid.hidraw.usbhid.hidp等等. 下面首先介绍hidraw设备主要用途,然后简要分析hidraw设备驱动(但是不涉及到相关USB/Bluwtooth驱动),最后分析用户空间接 ...

  3. Activity源码简要分析总结

    Activity源码简要分析总结 摘自参考书籍,只列一下结论: 1. Activity的顶层View是DecorView,而我们在onCreate()方法中通过setContentView()设置的V ...

  4. getopt函数的使用——分析命令行参数

    getopt(分析命令行参数) getopt(分析命令行参数) 短参数的定义 返回值 范例 getopt_long 相关函数表头文件#include<unistd.h> 函数声明int g ...

  5. Nginx日志常用分析命令汇总 (转)

    三.常用日志分析命令 1.总请求数 1 wc -l access.log |awk '{print $1}' 2.独立IP数 1 awk '{print $1}' access.log|sort |u ...

  6. apache日志文件详解和实用分析命令

    apache日志文件每条数据的请意义,以及一些实用日志分析命令. 一.日志分析  如果apache的安装时采用默认的配置,那么在/logs目录下就会生成两个文件,分别是access_log和error ...

  7. Google发布SSLv3漏洞简要分析报告

    今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...

  8. 【转】getopt分析命令行参数

    (一) 在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如: ./a.out -a1234 -b432 -c -d 程序会根据读取的参数执行相应的操作,在C语言中,这个 ...

  9. 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(34)-文章发布系统①-简要分析

    原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(34)-文章发布系统①-简要分析 系列目录 最新比较闲,为了学习下Android的开发构建ASP.NET ...

  10. getopt 分析命令行参数 -n -t 1

    在Linux中,我们常常用到 ls -l 等等之类带有选项项的命令,下面,让我们用C++来实现该类似的命令. 在实现之前,首先,我们来介绍一下一个重要函数:getopt() 表头文件 #include ...

随机推荐

  1. 斯坦福 UE4 C++ ActionRoguelike游戏实例教程 05.认识GameMode&自动生成AI角色

    斯坦福课程 UE4 C++ ActionRoguelike游戏实例教程 0.绪论 概述 本篇文章将会讲述UE中Gamemode的基本概念,并在C++中开发GameMode,为游戏设置一个简单的玩法:使 ...

  2. 云小课|云数据库RDS实例连接失败了?送你7大妙招轻松应对

    摘要:自从购买了RDS实例,连接失败的问题就伴随着我,真是太难了.不要害怕,不要着急,跟着小云妹,读了本篇云小课,让你风里雨里,实例连接自此畅通无阻! 顺着以下几个方面进行排查,问题就可以迎刃而解~ ...

  3. 华为云应用服务网格最佳实践之从Spring Cloud 到 Istio

    摘要:在全球首届社区峰会IstioCon 2021中,华为云应用服务网格首席架构师张超盟发表了<Best practice:from Spring Cloud to Istio>主题演讲, ...

  4. 六一儿童节,看我用ModelArts让8090梦回童年

    [本期推荐] 8岁小朋友的儿童节,有点硬核,一起来认识这些小小程序员,看他们如何coding出一个与众不同的童年. 摘要: 如果还能再过一次儿童节-- 本文分享自华为云社区<"梦回童年 ...

  5. 火山引擎 DataTester 升级:降低产品上线风险,助力产品敏捷迭代

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,并进入官方交流群 在企业竞争加剧的今天,精益开发和敏捷迭代已成为产品重要的竞争力.如何保障每一次 Feature 高效迭代与安全,如何快速实 ...

  6. JQuery 弹出模态窗口

    index.html <!DOCTYPE html> <html> <head> <!-- Contact Form CSS files --> < ...

  7. Intellij IDEA 集成 Docker 发布

    1. Docker开启远程访问,注意端口不要用默认的,防止被攻击 [root@localhost ~]# vi /usr/lib/systemd/system/docker.service 修改 # ...

  8. AliAGC 自动增益控制算法:解决复杂场景下的音量问题

    音视频会议,直播连麦以及短视频已经成为人们工作.教学以及娱乐的一部分,其背后都离不开音视频实时通信等关键技术的广泛应用.音频方面,可预见的是客户业务形式的多样性,环境的复杂性,以及接入设备的差异性会带 ...

  9. 【k8s】基本原理学习

    k8s基本原理 https://www.cnblogs.com/BlueBlueSea/p/16908601.html 深入理解Kubernetes网络 深入理解Kubernetes的pod网络 参考 ...

  10. 《Flask Web 开发指南 pt.1》

    最近在看辉哥的<Flask Web 开发实战>,这才有了<Flask Web 开发指南>系列的文章,偏向学习笔记多一点,也有实战的内容 看下这个系列的文章我能写多少篇 :) 愚 ...