对于每个连接创建一个线程的网络应用程序(例如 Pound),线程数可能会成为服务器并发连接数的瓶颈。
我正在运行 FreeBSD 8 x64:
$ sysctl kern.maxproc
kern.maxproc: 6164
$ sysctl kern.threads.max_threads_per_proc
kern.threads.max_threads_per_proc: 1500
$ limits
Resource limits (current):
cputime infinity secs
filesize infinity kB
datasize 33554432 kB
stacksize 524288 kB
coredumpsize infinity kB
memoryuse infinity kB
memorylocked infinity kB
maxprocesses 5547
openfiles 200000
sbsize infinity bytes
vmemoryuse infinity kB
pseudo-terminals infinity
swapuse infinity kB
我想增加到kern.threads.max_threads_per_proc
4096。假设每个线程都以 512k 的堆栈大小开始,我还需要更改什么才能确保不会损坏我的机器?
答案1
顺便说一句,我将 kern.threads.max_threads_per_proc 设置为 4096,没有修改任何其他设置,也没有看到任何不良影响。Pound 甚至几次达到这个值(这样做会占用 2GB 的 RAM)。