一、Linux系统支持的最大进程数
系统内核限制的最大进程数:/proc/sys/kernel/pid_max #当系统进程数达到该数据后,涉及创建进程的指令将无法执行,如ps -ef、top
系统内核限制的最大线程数:/proc/sys/kernel/thread-max #当系统线程数大超过该数据后,创建线程时线程会创建失败
系统安全限制的最大线程数:在/etc/security/limits.conf中
单进程能支持的最大线程数:/usr/include/bits/local_lim.h中PTHREAD_KEYS_MAX #默认1024
登录用户限制的最大线程数:在/etc/security/limits.d/90-nproc.conf中配置,通过ulimit -u查看
二、单进程最大线程数
默认情况下,一个线程的栈要预留1M的内存空间,
而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程
为了突破内存的限制,可以有两种方法
1) 用 ulimit -s 1024 减小默认的栈大小
2) 调用 pthread_create 的时候用 pthread_attr_getstacksize 设置一个较小的栈大小
系统内核限制的最大进程数:/proc/sys/kernel/pid_max #当系统进程数达到该数据后,涉及创建进程的指令将无法执行,如ps -ef、top
系统内核限制的最大线程数:/proc/sys/kernel/thread-max #当系统线程数大超过该数据后,创建线程时线程会创建失败
系统安全限制的最大线程数:在/etc/security/limits.conf中
单进程能支持的最大线程数:/usr/include/bits/local_lim.h中PTHREAD_KEYS_MAX #默认1024
登录用户限制的最大线程数:在/etc/security/limits.d/90-nproc.conf中配置,通过ulimit -u查看
二、单进程最大线程数
默认情况下,一个线程的栈要预留1M的内存空间,
而一个进程中可用的内存空间只有2G,所以理论上一个进程中最多可以开2048个线程
为了突破内存的限制,可以有两种方法
1) 用 ulimit -s 1024 减小默认的栈大小
2) 调用 pthread_create 的时候用 pthread_attr_getstacksize 设置一个较小的栈大小