您现在的位置是:首页 > 文章详情

centos进程、线程状态 tomcat线程数 并发数查看

日期:2017-12-08点击:719

1、linux进程查看:ps -aux 、top

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND

root         1  0.0  0.0  10368   116 ?        Ss   Jan16   4:57 init [3]                                                     

root         2  0.0  0.0      0     0 ?        S<   Jan16   0:05 [migration/0]

root         3  0.0  0.0      0     0 ?        SN   Jan16   0:02 [ksoftirqd/0]

root         4  0.0  0.0      0     0 ?        S<   Jan16   0:00 [watchdog/0]

root         5  0.0  0.0      0     0 ?        S<   Jan16   4:43 [migration/1]

root         6  0.0  0.0      0     0 ?        SN   Jan16   0:04 [ksoftirqd/1]

root         7  0.0  0.0      0     0 ?        S<   Jan16   0:00 [watchdog/1]

root         8  0.0  0.0      0     0 ?        S<   Jan16   3:48 [migration/2]

root         9  0.0  0.0      0     0 ?        SN   Jan16   0:15 [ksoftirqd/2]

root        10  0.0  0.0      0     0 ?        S<   Jan16   0:00 [watchdog/2]

root        11  0.0  0.0      0     0 ?        S<   Jan16   4:16 [migration/3]

root        12  0.0  0.0      0     0 ?        SN   Jan16   0:22 [ksoftirqd/3]

root        13  0.0  0.0      0     0 ?        S<   Jan16   0:00 [watchdog/3]

root        14  0.0  0.0      0     0 ?        S<   Jan16   0:11 [migration/4]

root        15  0.0  0.0      0     0 ?        SN   Jan16   3:55 [ksoftirqd/4]

root        16  0.0  0.0      0     0 ?        S<   Jan16   0:00 [watchdog/4]

root        17  0.0  0.0      0     0 ?        S<   Jan16   0:26 [migration/5]

root        18  0.0  0.0      0     0 ?        SN   Jan16   4:53 [ksoftirqd/5]

root        19  0.0  0.0      0     0 ?        S<   Jan16   0:00 [watchdog/5]

root        20  0.0  0.0      0     0 ?        S<   Jan16   0:28 [migration/6]

root        21  0.0  0.0      0     0 ?        SN   Jan16   5:08 [ksoftirqd/6]

root        22  0.0  0.0      0     0 ?        S<   Jan16   0:00 [watchdog/6]

root        23  0.0  0.0      0     0 ?        S<   Jan16   0:29 [migration/7]

root        24  0.0  0.0      0     0 ?        SN   Jan16   5:13 [ksoftirqd/7]

进程状态:

D 无法中断的休眠状态(通常 IO 的进程);

R 正在运行可中在队列中可过行的;

S 处于休眠状态;

T 停止或被追踪;

W 进入内存交换  (从内核2.6开始无效);

X 死掉的进程   (基本很少見);

Z 僵尸进程;


< 优先级高的进程

N 优先级较低的进程

L 有些页被锁进内存;

s 进程的领导者(在它之下有子进程);

l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);

+ 位于后台的进程组;

 

2、线程查看 ps -Lf pid、ps -T -p pid 、top -Hp pid 查看线程数ps -Lf 570470|wc -l

ps -Lf 570470

UID         PID   PPID    LWP  C NLWP STIME TTY      STAT   TIME CMD

wls81    570470 570467 570470  0  183 Apr27 ?        Sl     0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570476  0  183 Apr27 ?        Sl     0:01 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570477  0  183 Apr27 ?        Sl     0:07 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570478  0  183 Apr27 ?        Sl     0:07 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570479  0  183 Apr27 ?        Sl     0:04 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570480  0  183 Apr27 ?        Sl     0:08 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570481  0  183 Apr27 ?        Sl     0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570482  0  183 Apr27 ?        Sl     0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570483  0  183 Apr27 ?        Sl     0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570484  0  183 Apr27 ?        Sl     0:00 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570485  0  183 Apr27 ?        Sl     0:42 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -verbos

wls81    570470 570467 570486  0  183 Apr27 ?        Sl     0:43 /wls/apache/tomcat/jdk1.7.0_67/bin/java -DserverName=tm_icp-coreSF003 -Xms1024M -Xmx1024M -XX:MaxNewSize=128m -XX:MaxPermSize=256m -XX:+UseConcMarkSweepGC -X

线程的状态:

1.新建状态(New): 

        当用new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态。 当一个线程处于新生状态时,程序还没有开始运行线程中的代码



     2.就绪状态(Runnable)

        一个新创建的线程并不自动开始运行,要执行线程,必须调用线程的start()方法。当线程对象调用start()方法即启动了线程,start()方法创建线程运行的系统资源,并调度线程运行run()方法。当start()方法返回后,线程就处于就绪状态。

        处于就绪状态的线程并不一定立即运行run()方法,线程还必须同其他线程竞争CPU时间,只有获得CPU时间才可以运行线程。因为在单CPU的计算机系统中,不可能同时运行多个线程,一个时刻仅有一个线程处于运行状态。因此此时可能有多个线程处于就绪状态。对多个处于就绪状态的线程是由Java运行时系统的线程调度程序(thread scheduler)来调度的。



    3.运行状态(Running)

        当线程获得CPU时间后,它才进入运行状态,真正开始执行run()方法.



    4. 阻塞状态(Blocked)

        线程运行过程中,可能由于各种原因进入阻塞状态:

        1>线程通过调用sleep方法进入睡眠状态;

        2>线程调用一个在I/O上被阻塞的操作,即该操作在输入输出操作完成之前不会返回到它的调用者;

        3>线程试图得到一个锁,而该锁正被其他线程持有;

        4>线程在等待某个触发条件;

        ......           



        所谓阻塞状态是正在运行的线程没有运行结束,暂时让出CPU,这时其他处于就绪状态的线程就可以获得CPU时间,进入运行状态。



    5. 死亡状态(Dead)

        有两个原因会导致线程死亡:

        1) run方法正常退出而自然死亡,

        2) 一个未捕获的异常终止了run方法而使线程猝死。

        为了确定线程在当前是否存活着(就是要么是可运行的,要么是被阻塞了),需要使用isAlive方法。如果是可运行或被阻塞,这个方法返回true; 如果线程仍旧是new状态且不是可运行的, 或者线程死亡了,则返回false.

3、网络连接状态 netstat -an

Proto Recv-Q Send-Q Local Address               Foreign Address             State     

tcp        0      0 10.21.5.193:58080           0.0.0.0:*                   LISTEN     

tcp        0      0 0.0.0.0:10050               0.0.0.0:*                   LISTEN     

tcp        0      0 0.0.0.0:4265                0.0.0.0:*                   LISTEN     

tcp        0      0 0.0.0.0:11050               0.0.0.0:*                   LISTEN     

tcp        0      0 0.0.0.0:11052               0.0.0.0:*                   LISTEN     

tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN     

tcp        0      0 0.0.0.0:28309               0.0.0.0:*                   LISTEN     

tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN     

tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN     

tcp        0      0 10.21.5.193:10050           10.21.2.83:19165            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:19200            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:18949            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:18259            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17645            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:20460            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17748            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17955            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17344            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:18420            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:20611            TIME_WAIT  

tcp        0      0 10.21.5.193:15909           10.21.255.227:12054         TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:19950            TIME_WAIT  

tcp        0      0 10.21.5.193:15908           10.21.255.227:12054         TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:19028            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:19755            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17136            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17877            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17521            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17304            TIME_WAIT  

tcp        0      0 10.21.5.193:41533           215.22.0.52:5180            ESTABLISHED

tcp        0      0 10.21.5.193:25706           10.21.255.72:9988           ESTABLISHED

tcp        0      0 10.21.5.193:10050           10.21.2.83:20165            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17827            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:17449            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:20380            TIME_WAIT  

tcp        0      0 10.21.5.193:938             215.22.0.180:2049           ESTABLISHED

tcp        0      0 10.21.5.193:57503           10.21.255.226:12056         ESTABLISHED

tcp        0      0 10.21.5.193:10050           10.21.2.83:17562            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:18009            TIME_WAIT  

tcp        0      0 10.21.5.193:10050           10.21.2.83:19438            TIME_WAIT  

TCP三次握手的过程如下:
        主动连接端发送一个SYN包给被动连接端;
        被动连接端收到SYN包后,发送一个带ACK和SYN标志的包给主动连接端;
        主动连接端发送一个带ACK标志的包给被动连接端,握手动作完成。
 
 
TCP四次挥手的过程如下:
        主动关闭端发送一个FIN包给被动关闭端;
        被动关闭端收到FIN包后,发送一个ACK包给主动关闭端;
        被动关闭端发送了ACK包后,再发送一个FIN包给主动关闭端;
        主动关闭端收到FIN包后,发送一个ACK包,当被动关闭端收到ACK包后,四次挥手动作完成,连接断开。
 
 
netstat中的各种状态:
        CLOSED 
                初始(无连接)状态。
        LISTEN 
                侦听状态,等待远程机器的连接请求。
        SYN_SEND 
                在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包。
        SYN_RECV 
                在TCP三次握手期间,主动连接端收到SYN包后,进入SYN_RECV状态。
        ESTABLISHED 
                完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
        FIN_WAIT_1 
                在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。
        FIN_WAIT_2 
                在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。
        TIME_WAIT 
                在TCP四次挥手时,主动关闭端发送了ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
        CLOSING 
                在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却收到对方的FIN包,此时,进入CLOSING状态。
        CLOSE_WAIT 
                在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。
        LAST_ACK 
                在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。
 
主动连接端可能的状态有:         
        CLOSED        SYN_SEND        ESTABLISHED。
主动关闭端可能的状态有:         
        FIN_WAIT_1        FIN_WAIT_2        TIME_WAIT。
被动连接端可能的状态有:         
        LISTEN        SYN_RECV        ESTABLISHED。
被动关闭端可能的状态有:         
        CLOSE_WAIT        LAST_ACK        CLOSED。
 
 
在Linux下,如果连接数比较大,可以使用效率更高的ss来替代netstat。

 

4、如何查看tomcat对应的进程号:ps -ef|grep tomcat

根据进程号查询对应的目录:/proc/pid/cwd、ls -la /proc/pid/fd

根据目录查找对应的进程:lsof path

5、查看tomcat的线程数:ps -Lf pid|wc -l

6、查看tomcat的并发数:netstat -an|grep 10050|awk '{count[$6]++} END{for (i in count) print(i,count[i])}'

TIME_WAIT 25

LISTEN 1

7、根据端口号查询对应进程

lsof -Pnl +m -i4|grep port #根据此命令查出端口号对应的进程pid,然后使用ps查到进程信息。

netstat -anp|grep prot  #根据此命令查出端口号对应的进程pid,然后使用ps查到进程信息。

原文链接:https://www.centoschina.cn/course/introduction/9410.html
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章