精华内容
下载资源
问答
  • linux jstack安装

    千次阅读 2021-01-11 21:09:59
    使用top top -H -p pid,肉眼观察之 使用ps ps -mo spid,lwp,stime,time,%cpu -p pid 将线程号转化成十六进制printf 0x%x n 使用jstack找到相应进程,打印线程后的100行信息 jstack -l pid| grep spid -A 100 统计...

    作为一个javaer,我以前写过很多关于Linux的文章。但经过多年的观察,发现其实对于大部分人,有些东西压根就用不着。用的最多的,就是到线上排查个问题而已,这让人很是苦恼。那么,我们就将范围再缩小一下。

    Linux生产环境上,最常用的一套“Sed“技巧

    Linux生产环境上,最常用的一套“AWK“技巧

    Linux生产环境上,最常用的一套“vim“技巧

    Linux命令好像还真不少,根本原因就是软件多,也有像ag这样的命令想替代grep,但大多数命令古老而坚挺。不是因为这些软件设计的有多好,原因是一些软件最开始入驻了系统,时间久了,就变成了一种约定,这种习惯改变代价太大,就像把所有键盘的L和F换一下一样。

    这片文章假定你已经了解大多数Linux命令,并了解操作系统的基本元素。如果你现在了解的命令还不足10个,下面的内容就不用看了。除了最基本的东西,本文列出一些对你的面试最常见的最能加分的地方,有些组合可能是你没见过的技巧。但本文仅仅是给出一个大致的轮廓和印象,为以后的专题性考察点作一个序。

    本文中出现的所有命令,应该熟记并熟练使用。

    几种比较典型的Linux系统

    首先对目前的Linux版本有个大体的印象,大体分Desktop版和Server版,已经是百花齐放。

    Ubuntu 最常见的Linux个人发行版,一位有情怀的南非富豪,有了钱你也可以这么做 CentOS 最常用Linux服务器发新版,RHEL的开放版本,因版权而生的轮子 Arch 滚动升级,海量二进制包,社区活跃,个人最爱 Gentoo 安装软件需要从源码开始编译,稳定,但用起来会很痛 LFS 从零构建Linux,跟着做一遍,Linux每根毛都看的清清楚楚 Kali 专做渗透用的,代表了发行版的一个发展路径,就是领域

    首先要了解的概念

    KISS Keep it Simple and Stupid,据说是哲学 一切皆文件 通常是文件的东西叫文件,进程、磁盘等也被抽象成了文件,比较离谱的管道、设备、socket等,也是文件。 这是Linux最重要的组织方式。 管道 | 分隔,前面命令的输出作为后面命令的输入,可以串联多个 重定向 < 将文件做为命令的输入

    将命令的输出输出到文件

    将命令的输出追加到文件

    SHELL 首先确认你的shell,一般最常用的是bash,也有不少用csh,zsh等的,通过echo $SHELL可以看到当前用户的shell,对应的配置文件也要相应改变。 比如.zshrc,.bashrc

    四大元素

    进入linux,我们首先关注的是四个元素:

    内存,cpu,存储,网络。

    Linux提供了足够的命令,让你窥探它的每个角落。

    接下来的命令都是些最常用的,不管精通不精通,想不起来要打屁股。

    CPU

    使用top查看cpu的load,使用shift+p按照cpu排序。 需要了解wa,us等都是什么意思 使用uptime查看系统启动时间和load,load是什么意思呢? 什么算是系统过载? 这是个高频问题,别怪我没告诉你 ps命令勃大茎深,除了查进程号外,你还需要知道R、S、D、T、Z、

    内存

    free -m 命令,了解free、used、cached、swap各项的含义 cat /proc/meminfo 查看更详细的内存信息 细心的同学可能注意到,CPU和内存的信息,通过top等不同的命令显示的数值是一样的。 slabtop 用来显示内核缓存占用情况,比如遍历大量文件造成缓存目录项。 曾在生产环境中遇到因执行find /造成dentry_cache耗尽服务器内存。 vmstat 命令是我最喜欢也最常用的命令之一,可以以最快的速度了解系统的运行状况。 每个参数的意义都要搞懂。 swapon、swapoff 开启,关闭交换空间 sar 又一统计类轮子,一般用作采样工具

    存储

    使用df -h查看系统磁盘使用概况 lsblk 列出块设备信息 du 查看目录或者文件大小

    网络

    rsync 强大的同步工具,可以增量哦 netstat 查看Linux中网络系统状态信息,各种 ss 它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。 curl、wget 模拟请求工具、下载工具。 如wget -r http://site 将下载整个站点 ab Apache服务器的性能测试工具 ifstat 统计网络接口流量状态 nslookup 查询域名DNS信息的工具,在内网根据ip查询域名是爽爆了 nc 网络工具中的瑞士军刀,不会用真是太可惜了 arp 可以显示和修改IP到MAC转换表 traceroute 显示数据包到主机间的路径,俗称几跳,跳的越少越快 tcpdump 不多说了,去下载wireshark了 wall 向当前所有打开的终端上输出信息。 使用who命令发现女神正在终端上,可以求爱

    网络方面推荐安装体验一下kaliLinux,上面的工具会让你high到极点。

    如何组织起来

    linux的命令很有意思,除了各种stat来监控状态,也有各种trace来进行深入的跟踪,也有各种top来统计资源消耗者,也有各种ls来查看系统硬件如lsblk、lsusb、lscpi。基本上跟着你的感觉走,就能找到相应的工具,因为约定是系统中最强大的导向。

    Linux有个比较另类的目录/proc,承载了每个命令的蹂躏。像sysctl命令,就是修改的/proc/sys目录下的映射项。不信看看find /proc/sys -type f | wc -l和sysctl -a| wc -l的结果是不是很像?

    /proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。只不过以文件系统的方式为访问系统内核数据的操作提供接口。系统的所有状态都逃不过它的火眼金睛。例如:

    cat /proc/vmstat 看一下,是不是和vmstat命令的输出很像? cat /proc/meminfo 是不是最全的内存信息 cat /proc/slabinfo 这不就是slabtop的信息么 cat /proc/devices 已经加载对设备们 cat /proc/loadavg load avg原来就躺在这里啊 cat /proc/stat 所有的CPU活动信息 ls /proc/$pid/fd 静静地躺着lsof的结果

    一般排查问题的方法

    一般排查问题也是围绕着内存cpu等几个元素去排查。下图是一张大体的排查故障或者性能问题的过程,看图,不多说。

    应用场景举例

    下面举例从具体应用场景来说明各种命令的组合应用,此类场景数不胜数,需要个人积累。但强烈建议将sed和awk练的熟练一些。

    怎么查看某个Java进程里面占用CPU最高的一个线程具体信息?

    获取进程中占用CPU最高的线程,计为n。 使用top top -H -p pid,肉眼观察之 使用ps ps -mo spid,lwp,stime,time,%cpu -p pid 将线程号转化成十六进制printf 0x%x n 使用jstack找到相应进程,打印线程后的100行信息 jstack -l pid| grep spid -A 100

    统计每种网络状态的数量

    netstat -ant | awk '{print $6}' | sort | uniq -c | sort -n -k 1 -r![5.jpg](https://ucc.alicdn.com/pic/developer-ecology/655b656daf0344d58dbfd798fe1460b8.jpg)

    首先使用netstat查看列表,使用’awk’截取第六列,使用uniq进行统计,并对统计结果排序。当然,也可以这样。

    netstat -ant | awk '{arr[$6]++}END{for(i in arr){print arr[i]" "i }}' | sort -n -k 1 -r

    这和“分析apache日志,给出当日访问ip的降序列表”是一样的问题。

    怎么查看哪个进程在用swap

    首先要了解/proc/$pid/smaps里有我们所需要的各种信息,其中Swap字段即是我们所需要的。只要循环遍历一下即可。

    for i in `cd /proc;ls |grep "^[0-9]"|awk ' $0 >100'` ;do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps ;done |sort -k2nr

    End

    软件领域有两种人才,一种是工程型的,一种是研究型的。在Linux领域里,相对于搞内核研究的来说,搞命令行的就属于工程型。工程型也有他自己的苦衷,比如,背诵命令就挺痛苦的,一般来说不太推荐背诵,第一覆盖的面不广,第二记的快忘的也快,浪费脑细胞。牛逼的记法就是用,用时间来冲淡烟云,见微知著,并体验其中的喜悦。爱她并天天抱她上床,真爱才成。

    原创:小姐姐味道。

    展开全文
  • linux怎么安装jstack工具?

    千次阅读 2020-12-20 14:47:15
    jstack用于打印出给定的java进程ID或core file或"aliyun-text-card" data-text-url="markets/aliyun/lego/searchresult_devicemanagement" href= ...

    jstack用于打印出给定的java进程ID或core file或"aliyun-text-card" data-text-url="markets/aliyun/lego/searchresult_devicemanagement" href= "https://www.aliyun.com/product/iot-devicemanagement?source=neibu_aliyunguanwang">远程调试服务的Java堆栈信息。

    如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack [-l] pid

    如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。

    另外,jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 如果现在运行的java程序呈现hung的状态,jstack是非常有用的。

    l 不同的 JAVA虚机的线程 DUMP的创建方法和文件格式是不一样的,不同的 JVM版本, dump信息也有差别。

    l 在实际运行中,往往一次 dump的信息,还不足以确认问题。建议产生三次 dump信息,如果每次 dump都指向同一个问题,我们才确定问题的典型性。

    命令格式

    $jstack [ option ] pid

    $jstack [ option ] executable core

    $jstack [ option ] [server-id@]remote-hostname-or-IP

    pid: java应用程序的进程号,一般可以通过jps来获得

    executable:产生core dump的java可执行程序

    core:打印出的core文件

    remote-hostname-or-ip:远程debug服务器的名称或IP

    server-id: 唯一id,假如一台主机上多个远程debug服务

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"帮助您在VPC环境下构建一个公网流量的出入口,通过自定义SNAT,DNAT规则灵活使用网络资源,支持多IP,支持共享公网带宽。","link1":"https://www.aliyun.com/product/nat","link":"https://www.aliyun.com/product/nat","icon":"https://img.alicdn.com/tfs/TB12aK6uGmWBuNjy1XaXXXCbXXa-200-200.png","btn2":"了解价格","tip":"小型规格12元/天,立即查看 最新产品和实时动态重磅发布 ,立即查看","btn1":"立即开通","link2":"https://help.aliyun.com/document_detail/48126.html?spm=a2c4g.11186623.6.548.pXC65L","title":"NAT网关"}],"search":[{"txt":"产品文档","link":"https://help.aliyun.com/product/44413.html"},{"txt":"快速入门","link":"https://help.aliyun.com/document_detail/65157.html"},{"txt":"最佳实践","link":"https://help.aliyun.com/document_detail/32327.html"},{"txt":"产品动态","link":"https://www.aliyun.com/product/new?source_type=out_sousuo_feature_0716"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"$tmsId":"tce/1588315"}

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":10,"count":10}]},"card":[{"des":"物联网设备管理提供方便快捷的设备管理能力,帮助您在海量设备中快速检索到指定设备,您可以定义设备的属性、事件、服务,基于定义的物模型对设备进行远程调试、远程监控、远程维护等操作。","link1":"https://www.aliyun.com/product/iot-devicemanagement?source=neibu_aliyunguanwang","link":"https://www.aliyun.com/product/iot-devicemanagement?source=neibu_aliyunguanwang","icon":"https://img.alicdn.com/tfs/TB1UX8wc7xz61VjSZFrXXXeLFXa-200-200.png","btn2":"产品价格","tip":"提供方便快捷的设备管理能力","btn1":"查看详情","link2":"https://help.aliyun.com/document_detail/91979.html?source=neibu_aliyunguanwang","title":"物联网设备管理"}],"search":[{"txt":"物联网应用中心","link":"https://linkmarket.aliyun.com/pp/application?source=neibu_aliyunguanwang"},{"txt":"分销商招募","link":"https://linkmarket.aliyun.com/tms/distributor?source=neibu_aliyunguanwang"},{"txt":"物联网设备接入","link":"https://www.aliyun.com/product/iot-deviceconnect?source=neibu_aliyunguanwang"},{"txt":"物联网络管理平台","link":"https://iot.aliyun.com/products/linkwan?source=neibu_aliyunguanwang"},{"txt":"物联网应用开发","link":"https://iot.aliyun.com/products/iotstudio?source=neibu_aliyunguanwang"},{"txt":"物联网边缘计算","link":"https://iot.aliyun.com/products/linkedge?source=neibu_aliyunguanwang"},{"txt":"AliOS Things","link":"https://iot.aliyun.com/products/aliosthings"},{"txt":"物联网设备身份认证","link":"https://iot.aliyun.com/products/ID2?source=neibu_aliyunguanwang"},{"txt":"物联网测试认证服务","link":"https://iot.aliyun.com/linkcertification?source=neibu_aliyunguanwang"},{"txt":"物联网解决方案","link":"https://linkmarket.aliyun.com/search?source=neibu_aliyunguanwang"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}}}

    {"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":10,"count":10}]},"card":[{"des":"物联网设备管理提供方便快捷的设备管理能力,帮助您在海量设备中快速检索到指定设备,您可以定义设备的属性、事件、服务,基于定义的物模型对设备进行远程调试、远程监控、远程维护等操作。","link1":"https://www.aliyun.com/product/iot-devicemanagement?source=neibu_aliyunguanwang","link":"https://www.aliyun.com/product/iot-devicemanagement?source=neibu_aliyunguanwang","icon":"https://img.alicdn.com/tfs/TB1UX8wc7xz61VjSZFrXXXeLFXa-200-200.png","btn2":"产品价格","tip":"提供方便快捷的设备管理能力","btn1":"查看详情","link2":"https://help.aliyun.com/document_detail/91979.html?source=neibu_aliyunguanwang","title":"物联网设备管理"}],"search":[{"txt":"物联网应用中心","link":"https://linkmarket.aliyun.com/pp/application?source=neibu_aliyunguanwang"},{"txt":"分销商招募","link":"https://linkmarket.aliyun.com/tms/distributor?source=neibu_aliyunguanwang"},{"txt":"物联网设备接入","link":"https://www.aliyun.com/product/iot-deviceconnect?source=neibu_aliyunguanwang"},{"txt":"物联网络管理平台","link":"https://iot.aliyun.com/products/linkwan?source=neibu_aliyunguanwang"},{"txt":"物联网应用开发","link":"https://iot.aliyun.com/products/iotstudio?source=neibu_aliyunguanwang"},{"txt":"物联网边缘计算","link":"https://iot.aliyun.com/products/linkedge?source=neibu_aliyunguanwang"},{"txt":"AliOS Things","link":"https://iot.aliyun.com/products/aliosthings"},{"txt":"物联网设备身份认证","link":"https://iot.aliyun.com/products/ID2?source=neibu_aliyunguanwang"},{"txt":"物联网测试认证服务","link":"https://iot.aliyun.com/linkcertification?source=neibu_aliyunguanwang"},{"txt":"物联网解决方案","link":"https://linkmarket.aliyun.com/search?source=neibu_aliyunguanwang"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}}}}

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":2,"count":2}]},"card":[{"des":"【知道】是阿里云的社会化服务平台,通过 ACE 工程师互助问答,解决云产品使用过程中的问题。希望通过用户共创,建立云产品及服务的问答知识库。","link1":"https://mvp.aliyun.com/zhidao","link":"https://mvp.aliyun.com/zhidao","icon":"https://img.alicdn.com/tfs/TB1t7TTJN1YBuNjy1zcXXbNcXXa-196-196.png","btn2":"有奖抢答","tip":"云产品使用问题,ACE 为你快速解答","btn1":"快速求助","link2":"https://mvp.aliyun.com/zhidao/answer","title":"知道"}],"search":[{"txt":"最新问题","link":"https://mvp.aliyun.com/zhidao/answer"},{"txt":"高奖励","link":"https://mvp.aliyun.com/zhidao/answer"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"$tmsId":"tce/1662054"}

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,提供数据库优化方面专业建议,在业务高峰期与用户共同保障数据库系统平稳运行。","link1":"https://www.aliyun.com/service/optimization/database","link":"https://www.aliyun.com/service/chiefexpert/database","icon":"https://img.alicdn.com/tfs/TB1a5ZfonnI8KJjy0FfXXcdoVXa-100-100.png","btn2":"数据库紧急救援服务","tip":"还有更多专家帮助您解决云上业务问题:立即查看","btn1":"云上数据库优化服务","link2":"https://www.aliyun.com/service/databaserescue","title":"数据库专家服务"}],"search":[{"txt":"安全首席专家","link":"https://www.aliyun.com/service/chiefexpert/security"},{"txt":"中间件首席专家","link":"https://www.aliyun.com/service/chiefexpert/middleware"},{"txt":"系统与平台首席专家","link":"https://www.aliyun.com/service/chiefexpert/platform"},{"txt":"存储首席专家","link":"https://www.aliyun.com/service/chiefexpert/storage"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://img.alicdn.com/tfs/TB1XY8hGYr1gK0jSZFDXXb9yVXa-1740-328.png","icon":"dts","contentLink":"https://www.aliyun.com/product/dts","title":"数据传输DTS","des":"数据传输服务DTS支持关系型数据库、NoSQL、OLAP等数据源间的迁移、同步、订阅,轻松实现多数据源实时数据同步、不停机上云迁移或异地多活数据中心等,助力企业构建安全、可扩展、高可用的数据架构。","btn1":"了解详情","link1":"https://www.aliyun.com/product/dts","btn2":"管理控制台","link2":"https://dts.console.aliyun.com/?spm=5176.cndts.0.0.730c32f06LfasE#/home/","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"DTS首月39元","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_6058091700","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentName":"数据迁移操作指导","firstContentLink":"https://help.aliyun.com/document_detail/147249.html","lastContentName":"应用场景","lastContentLink":"https://help.aliyun.com/document_detail/26599.html"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"小型互联网迁移上云","firstContentLink":"https://www.aliyun.com/acts/best-practice/preview?spm=5176.13342246.w1tfgtvmh.60.12233ccbUmqfIr&id=145150&aly_as=iAug2Y4KP小型互联网迁移上云","lastContentName":"数据迁移上云实践","lastContentLink":"https://edu.aliyun.com/lab/courses/f236e1c7c40d4959bd9f9cf569a246cb/detail?spm=5176.11105640.0.0.9Gz3hv"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","lastContentName":"云原生数据仓库MySQL","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentLink":"https://www.aliyun.com/product/ads"}}]}],"visual":{"textColor":"dark","topbg":""}}

    {"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航,为用户的数据库应用系统进行性能和风险评估,参与配合进行数据压测演练,提供数据库优化方面专业建议,在业务高峰期与用户共同保障数据库系统平稳运行。","link1":"https://www.aliyun.com/service/optimization/database","link":"https://www.aliyun.com/service/chiefexpert/database","icon":"https://img.alicdn.com/tfs/TB1a5ZfonnI8KJjy0FfXXcdoVXa-100-100.png","btn2":"数据库紧急救援服务","tip":"还有更多专家帮助您解决云上业务问题:立即查看","btn1":"云上数据库优化服务","link2":"https://www.aliyun.com/service/databaserescue","title":"数据库专家服务"}],"search":[{"txt":"安全首席专家","link":"https://www.aliyun.com/service/chiefexpert/security"},{"txt":"中间件首席专家","link":"https://www.aliyun.com/service/chiefexpert/middleware"},{"txt":"系统与平台首席专家","link":"https://www.aliyun.com/service/chiefexpert/platform"},{"txt":"存储首席专家","link":"https://www.aliyun.com/service/chiefexpert/storage"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}},"simplifiedDisplay":"newEdition","newCard":[{"link":"https://img.alicdn.com/tfs/TB1XY8hGYr1gK0jSZFDXXb9yVXa-1740-328.png","icon":"dts","contentLink":"https://www.aliyun.com/product/dts","title":"数据传输DTS","des":"数据传输服务DTS支持关系型数据库、NoSQL、OLAP等数据源间的迁移、同步、订阅,轻松实现多数据源实时数据同步、不停机上云迁移或异地多活数据中心等,助力企业构建安全、可扩展、高可用的数据架构。","btn1":"了解详情","link1":"https://www.aliyun.com/product/dts","btn2":"管理控制台","link2":"https://dts.console.aliyun.com/?spm=5176.cndts.0.0.730c32f06LfasE#/home/","btn3":"在线咨询","link3":"https://www.aliyun.com/core/online-consult?spm=5176.8789780.7y9jhqsfz.115.47ea55caeL2Mfu&from=OVtXEBmlH8","infoGroup":[{"infoName":"最新活动","infoContent":{"firstContentName":"DTS首月39元","firstContentLink":"https://www.aliyun.com/database/dbfirstbuy#J_6058091700","lastContentName":"ECS+MySQL 0.7元/日","lastContentLink":"https://www.aliyun.com/1111/enterprise"}},{"infoName":"快速入门","infoContent":{"firstContentName":"数据迁移操作指导","firstContentLink":"https://help.aliyun.com/document_detail/147249.html","lastContentName":"应用场景","lastContentLink":"https://help.aliyun.com/document_detail/26599.html"}},{"infoName":"最佳实践","infoContent":{"firstContentName":"小型互联网迁移上云","firstContentLink":"https://www.aliyun.com/acts/best-practice/preview?spm=5176.13342246.w1tfgtvmh.60.12233ccbUmqfIr&id=145150&aly_as=iAug2Y4KP小型互联网迁移上云","lastContentName":"数据迁移上云实践","lastContentLink":"https://edu.aliyun.com/lab/courses/f236e1c7c40d4959bd9f9cf569a246cb/detail?spm=5176.11105640.0.0.9Gz3hv"}},{"infoName":"产品推荐","infoContent":{"firstContentName":"云数据库PolarDB","lastContentName":"云原生数据仓库MySQL","firstContentLink":"https://www.aliyun.com/product/polardb","lastContentLink":"https://www.aliyun.com/product/ads"}}]}],"visual":{"textColor":"dark","topbg":""}}}

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":2,"count":2}]},"card":[{"des":"打造能感知、可交互、会思考、自进化的“智能公厕”,实现对公厕环境、资源、设施、安保的智能治理,提高公厕建设质量,健全公厕管理体制,提升厕所文明水平,让市民“方便”更方便。","link1":"https://www.aliyun.com/solution/iot/toilets","link":"https://www.aliyun.com/solution/iot/toilets","icon":"https://img.alicdn.com/tfs/TB1V1raevb2gK0jSZK9XXaEgFXa-200-200.png","btn2":"立即咨询","tip":"更多优质解决方案 立即查看 立即咨询","btn1":"方案详情","link2":"https://page.aliyun.com/form/act1400415011/index.htm","title":"智慧厕所解决方案"}],"search":[{"txt":"智慧厕所","link":"https://www.aliyun.com/solution/iot/toilets"},{"txt":"智慧厕所解决方案","link":"https://www.aliyun.com/solution/iot/toilets"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}}}

    {"$env":{"JSON":{}},"$page":{"env":"production"},"$context":{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":2,"count":2}]},"card":[{"des":"打造能感知、可交互、会思考、自进化的“智能公厕”,实现对公厕环境、资源、设施、安保的智能治理,提高公厕建设质量,健全公厕管理体制,提升厕所文明水平,让市民“方便”更方便。","link1":"https://www.aliyun.com/solution/iot/toilets","link":"https://www.aliyun.com/solution/iot/toilets","icon":"https://img.alicdn.com/tfs/TB1V1raevb2gK0jSZK9XXaEgFXa-200-200.png","btn2":"立即咨询","tip":"更多优质解决方案 立即查看 立即咨询","btn1":"方案详情","link2":"https://page.aliyun.com/form/act1400415011/index.htm","title":"智慧厕所解决方案"}],"search":[{"txt":"智慧厕所","link":"https://www.aliyun.com/solution/iot/toilets"},{"txt":"智慧厕所解决方案","link":"https://www.aliyun.com/solution/iot/toilets"}],"countinfo":{"search":{"length_pc":0,"length":0},"card":{"length_pc":0,"length":0}}}}

    展开全文
  • centos系统 JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo的安装 如果是用的yum 安装的openjdk 的话,是不会带java 开发调试工具 jstack jmap 等等的. 想要使用jstack命令 查看java程序线程信息,安装jstack ...

    centos系统 JVM性能调优监控工具jps、jstack、jstat、jmap、jinfo的安装


    如果是用的yum 安装的openjdk 的话,是不会带java 开发调试工具 jstack jmap 等等的.
    想要使用jstack命令 查看java程序线程信息,安装jstack 直接用 yum install jstack 会报错 No package jstack available , 如下:

    在这里插入图片描述

    那么下面就介绍下如何 安装 jdk开发调试工具

    • 首先,yum list --showduplicate | grep java-1.8 | grep devel 查看 有哪些可安装的jdk1.8 开发工具 包,如下:
      在这里插入图片描述

    • 选择一个适合自己的yum安装: yum install java-1.8.0-openjdk-devel.x86_64 -y
      在这里插入图片描述

    • 安装成功后就可以使用 jps、jstack、jstat、jmap、jinfo 命令了

      • jstack
        在这里插入图片描述
      • jmap
        在这里插入图片描述

    上面介绍的了查看jvm性能的命令工具,jdk还提供了 强大的远程jmx图形监控客户端
    可以看下这篇文章 在本地windows用jmx图形客户端jConsole jmc jvisualvm 连接远程服务器java程序jvm监控服务

    展开全文
  • jstack命令

    千次阅读 2017-07-07 21:36:54
    jstack查看cpu占用率比较高的进程或者检查死锁等问题。
    root@iZ0z00b09p3thwZ:~# jstack 13773
    2017-07-07 21:34:20
    Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode):
    
    "Attach Listener" #20 daemon prio=9 os_prio=0 tid=0x00007fbf90001000 nid=0x360c waiting on condition [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "DestroyJavaVM" #19 prio=5 os_prio=0 tid=0x00007fbfb8007800 nid=0x35ce waiting on condition [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "SimpleTask2" #18 prio=5 os_prio=0 tid=0x00007fbfb8115000 nid=0x35de waiting on condition [0x00007fbfa6a29000]
       java.lang.Thread.State: TIMED_WAITING (sleeping)
    	at java.lang.Thread.sleep(Native Method)
    	at com.cyb.thread.SimpleTask.run(SimpleTask.java:33)
    	at java.lang.Thread.run(Thread.java:748)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:748)
    
    "SimpleJoinTask" #17 prio=5 os_prio=0 tid=0x00007fbfb8113800 nid=0x35dd waiting on condition [0x00007fbfa6b2a000]
       java.lang.Thread.State: TIMED_WAITING (parking)
    	at sun.misc.Unsafe.park(Native Method)
    	- parking to wait for  <0x00000000f008a778> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
    	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
    	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:748)
    
    "SimpleTask1" #15 prio=5 os_prio=0 tid=0x00007fbfb8112000 nid=0x35dc waiting on condition [0x00007fbfa6c2b000]
       java.lang.Thread.State: TIMED_WAITING (sleeping)
    	at java.lang.Thread.sleep(Native Method)
    	at com.cyb.thread.SimpleTask.run(SimpleTask.java:33)
    	at java.lang.Thread.run(Thread.java:748)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    	at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
    	at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:748)
    
    "返回值线程测试2" #12 prio=5 os_prio=0 tid=0x00007fbfb810f800 nid=0x35db waiting on condition [0x00007fbfa6d2c000]
       java.lang.Thread.State: WAITING (parking)
    	at sun.misc.Unsafe.park(Native Method)
    	- parking to wait for  <0x00000000f0088410> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
    	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
    	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
    	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:748)
    
    "王五-inpool" #11 prio=5 os_prio=0 tid=0x00007fbfb810d800 nid=0x35da waiting for monitor entry [0x00007fbfa6e2d000]
       java.lang.Thread.State: BLOCKED (on object monitor)
    	at com.cyb.thread.TestDeadLock.run(TestDeadLock.java:97)
    	- waiting to lock <0x00000000f006b9c8> (a com.cyb.thread.Knife)
    	- locked <0x00000000f006d0e8> (a com.cyb.thread.Fork)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:748)
    
    "李四-inpool" #10 prio=5 os_prio=0 tid=0x00007fbfb810c000 nid=0x35d9 waiting for monitor entry [0x00007fbfa6f2e000]
       java.lang.Thread.State: BLOCKED (on object monitor)
    	at com.cyb.thread.TestDeadLock.run(TestDeadLock.java:72)
    	- waiting to lock <0x00000000f006b9c8> (a com.cyb.thread.Knife)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:748)
    
    "老李#" #9 prio=5 os_prio=0 tid=0x00007fbfb8106800 nid=0x35d8 waiting for monitor entry [0x00007fbfa702f000]
       java.lang.Thread.State: BLOCKED (on object monitor)
    	at com.cyb.thread.TestDeadLock.run(TestDeadLock.java:72)
    	- waiting to lock <0x00000000f006b9c8> (a com.cyb.thread.Knife)
    	at java.lang.Thread.run(Thread.java:748)
    
    "小陈#" #8 prio=5 os_prio=0 tid=0x00007fbfb8105800 nid=0x35d7 waiting for monitor entry [0x00007fbfa7130000]
       java.lang.Thread.State: BLOCKED (on object monitor)
    	at com.cyb.thread.TestDeadLock.run(TestDeadLock.java:79)
    	- waiting to lock <0x00000000f006d0e8> (a com.cyb.thread.Fork)
    	- locked <0x00000000f006b9c8> (a com.cyb.thread.Knife)
    	at java.lang.Thread.run(Thread.java:748)
    
    "Service Thread" #7 daemon prio=9 os_prio=0 tid=0x00007fbfb80a7000 nid=0x35d5 runnable [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "C1 CompilerThread1" #6 daemon prio=9 os_prio=0 tid=0x00007fbfb80a3800 nid=0x35d4 waiting on condition [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "C2 CompilerThread0" #5 daemon prio=9 os_prio=0 tid=0x00007fbfb80a1800 nid=0x35d3 waiting on condition [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "Signal Dispatcher" #4 daemon prio=9 os_prio=0 tid=0x00007fbfb809f800 nid=0x35d2 runnable [0x0000000000000000]
       java.lang.Thread.State: RUNNABLE
    
    "Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007fbfb8078000 nid=0x35d1 in Object.wait() [0x00007fbfa7a0e000]
       java.lang.Thread.State: WAITING (on object monitor)
    	at java.lang.Object.wait(Native Method)
    	- waiting on <0x00000000f0008ec8> (a java.lang.ref.ReferenceQueue$Lock)
    	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143)
    	- locked <0x00000000f0008ec8> (a java.lang.ref.ReferenceQueue$Lock)
    	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:164)
    	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:209)
    
    "Reference Handler" #2 daemon prio=10 os_prio=0 tid=0x00007fbfb8073800 nid=0x35d0 in Object.wait() [0x00007fbfa7b0f000]
       java.lang.Thread.State: WAITING (on object monitor)
    	at java.lang.Object.wait(Native Method)
    	- waiting on <0x00000000f0006b68> (a java.lang.ref.Reference$Lock)
    	at java.lang.Object.wait(Object.java:502)
    	at java.lang.ref.Reference.tryHandlePending(Reference.java:191)
    	- locked <0x00000000f0006b68> (a java.lang.ref.Reference$Lock)
    	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:153)
    
    "VM Thread" os_prio=0 tid=0x00007fbfb806c000 nid=0x35cf runnable 
    
    "VM Periodic Task Thread" os_prio=0 tid=0x00007fbfb80ae800 nid=0x35d6 waiting on condition 
    
    JNI global references: 22
    
    
    Found one Java-level deadlock:
    =============================
    "王五-inpool":
      waiting to lock monitor 0x00007fbf980062c8 (object 0x00000000f006b9c8, a com.cyb.thread.Knife),
      which is held by "小陈#"
    "小陈#":
      waiting to lock monitor 0x00007fbf98003828 (object 0x00000000f006d0e8, a com.cyb.thread.Fork),
      which is held by "王五-inpool"
    
    Java stack information for the threads listed above:
    ===================================================
    "王五-inpool":
    	at com.cyb.thread.TestDeadLock.run(TestDeadLock.java:97)
    	- waiting to lock <0x00000000f006b9c8> (a com.cyb.thread.Knife)
    	- locked <0x00000000f006d0e8> (a com.cyb.thread.Fork)
    	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:748)
    "小陈#":
    	at com.cyb.thread.TestDeadLock.run(TestDeadLock.java:79)
    	- waiting to lock <0x00000000f006d0e8> (a com.cyb.thread.Fork)
    	- locked <0x00000000f006b9c8> (a com.cyb.thread.Knife)
    	at java.lang.Thread.run(Thread.java:748)
    
    Found 1 deadlock.
    

    展开全文
  • centos下使用jstack

    2020-08-04 14:46:38
    jstack -l 2897 将堆栈信息输出到文件 jstack -l 7780 >> /tomcat/jstack.txt 列出进程中的线程列表 top -Hp 17231 找出最高的线程ID 4823 转换成16进制 12d7 查看这个线程对应栈信息 jstack 17231 | grep -A ...
  • 前言 ...找到jdk安装目录,查看目录下文件,发现地区没有安装jstack,因为有些openJDK版本的确没有此文件: [root@localhost bin]# which java /usr/bin/java [root@localhost bin]# ls -l /usr/bin/ja.
  • jstack的使用

    2019-07-21 18:55:50
    1、jstack -F 6800 2、jstack -l 6800 3、jstack -m 6800 四、线程与Monitor 一、介绍 jstack是java虚拟机自带的一种堆栈跟踪工具。jstack用于打印出给定的java进程ID或corefile或远程调试服务的Java堆栈 ...
  • 关于linux下无法使用jstack的问题详解

    千次阅读 2021-05-09 02:33:33
    前言jstack是java自带的一种堆栈跟踪工具。jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息。...于是,你就到处的查找jstackd的安装方法,但都是一无所获。解决思路1...
  • docker容器中使用jstack、jmap

    千次阅读 2019-11-23 22:32:26
    docker容器中使用jstack、jmap (基于livingobjects/jre8的镜像) #进入容器里 docker exec -it xxx /bin/bash 容器里面运行: 1、修改源: cd /etc/apk vi repositories 2、替换成阿里源 ...
  • 要使用jstack首先要有jdk环境,这个大家可以自行百度安装一下 第一步通过 ps -ef | grep XXX找出对应的服务的PID 可以多重嵌套使用ps命令 ps -ef | grep java | grep wms | grep 30010 得到进程ID为14007,第二步找...
  • 如题,配置好jdk后,java -version是能正常显示。但jps等命令不能使用。 同时发现默认的创建java进程文件的目录下为空,即C:\Users\DELL\AppData\Local\Temp\hsperfdata_DELL盘下未创建进程pid文件。...
  • docker容器jstack排查

    千次阅读 2019-12-18 16:57:28
    1、sudo su 暂时申请root权限; 2、docker ps | grep 服务名 查找指定images的镜像; 3、docker exec -it 镜像id /bin/bash 进入容器 4、top 获取java进程pid 5、jstack PID 查看堆栈信息 ...
  • jstack使用教程

    2016-12-07 18:20:00
    4. sudo -u tomcat jstack 3192 | grep ddf "New I/O worker #30" daemon prio=10 tid=0x00007f44fd525800 nid=0xde4 runnable [0x00007f4530ddf000] "DubboResponseTimeoutScanTimer" daemon prio=10 tid=0x...
  • Linux系列:Jstack使用方法

    千次阅读 2020-09-06 22:42:52
    jstack A.top 找到CPU高的进程 (原理:方法是由线程执行的,线程是在进程下的,找到进程下cpu最高的线程就能定位到方法) >>CPU、内存定位性能问题 B. Jstack pid > p.txt用 jstack 导出线程...
  • docker容器内使用jstack等命令报错

    千次阅读 2019-08-27 09:48:30
    记得之前也在容器中使用过jstack命令,没问题,最近再次使用时,报错了,在网上查了一下,记录下来解决方案 报错信息如下: # jstack -F 1 Attaching to process ID 1, please wait... Error attaching to ...
  • 是因为使用的JDK镜像是精简版,没有这些额外的JDK辅助工具包。
  • 需要本地安装JDK并配置JAVA环境变量。 之后使用java -jar jca469.jar即可打开工具。 直接将dump出来的堆栈信息,打开,便可分析。
  • 在linux环境下,使用jstack命令提示命令未找到,原因是因为安装的是openjdk。默认是只装了jre的。就是直接执行yum install openjdk 解决办法: 1、执行yum list --showduplicate | grep java-1.8 命令,查找所有...
  • 不少朋友在刚接触jvm的时候,通常在Linux中经常要使用jstack命令,新手经常会遇到如下问题:  -bash: jstack: command not found  不用慌张,该命令位于Java/bin目录下,切换到该目录下执行,即可正常运行 ...
  • Linux jstack命令详解

    2021-05-13 20:58:28
    如果是在64位机器上,需要指定选项"-J-d64",Windows的jstack使用方式只支持以下的这种方式:jstack[-l]pid如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的javastack和nativestack的信息,从而可以...
  • jstack命令的使用

    2021-03-03 11:21:57
    jstack用于生成java虚拟机当前时刻的线程快照。线程快照是当前java虚拟机内每一条线程正在执行的方法堆栈的集合,生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的...
  • 本文给大家记录的是java自带的工具Jstack截取进程中的堆栈信息的方法,非常的实用,有需要的小伙伴可以参考下。
  • 在linux下运行多线程程序,想查看各个...2.jstackpid,查看pid的所有线程状态信息;下面为一个示例:进程6798启动了5个线程,其他两个正在跑,另外三个进入了睡眠状态。[root@stormnimbustopology]#jstack6798201...
  • 注意,如果没有成功添加环境变量,那么这里只能在Jstack的路径下执行,否则操作系统无法识别。 如图,这里一般有两个运行参数,用来拍取内存快照, 他们的含义如下: -l long listings,会打印出额 ...
  • JVM工具-jstack

    2019-02-20 08:02:37
    jstack 打印线程堆栈信息, 支持支持本地java进程,core文件以及远程java进程 命令格式 jstack [ options ] pid jstack [ options ] executable core jstack [ options ] [ server-id@ ] remote-hostname-or-IP ...
  • Linux jstack命令

    万次阅读 2019-06-18 09:20:48
    如果java程序崩溃生成core文件,jstack工具可以用来获得core文件的java stack和native stack的信息,从而可以轻松地知道java程序是如何崩溃和在程序何处发生问题。另外,jstack工具还可以附属到正在运行的java程序中...
  • JDK自带工具之jstack

    2021-03-01 07:03:20
    jstack是java虚拟机自带的一种堆栈跟踪工具。jstack位于java的bin目录下,主要利用JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heapsize和垃圾回收状况的监控。Jstat可以用来监视VM...
  • jstack用于打印出给定的java进程ID或core file或远程调试服务的Java堆栈信息,如果是在64位机器上,需要指定选项"-J-d64“ 命令格式:jstack [ option ] pid 常用参数说明: -F 当’jstack [-l] pid’没有...
  • 总结:(1)栈信息:jstack 输出的信息。(2)堆信息:jmap -dump 输出的文件,(3)jstat查看gc情况,jstat -gc 间隔毫秒数 比如 jstat -gc 12345 5000 也就是每隔5秒打印进程12345的 gc情况一、看一下 jstackjstack -m &...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,869
精华内容 2,347
关键字:

jstack安装