大規模なサービスを行うサーバOSとしておこなうべき
チューニングの定石について記述します
FreeBSDのバージョンは4.8-STABLEを対象にしています
OSのデフォルト設定は一般的な規模を想定しています
それを逸脱するような大規模な用途(大規模なwebサーバ、
web cache(squid
)サーバ、バーチャルドメインサーバ[仮想サーバ])に使用するには、
やはりそれなりのチューニングが必要になってきます
以下で、そのチューニングの定石を列挙します
(なぜチューニングが必要なのか)
(個々の値については各サイトで調節してください)
(以下のパラメータは100Mbps Ethernetの場合を想定しています)
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
net.inet.tcp.sendspace net.inet.tcp.recvspace net.inet.udp.recvspace
scale factor of 16 [65535*2^4 ≒ 1048560] scale factor of 8 [65535*2^3 ≒ 524280] scale factor of 4 [65535*2^2 ≒ 262140] scale factor of 2 [65535*2^1 ≒ 131070] scale factor of 0 [65535]
を /etc/sysctl.conf に追加しておきますvm.defer_swapspace_pageouts=1 vm.disable_swapspace_pageouts=1
を /boot/loader.conf に追加しますkern.maxdsiz=バイト数 kern.dfldsiz=バイト数 kern.maxssiz=バイト数
FD_SETSIZE
を増す
/usr/include/sys/types.h
でこれを先にかえてから、もろもろのプログラムをコンパイルします#define FD_SETSIZE 8192
SOMAXCONN
を増す
/usr/include/sys/socket.h
でこれを先にかえてから、もろもろのプログラムをコンパイルします#define SOMAXCONN 4096