2017-03-15 11:43:41 lovesummerforever 阅读数 1320

问题

昨天同事在启动job的时候怎么也启动不了, ps aux|grep java 结果出来一大堆,看着眼花缭乱的,这台服务器用main方法启动job,近几十个,所以想尽快的找到自己的job变得很困难,或者是通过job的名称来找,这就需要我们能记住job名称并且要命名规范,有一种方式能尽快找到自己想要的job进程的pid号,直接杀掉再操作就可以了。


linuxpid 简介

1. short for product identification or product id,PID is a unique number that helps identify a hardware  product or a registered software product . 

2.Short for process  identifier , a PID is unique number that identifier each of the running processes in an operating system such as Linux , Unix ,Mac OS X, and Microsoft Windows . In the below output , is an example of a few of the processes running in Windows and their associated PID's listed in the PID column .



PID 是各进程的代号,每个进程有唯一的PID编号。它是进程运行时系统分配的,并不代表专门的进程。在运行时PID是不会改变标识符的,但是进程终止后PID标识符就会被系统回收,就有可能被继续分配给新的运行程序。


问题解决思路

可以为启动的job定义自己的pid文件的存放位置,这样这个文件中存储的就是这个进程唯一的PID,这样直接打开指定位置的pid文件,直接kill这个pid号就可以了,省去了 ps aux|grep java ,再去找这个pid,省去这个步骤。


解决过程

Java -jar Test.jar &       #注意:必须有&让其后台执行,否则没有pid生成
echo $! > /usr/local/bgtask/Test.pid   # 将jar包启动对应的pid写入文件中,为停止时提供pid



2019-07-23 14:35:57 tansitao110 阅读数 10

Linux最大线程数限制及当前线程数查询
1、总结系统限制有4个因素:
cat /proc/sys/kernel/pid_max #查系统支持的最大线程数,一般会很大,相当于理论值
sysctl -w kernel.pid_max=655350 #修改pid最大值
echo 100000 > /proc/sys/kernel/pid_max #修改pid最大值,这两种方式都可以

cat /proc/sys/kernel/threads-max 默认值
echo 100000 > /proc/sys/kernel/threads-max

max_user_process(ulimit -u) #系统限制某用户下最多可以运行多少进程或线程

cat /proc/sys/vm/max_map_count #该值除以2即为最大线程数,
echo 131072 > /proc/sys/vm/max_map_count

硬件内存大小
2、Java虚拟机本身限制:
-Xms #intial java heap size
-Xmx #maximum java heap size
-Xss #the stack size for each thread
3、查询当前某程序的线程或进程数
pstree -p ps -e | grep java | awk '{print $1}' | wc -l

pstree -p 3660 | wc -l
4、查询当前整个系统已用的线程或进程数
pstree -p | wc -l
1、 cat /proc/${pid}/status
2、pstree -p ${pid}
3、top -p ${pid} 再按H 或者直接输入 top -bH -d 3 -p ${pid}
top -H
手册中说:-H : Threads toggle
加上这个选项启动top,top一行显示一个线程。否则,它一行显示一个进程。
4、ps xH
手册中说:H Show threads as if they were processes
这样可以查看所有存在的线程。
5、ps -mp
手册中说:m Show threads after processes
这样可以查看一个进程起的线程数。

问题:
too many open files
too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。
命令ulimit -a
查看 open files数量

使用命令lsof -p 进程id可以查看单个进程所有打开的文件详情,使用命令lsof -p 进程id | wc -l可以统计进程打开了多少文件:

以裸启动的tomcat为例,可以看到它目前打开了108个文件数,如果文件数过多使用lsof -p 进程id命令无法完全查看的话,可以使用lsof -p 进程id > openfiles.log将执行结果内容输出到日志文件中查看。

解决方法
ulimit -n 2048
这样就可以把当前用户的最大允许打开文件数量设置为2048了,但这种设置方法在重启后会还原为默认值。

修改系统配置文件
vim /etc/security/limits.conf
#在最后加入

  • soft nofile 4096
  • hard nofile 4096
2015-10-04 23:14:15 blacksoil55 阅读数 286

Linux最大线程数限制及当前线程数查询

分类: 垃圾产品--linux 2013-11-17 13:36 560人阅读 评论(0) 收藏 举报
1、总结系统限制有:
    /proc/sys/kernel/pid_max #查系统支持的最大线程数,一般会很大,相当于理论值
    /proc/sys/kernel/thread-max
    max_user_process(ulimit -u) #系统限制某用户下最多可以运行多少进程或线程
    /proc/sys/vm/max_map_count
    硬件内存大小


2、Java虚拟机本身限制:
    -Xms  #intial java heap size
    -Xmx  #maximum java heap size
    -Xss  #the stack size for each thread


3、查询当前某程序的线程或进程数
pstree -p `ps -e | grep java | awk '{print $1}'` | wc -l

pstree -p 3660 | wc -l


4、查询当前整个系统已用的线程或进程数
pstree -p | wc -l
2019-01-28 11:07:39 wowocpp 阅读数 3030

cat /proc/sys/kernel/threads-max

查系统支持的最大线程数,一般会很大,相当于理论值

该命令在不同的机器上 值不一样。
在centos 服务器上面 : 513845
在ubuntu16.04 pc机上面 : 62667

两者机器配置 CPU 和内存 都不一样

cat /proc/sys/kernel/pid_max

在centos 服务器上面 :32768
在ubuntu16.04 pc机上面 : 32768

系统限制某用户下最多可以运行多少进程或线程
-u 进程数目:用户最多可启动的进程数目.

ulimit

help ulimit

ulimit: ulimit [-SHacdefilmnpqrstuvx] [限制]
    修改 shell 资源限制。

    在允许此类控制的系统上,提供对于 shell 及其创建的进程所可用的
    资源的控制。

    选项:
      -S        使用 `soft'(软)资源限制
      -H        使用 `hard'(硬)资源限制
      -a        所有当前限制都被报告
      -b        套接字缓存尺寸
      -c        创建的核文件的最大尺寸
      -d        一个进程的数据区的最大尺寸
      -e        最高的调度优先级(`nice')
      -f        有 shell 及其子进程可以写的最大文件尺寸
      -i        最多的可以挂起的信号数
      -l        一个进程可以锁定的最大内存尺寸
      -m        最大的内存进驻尺寸
      -n        最多的打开的文件描述符个数
      -p        管道缓冲区尺寸
      -q        POSIX 信息队列的最大字节数
      -r        实时调度的最大优先级
      -s        最大栈尺寸
      -t        最大的CPU时间,以秒为单位
      -u        最大用户进程数
      -v        虚拟内存尺寸
      -x        最大的锁数量

    如果提供了 LIMIT 变量,则它为指定资源的新的值;特别的 LIMIT 值为
    `soft'、`hard'和`unlimited',分别表示当前的软限制,硬限制和无限制。
    否则打印指定资源的当前限制值,不带选项则假定为 -f

    取值都是1024字节为单位,除了 -t 以秒为单位,-p 以512字节为单位,
    -u 以无范围的进程数量。

    退出状态:
    返回成功,除非使用了无效的选项或者错误发生。

ulimit -u

用户最多可启动的进程数目.
4096

ulimit -a

用来显示当前的各种用户进程限制
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况

设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:

 ulimit -u 10000 

 对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,

 最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。 

 ulimit -n 4096 

  将每个进程可以打开的文件数目加大到4096,缺省为1024     

 其他建议设置成无限制(unlimited)的一些重要设置是: 

 数据段长度:ulimit -d unlimited 

 最大内存大小:ulimit -m unlimited 

 堆栈大小:ulimit -s unlimited 

 CPU 时间:ulimit -t unlimited 

 虚拟内存:ulimit -v unlimited 

 暂时地,适用于通过 ulimit 命令登录 shell 会话期间。

ulimit -a 参数解析

centos:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 256922
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1000000
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

ubuntu:

core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31333
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31333
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

阿里云:


[jack@ ~]$ ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 7284
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 4096
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

ulimit -n

默认 最多打开的文件数量

在centos 服务器上面 :1000000
在ubuntu16.04 pc机上面 : 1024

2019-03-13 17:57:02 zhaotaotao8 阅读数 36

一.linux系统总线程数

/proc/sys/kernel/pid_max #查系统支持的最大线程数,一般会很大,相当于理论值

cat /proc/sys/kernel/threads-max

二.linux用户可用线程数

ulimit -u

三.linux用户中已使用的线程数

pstree -p | wc -l

四.linux系统中进程使用线程数

pstree -p 进程号 | wc -l

linux 有用命令

阅读数 29

没有更多推荐了,返回首页