man tuning (7)に詳しい情報があるので、以下は実例として提示しておきます
を /boot/loader.conf に追加しますkern.maxusers=384 kern.ipc.nmbclusters=32768
を /etc/sysctl.conf に追加しますkern.maxfiles=16384 kern.maxfilesperproc=14745
を /etc/sysctl.conf に追加しますkern.ipc.somaxconn=4096 kern.ipc.maxsockbuf=1048576
を /etc/sysctl.conf に追加しますnet.inet.ip.portrange.first=1024 net.inet.ip.portrange.last=49151
net.inet.tcp.sendspace net.inet.tcp.recvspace net.inet.udp.recvspace
scale factor of 16 [65535*2^4 ≒ 1048576] scale factor of 8 [65535*2^3 ≒ 524288] scale factor of 4 [65535*2^2 ≒ 262144] scale factor of 2 [65535*2^1 ≒ 131072] scale factor of 0 [65535]
を /etc/sysctl.conf に追加net.inet.tcp.rfc1323=1 net.inet.tcp.sendspace=257020 net.inet.tcp.recvspace=514040 net.inet.udp.recvspace=65535
を /etc/sysctl.conf に追加しておきますvm.defer_swapspace_pageouts=1 vm.disable_swapspace_pageouts=1
を /boot/loader.conf に追加しますkern.maxdsiz=バイト数 kern.dfldsiz=バイト数 kern.maxssiz=バイト数
(userlandは最適化しない[CFLAGS])#COPTFLAGS="-O2 -march=i686 -pipe -fomit-frame-pointer" COPTFLAGS="-O2 -m486 -pipe"
これを先にかえてから、もろもろのプログラムをコンパイルします#define FD_SETSIZE 8192
これを先にかえてから、もろもろのプログラムをコンパイルします#define SOMAXCONN 4096
数字はページ数。options SHMMAXPGS=4096
とやって確認できます。この場合、まずは 1024 - 5000 番のポートを使って外に出ていきますが、この値を変更します。# sysctl -a | grep ip.port net.inet.ip.portrange.lowfirst: 1023 net.inet.ip.portrange.lowlast: 600 net.inet.ip.portrange.first: 1024 net.inet.ip.portrange.last: 5000 net.inet.ip.portrange.hifirst: 49152 net.inet.ip.portrange.hilast: 65535
これで、20000 - 49151番ポートを使って出ていくようになります。# sysctl -w net.inet.ip.portrange.last=49151 net.inet.ip.portrange.last: 5000 -> 49151 # sysctl -w net.inet.ip.portrange.first=20000 net.inet.ip.portrange.first: 1024 -> 20000
のようにします。ちなみにdefault値は 262144 。# /sbin/sysctl -w kern.ipc.maxsockbuf=1048576
とすると良いという話もありますが、未検証です。/sbin/sysctl -w net.inet.tcp.rfc1323=1 /sbin/sysctl -w net.inet.tcp.sendspace=65536 /sbin/sysctl -w net.inet.tcp.recvspace=65536 /sbin/sysctl -w net.inet.udp.recvspace=166400 /sbin/sysctl -w net.inet.udp.maxdgram=36864
の下線部分が利用可能なSocket数です。% sysctl vm.zone ITEM SIZE LIMIT USED FREE REQUESTS PIPE: 160, 0, 2, 100, 148580 SWAPMETA: 160, 63791, 31, 44, 574 ripcb: 192, 4136, 0, 42, 81 tcpcb: 544, 4136, 9, 236, 53183 udpcb: 192, 4136, 7, 35, 72754 socket: 192, 4136, 22, 251, 149713
と書いてカーネルを再構築するか(こっちがお勧め)、それが無理ならカーネル変数 kern.ipc.maxsockets をいじります。options MAXFILES=65535
のようにします。前者の場合は、sysctl で現在の MAXFILES 値を取得し、それ以上の値を設定してカーネルを再構築します。例えば% more /boot/loader.conf # -- sysinstall generated deltas -- # userconfig_script_load="YES" kern.ipc.maxsockets=65535
の場合は現在値が4136なのでそれ以上の値、例えば65535等を設定してカーネルを作り直します。tomcat# sysctl -a | grep -i maxfiles kern.maxfiles: 4136
% sysctl vm.zone vm.zone: ITEM SIZE LIMIT USED FREE REQUESTS PIPE: 160, 0, 9, 93, 41590 SWAPMETA: 160, 128142, 7, 43, 11 ripcb: 192, 65535, 0, 42, 8 tcpcb: 544, 65535, 19, 135, 17113 udpcb: 192, 65535, 21, 42, 21429 socket: 192, 65535, 66, 165, 45110
以下は基本的には必要なし。kern.ps_showallprocs=0 net.inet.tcp.inflight_enable=1
#vfs.vmiodirenable=1 kern.maxfiles=65536 #net.inet.tcp.delayed_ack=0 #Q&A 1582,1926 net.inet.ip.portrange.last=30000 kern.ipc.somaxconn=8192 kern.ipc.maxsockbuf=1048576 net.inet.tcp.rfc1323=1 net.inet.tcp.sendspace=65536 net.inet.tcp.recvspace=65536 net.inet.udp.recvspace=166400 net.inet.udp.maxdgram=36864 net.local.stream.sendspace=65536 net.local.stream.recvspace=65536
hw.ata.tags=1 autoboot_delay="1" #kern.ipc.nmbclusters=4096