Linux系统的限制

Posted hqwangping

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux系统的限制相关的知识,希望对你有一定的参考价值。

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

5、其他

top -p {pid}

pstree -p {pid}



命令ulimit的格式:
ulimit [-acdfHlmnpsStuv] [limit]
在查看的命令后面加上限制值,就可以调整某一项限制,但只对当前登录shell有效。
 参数S表示设置软限制;参数H表示设置硬限制;当都不指定时,表示设置软限制和硬限制均为指定值
   -S   Set a soft limit for the given resource                    #设置给定资源的软限制
   -H   Set a hard limit for the given resource                    #设置给定资源的硬限制
-a All current limits are reported.                        #显示当前所有限制的内容 -c The maximum size of core files created.                    #-c <core文件上限> 设定core文件的最大值,单位为区块。 -d The maximum size of a process‘s data segment.                 #-d <数据节区大小>  程序数据节区的最大值,单位为KB。 -f The maximum size of files created by the shell(default option) #-f <文件大小>  shell所能建立的最大文件,单位为区块。  -l The maximum size that can be locked into memory.               #可以锁定的物理内存的最大值 -m The maximum resident set size.                          #可以使用的常驻内存的最大值,单位:kbytes -n The maximum number of open file descriptors.                 #每个进程可以同时打开的最大文件数 -p The pipe buffer size.                               #设置管道的最大值,单位为block,1block=512bytes -s The maximum stack size.                              #指定堆栈的最大值:单位:kbytes -t The maximum amount of cpu time in seconds.                  #指定每个进程所使用的秒数,单位:seconds -u The maximum number of processes available to a single user.        #每个用户运行的最大进程并发数 -v The maximum amount of virtual memory available to the process.      #当前shell可使用的最大虚拟内存

$ ulimit -a
core file size          (blocks, -c) 100         #文件的最大值为100 blocks          
data seg size           (kbytes, -d) unlimited    #进程的数据段可以任意大 unlimited不限制
scheduling priority             (-e) 20
file size               (blocks, -f) unlimited      #文件可以任意大
pending signals                 (-i) 16382          #最多有16382个待处理的信号
max locked memory       (kbytes, -l) 64             #一个任务锁住的物理内存的最大值为64kB
max memory size         (kbytes, -m) unlimited      #一个任务的常驻物理内存的最大值
open files                      (-n) 1024           #一个任务最多可以同时打开1024的文件
pipe size            (512 bytes, -p) 8              #管道的最大空间为4096字节
POSIX message queues     (bytes, -q) 819200      #POSIX的消息队列的最大值为819200字节
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192       #进程的栈的最大值为8192字节
cpu time               (seconds, -t) unlimited    #进程使用的CPU时间
max user processes              (-u) unlimited    #当前用户同时打开的进程(包括线程)的最大个数
virtual memory          (kbytes, -v) unlimited    #没有限制进程的最大地址空间
file locks                      (-x) unlimited    #所能锁住的文件的最大个数没有限制

Example:

1、修改linux对于每个用户,系统限制其最大进程数 设置linux用户的最大进程数,如10000

ulimit -u 10000

2、对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,需要设置每个进程可打开的文件数,缺省值是 1024。

ulimit -n 65535

3、CPU 时间

ulimit -t unlimited

 

永久修改ulimit值  ------/etc/security/limits.conf

limits.conf-pam_limits模块的配置文件

<domain> <type> <item> <value>

  • domain 是指生效实体
    • 用户名
    • 也可以通过@group指定用户组
    • 使用*表示默认值
  • type指限制类型
    • soft软限制
    • hard硬限制
  • item限制资源
    • coreulimit -c
    • dataulimit -d
    • fsizeulimit -f
    • memloculimit -l
    • nofileulimit -n
    • stackulimit -s
    • cpu 同ulimit -t
    • nproculimit -u
    • maxlogins指定用户可以同时登陆的数量
    • maxsyslogins系统可以同时登陆的用户数
    • priority用户进程运行的优先级
    • locks用户可以锁定的文件最大值
    • sigpengdingulimit -i
    • msgqueueulimit -q

 

以上是关于Linux系统的限制的主要内容,如果未能解决你的问题,请参考以下文章

LINUX PID 1和SYSTEMD PID 0 是内核的一部分,主要用于内进换页,内核初始化的最后一步就是启动 init 进程。这个进程是系统的第一个进程,PID 为 1,又叫超级进程(代码片段

将 Docker 容器限制为单个 cpu 核心

Elasticsearch笔记九之优化

[linux][c/c++]代码片段01

怎么解决linux系统限制root用户登陆

[linux][c/c++]代码片段02