linux 套接字个数,关于accept()函数能产生多少个套接字和在LINUX 能产生多少个线程...

我这几天在编写关于LINUX网络程序,在我的程序中只能产生1024个左右accept()函数的套接字,所以只监听1024个左右的客户端,和我的程序要求的50000个差得太远, 还有我的程序只能生成302个线程,也太少了,请问哪位高手能给我指点一下,谢谢

|

accept没听说有1024的限制。你用select了吗?select有1024的限制。可以改用poll.

线程数的限制也没这么少,应该是7679。kernel 2.4.20.

|

对于线程,应该是没有限制的,如果你没有限制的话。

ulimit -a

可以看到max user processes是否有限制。有限制的话,"ulimit -u 0"取消限制。

如果没有限制,最大进程数(最大线程数也是)在kernel里受到客用内存数限制,每个进程描述符需要一定内存,所有进程描述符所用内存不能超过可用内存数的一半。

|

在kernel/fork.c里面有一段:

/*

* The default maximum number of threads is set to a safe

* value: the thread structures can take up at most half

* of memory.

*/

max_threads = mempages / (8 * THREAD_SIZE / PAGE_SIZE);

/*

* we need to allow at least 20 threads to boot a system

*/

if(max_threads rlim[RLIMIT_NPROC].rlim_cur = max_threads/2;

init_task.signal->rlim[RLIMIT_NPROC].rlim_max = max_threads/2;

|

x86(大雪) 说的是对的。

max_threads是由kernel使用内存大小来决定的。具体值可以这样看。

# cat /proc/sys/kernel/threads-max

或者

# sysctl -a | grep thread

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值