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. LayoutBuilder(获取父类的宽高)

    LayoutBuilder 是 Flutter 中的一个构建组件,用于根据父容器的约束对其子组件进行布局. import 'package:flutter/material.dart'; void m ...

  2. 从4个特点为你解密华为云媒体网络底座AND

    本文分享自华为云社区<解密华为云媒体网络底座ADN>,作者: Satan.D . 互联网的痛点与解决思路 互联网自1968年起源依赖,已经发展了半个多世纪.互联网仅从中文字面意思,可以简单 ...

  3. 10个安全问题带你了解OWASP 定义的大模型应用

    摘要:OWASP 的一群研究人员,总结目前大模型中可能存在的TOP10安全风险,很好的揭示了我们在大模型应用中需要防护的目标,以及如何采取相应的防护措施. 本文分享自华为云社区<OWASP 定义 ...

  4. 微服务架构下,DLI的部署和运维有何奥秘?

    摘要:探讨DLI两个问题:如何在生产环境中部署与运维实现快速迭代上线,如何实现监控告警来提升整体运维能力. 华为云数据湖探索DLI是支持多模引擎的Serverless大数据计算服务,其很好的实现了Se ...

  5. 火山引擎A/B测试在消费行业的案例实践

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,火山引擎数智平台举办了"走进火山-全链路增长:数据飞轮转动消费新生力"的活动,其中火山引 ...

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

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

  7. cxf 动态调用 WebService No compiler detected, make sure you are running on top of a JDK instead of a JRE

    WebService cxf No compiler detected, make sure you are running on top of a JDK instead of a JRE [202 ...

  8. Java 网络编程 —— ServerSocket 详解

    构造 ServerSocket ServerSocket 的构造方法有以下几种重载形式 ServerSocket() throws IOException ServerSocket(int port) ...

  9. 【redis】 redis linux下安装 redis启动方式 redis典型场景 redis通用命令 数据结构和内部编码 redis字符串类型

    目录 上节回顾 今日内容 1 redis介绍 2 redis linux下安装 3 redis启动方式 3.1 最简启动 3.2 动态参数启动 3.3 配置文件启动 3.4 客户端连接命令 4 red ...

  10. 【ToolChains】| CMake 技巧

    判断 CMake 编译环境 编译类型 CMAKE_BUILD_TYPE 可取值为:Debug, Release, RelWithDebInfo, MinSizeRel 等预设值 if (CMAKE_B ...