本文共 2831 字,大约阅读时间需要 9 分钟。
linux下查看线程数的方法及超过系统线程最大值的报错
##查看线程数的方法cat /proc/{pid}/status其中Threads后面跟的就是线程数。或者:ls /proc/{pid}/task | wc -l##举例如下cat /proc/27587/statusThreads: 3或:ls /proc/27587/task |wc -l3
##top命令后面跟-H,会打印出所有线程列表top -Htop -H -p {pid}##举例如下top -H -p 27587Tasks: 3 total, 0 running, 3 sleeping, 0 stopped, 0 zombiePID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND27587 siterec 20 0 1007m 79m 4772 S 1.7 0.2 203:34.71 python2753 siterec 20 0 1007m 79m 4772 S 0.0 0.2 2:19.32 python27590 siterec 20 0 1007m 79m 4772 S 0.0 0.2 0:00.00 python
##ps 后面加上H,能打印某个进程的所有线程ps hH p {pid} | wc -l##举例如下PID TTY STAT TIME COMMAND17721 pts/1 Sl 0:00 /usr/java/jdk1.8.0_60/bin/java -Djava.util.logging.config.file=/mnt/deploy/apache-tomcat-8.0.35/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoader17721 pts/1 Sl 0:00 /usr/java/jdk1.8.0_60/bin/java -Djava.util.logging.config.file=/mnt/deploy/apache-tomcat-8.0.35/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoader17721 pts/1 Sl 0:00 /usr/java/jdk1.8.0_60/bin/java -Djava.util.logging.config.file=/mnt/deploy/apache-tomcat-8.0.35/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoader
使用ps命令来查看进程的时候,进程状态分别对应的含义如下:
D 不可中断睡眠 (通常是在IO操作) 收到信号不唤醒和不可运行, 进程必须等待直到有中断发生R 正在运行或可运行(在运行队列排队中)S 可中断睡眠 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)T 已停止的 进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行W 正在换页(2.6.内核之前有效)X 死进程 (未开启)Z 僵尸进程 进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放BSD风格的< 高优先级(not nice to other users)N 低优先级(nice to other users)L 页面锁定在内存(实时和定制的IO)s 一个信息头l 多线程(使用 CLONE_THREAD,像NPTL的pthreads的那样)+ 在前台进程组##打印所有进程及其线程pstree -p ##打印某个进程的线程数pstree -p {pid} | wc -l
##报错信息:-bash: fork: retry: 没有子进程 (No child process)-bash: fork: retry: 资源暂时不可用(The resource is temporarily unavailable)shell request failed on channel 0##解决方法:cat /etc/security/limits.d/20-nproc.conf或:cat /etc/security/limits.d/90-nproc.conf\* soft nproc 1024 // 将此处修改成unlimited或者其他数值,如65535 root soft nproc unlimited
转载于:https://blog.51cto.com/wutengfei/2096943