首页 > 系统相关 >在Linux上查看活跃线程数与连接数

在Linux上查看活跃线程数与连接数

时间:2023-03-04 17:33:15浏览次数:28  
标签:-- top 连接数 活跃 线程 Linux awk 连接池

原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明。

简介

现如今,有两种常见的软件资源几乎成了Java后端程序的标配,即线程池与连接池,但这些池化资源非常的重要,一旦不够用了,就会导致程序阻塞、性能低下,所以有时我们需要看看它们的使用情况,以判断这里是否是瓶颈。

查看活跃线程数

在Linux上,通过top -H -p 1命令,可以查看java进程的线程情况,其中1是java进程号,如下:
image_2023-03-04_20230304140014
如上,可以看到线程的名称、CPU使用率等,其中http-nio-8080-e就是Tomcat线程池中的线程,tomcat线程全名类似于http-nio-8080-exec-20,由于Linux中线程名称有长度限制,所以被截断了。

注:jdk8的话,需要jdk8u222以上版本,才能在top中看到线程名称。

我们数一下http-nio-8080-e线程的数量,发现它有20个,正好对应上了在springboot中的线程配置。
image_2023-03-04_20230304133328

这样能通过top得到线程池的线程数量了,但如何了解线程池的使用情况,即活跃线程有多少个呢?

经过查看man文档,我发现top命令有一个-i选项,描述如下:
image_2023-03-04_20230304134557
意思就是i是一个开关选项,默认会显示全部线程,而打开此选项之后,就只显示活跃线程了!

所以,只需要利用-i选项,再配合sed/awk/uniq等文本处理命令,即可以统计出活跃线程数了,如下:

$ top -H -i -b -d 1 -n2 -p 1 | awk -v RS= 'END{print $0}' | awk '$1 ~ /[0-9]+/{print $12}' | sed -E 's/[0-9]+/n/g' | sort | uniq -c

image_2023-03-04_20230304141731
可以看到,20个线程的线程池中,在1秒内只有4个线程是活跃的,线程池中线程数量是足够的。

这个命令脚本就不展开解释了,也不复杂,有linux命令基础的将命令依次拆开执行,应该能Get到脚本逻辑,没学过linux命令的话,就直接拿去用吧

标签:--,top,连接数,活跃,线程,Linux,awk,连接池
From: https://www.cnblogs.com/codelogs/p/17178675.html

相关文章

  • 【译】clang ThreadSafetyAnalysis 线程安全分析
    每天晚上临睡前一到两小时,前后花了一两周来试着翻译。过程是痛苦的,却是一个检视自己的好办法。放在git上,正在考虑以后把随笔迁到gitio上。目录clang3.5线程安全分析名词......
  • Linux虚拟机常用命令
    Linux虚拟机常用命令外部链接分享:Linux常用命令docker常用命令1.系统信息arch显示机器的处理器架构uname-m显示机器的处理器架构uname-r显示正在使用的内核......
  • 线程的优先级(最终还是要看cpu)
    packagecom.Java;//线程优先级调度//注意:不是调整了优先级就一定会被cpu先执行只是提高了执行概率一切还是要看cpu调度publicclassTestPriority{publicstatic......
  • 观察线程的5个状态 线程不能重新启动
    packagecom.Java;//观测线程状态publicclassTestState{publicstaticvoidmain(String[]args)throwsInterruptedException{Threadthread=newThre......
  • docker-compose up -d 运行报错: ERROR: https://dl-cdn.alpinelinux.org/alpine/v3.1
    docker部署python时执行到RUNapkupdate....命令出现错误:ERROR:https://dl-cdn.alpinelinux.org/alpine/v3.17/community:BADsignature一般是软件包源地址请求......
  • 线程池
    线程池状态   线程池线程运行规则    JDK的线程池方法              线程池的注意点        延时任......
  • java 线程同步
    多种方式可以完成线程同步,传统方法是关键字synchronized完成的,可以是同步方法也可以是同步代码块同步方法@Data@AllArgsConstructor@NoArgsConstructorclassMyThea......
  • java 创建线程
    继承ThreadclassMyThread1extendsThread{@Overridepublicvoidrun(){System.out.println("继承Thread...");}}publicclassTest1{......
  • java 线程状态
    线程状态java.lang.Thread.State里明确了线程的各个状态以及怎么进入和退出各个状态publicenumState{//初始化状态,线程创建之后的状态,newThread()之后进......
  • linux安装提示:Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource
    这个错误可能是因为你的系统中有其他进程正在使用apt或dpkg,导致锁定文件被占用。你可以尝试以下方法来解决:等待其他进程完成,或者关闭软件更新器或Synaptic包管理器等程序......