增加 FreeBSD 线程

sh-*_*eta 5 freebsd threads sysctl

对于每个连接创建一个线程的网络应用程序(如 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
Run Code Online (Sandbox Code Playgroud)

我想增加到kern.threads.max_threads_per_proc4096。假设每个线程以 512k 的堆栈大小开始,我还需要更改什么以确保我不会给我的机器灌水?

sh-*_*eta 1

FWIW,我将 kern.threads.max_threads_per_proc 设置为 4096,没有修改任何其他设置,并且没有看到任何不良影响。Pound 甚至出现过几次(同时消耗了 2GB RAM)。