jcmd的简要分析命令
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的简要分析命令的更多相关文章
- MapReduce启动的Map/Reduce子任务简要分析
对于Hadoop来说,是通过在DataNode中启动Map/Reduce java进程的方式来实现分布式计算处理的,那么就从源码层简要分析一下hadoop中启动Map/Reduce任务的过程. ...
- hidraw设备简要分析
关键词:hid.hidraw.usbhid.hidp等等. 下面首先介绍hidraw设备主要用途,然后简要分析hidraw设备驱动(但是不涉及到相关USB/Bluwtooth驱动),最后分析用户空间接 ...
- Activity源码简要分析总结
Activity源码简要分析总结 摘自参考书籍,只列一下结论: 1. Activity的顶层View是DecorView,而我们在onCreate()方法中通过setContentView()设置的V ...
- getopt函数的使用——分析命令行参数
getopt(分析命令行参数) getopt(分析命令行参数) 短参数的定义 返回值 范例 getopt_long 相关函数表头文件#include<unistd.h> 函数声明int g ...
- Nginx日志常用分析命令汇总 (转)
三.常用日志分析命令 1.总请求数 1 wc -l access.log |awk '{print $1}' 2.独立IP数 1 awk '{print $1}' access.log|sort |u ...
- apache日志文件详解和实用分析命令
apache日志文件每条数据的请意义,以及一些实用日志分析命令. 一.日志分析 如果apache的安装时采用默认的配置,那么在/logs目录下就会生成两个文件,分别是access_log和error ...
- Google发布SSLv3漏洞简要分析报告
今天上午,Google发布了一份关于SSLv3漏洞的简要分析报告.根据Google的说法,该漏洞贯穿于所有的SSLv3版本中,利用该漏洞,黑客可以通过中间人攻击等类似的方式(只要劫持到的数据加密两端均 ...
- 【转】getopt分析命令行参数
(一) 在Linux中,用命令行执行可执行文件时可能会涉及到给其加入不同的参数的问题,例如: ./a.out -a1234 -b432 -c -d 程序会根据读取的参数执行相应的操作,在C语言中,这个 ...
- 构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(34)-文章发布系统①-简要分析
原文:构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(34)-文章发布系统①-简要分析 系列目录 最新比较闲,为了学习下Android的开发构建ASP.NET ...
- getopt 分析命令行参数 -n -t 1
在Linux中,我们常常用到 ls -l 等等之类带有选项项的命令,下面,让我们用C++来实现该类似的命令. 在实现之前,首先,我们来介绍一下一个重要函数:getopt() 表头文件 #include ...
随机推荐
- 聊一聊如何整合Microsoft.Extensions.DependencyInjection和Castle.Core(完结篇)
前言 书接上回,上回我们了解了 castle 代理的一些缺点,本文将开始操作整合 Microsoft.Extension.Dependency和Castle,以让默认的容器可以支持拦截器 我们将以进阶 ...
- 2023-09-13:用go语言,给定一个整数数组 nums 和一个正整数 k, 找出是否有可能把这个数组分成 k 个非空子集,其总和都相等。 输入: nums = [4, 3, 2, 3, 5,
2023-09-13:用go语言,给定一个整数数组 nums 和一个正整数 k, 找出是否有可能把这个数组分成 k 个非空子集,其总和都相等. 输入: nums = [4, 3, 2, 3, 5, 2 ...
- nacos 系列:.net core 6.0 使用 nacos
目录 安装 Nuget 包 配置 appsettings.json 添加服务和配置 测试 官方示例:https://kgithub.com/nacos-group/nacos-sdk-csharp 安 ...
- Flume快速入门
Flume快速入门 一.简介 高可用.高可靠,分布式的海量日志采集.聚合和传输系统,基于流式架构,灵活简单. event:事件 source:数据源 sink:目标 channel:数据管道 通过获取 ...
- ReactNative环境安装
一.Homebrew 采用 Homebrew 镜像源及工具,切换到国内. /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/Homebre ...
- 【福利活动】华为云“上云之路”征文大赛开启,FreeBuds3无线耳机等重磅好礼送不停
各位关注华为云的开发者们,达嘎猴啊~ 今天带给你们一个好消息,大家心心念念的华为云"上云之路"征文大赛已经正式开启啦. 举办本次华为云"上云之路"征文大赛的目的 ...
- TypeScript里string和String,真不是仅仅是大小写的区别
摘要:通常来说,string表示原生类型,而String表示对象. 本文分享自华为云社区<TypeScript里string和String的区别>,作者:gentle_zhou . 背景 ...
- 获取全国GeoJSON和各省市GeoJSON数据下载
第一,从阿里云下载: http://datav.aliyun.com/tools/atlas/#&lat=33.50475906922609&lng=104.2822265625&am ...
- Java ZIP文件解压
Java ZIP文件解压 备忘笔记 代码: private byte[] unZip(byte[] data) { byte[] bArr = null; try { ByteArrayInputSt ...
- AtCoder Regular Contest 124
比赛链接:Here A - LR Constraints 赛时做这个好迷啊,英文题面解释不清楚,还是看了日语原文才搞懂 \(n\) 个卡牌上有两个 字符 + 数字 组合,L 的右边所有元素 + 1,R ...