FreeBSD - Тюнинг FreeBSD 8,9


Материал из Wiki - Iphoster - 'the best ever hosting and support

Перейти к: навигация, поиск

Самые выгодные сервера‎


Тюнинг FreeBSD 8,9

[root@s61 ~]# uname -a
FreeBSD sxx.nf.com 9.0-RELEASE FreeBSD 9.0-RELEASE #2: Fri Jan 13 19:42:24 MSK 2012     
root@free.ds:/usr/obj/usr/src/sys/ISPSERVER  amd64


1) Выделение памяти для ядра (по-умолчанию отдается вся память, ничего изменять не нужно):

[root@s61 ~]# sysctl -a | grep vm.kmem_size
vm.kmem_size_scale: 1
vm.kmem_size_max: 329853485875
vm.kmem_size_min: 0
vm.kmem_size: 4126375936


2) Увеличить VFS кэш:

[root@s61 ~]# vi /etc/sysctl.conf
#VFS cache (Inact)
kern.maxvnodes=1000000
[root@s61 ~]# sysctl -a |grep kern.maxvnodes
kern.maxvnodes: 1000000


3) Выделяем 572MB под mbuf кластера:

[root@s61 ~]#  sysctl  kern.ipc.nmbclusters
kern.ipc.nmbclusters: 25600
[root@s61 ~]# sysctl -w kern.ipc.nmbclusters=262144
kern.ipc.nmbclusters: 25600 -> 262144
[root@s61 ~]# vi /etc/sysctl.conf
#mbufs clusters(575MB)
kern.ipc.nmbclusters=262144


Статистика потребления:
[root@s61 ~]# netstat -m
481/1319/1800 mbufs in use (current/cache/total)
262/390/652/262144 mbuf clusters in use (current/cache/total/max)
262/378 mbuf+clusters out of packet secondary zone in use (current/cache)
4/73/77/192000 4k (page size) jumbo clusters in use (current/cache/total/max)
0/0/0/6400 9k jumbo clusters in use (current/cache/total/max)
0/0/0/3200 16k jumbo clusters in use (current/cache/total/max)
660K/1401K/2062K bytes allocated to network (current/cache/total)
0/0/0 requests for mbufs denied (mbufs/clusters/mbuf+clusters)
0/0/0 requests for jumbo clusters denied (4k/9k/16k)
0/0/0 sfbufs in use (current/peak/max)
0 requests for sfbufs denied
0 requests for sfbufs delayed
2259 requests for I/O initiated by sendfile
0 calls to protocol drain routines


4) Уменьшить send и receive buffers (проверить скачку больших файлов)

[root@s61 ~]# vi /etc/sysctl.conf 
#decrease of send(to 16Kb) and receive(to 8Kb) buffers
net.inet.tcp.recvspace=8192
net.inet.tcp.recvbuf_auto=0
net.inet.tcp.sendspace=16384
#796MB
kern.ipc.nmbjumbop=192000
net.inet.tcp.sendbuf_max=131072
net.inet.tcp.sendbuf_inc=8192
net.inet.tcp.sendbuf_auto=1


5) Тюнинг syncache, syncookies:

[root@s61 ~]# sysctl net.inet.tcp.syncache
net.inet.tcp.syncache.rst_on_sock_fail: 1
net.inet.tcp.syncache.rexmtlimit: 3
net.inet.tcp.syncache.hashsize: 512
net.inet.tcp.syncache.count: 0
net.inet.tcp.syncache.cachelimit: 15360
net.inet.tcp.syncache.bucketlimit: 30
[root@s61 ~]# vi /boot/loader.conf 
# tuning syncache
net.inet.tcp.syncache.hashsize=1024
net.inet.tcp.syncache.bucketlimit=100
[root@s61 ~]# vi /etc/sysctl.conf
#switch to syncookies
net.inet.tcp.syncookies=1
Статистика по syncache, syncookies:
[root@s61 ~]# netstat -s -p tcp



6) Увеличение размера очереди для сокетов (с 128 до 4096):

[root@s61 ~]# vi /etc/sysctl.conf 
#listen socket queue
kern.ipc.somaxconn=4096
[root@s61 ~]# sysctl kern.ipc.somaxconn
kern.ipc.somaxconn: 4096
Посмотреть статистику очереди:
[root@s61 ~]# netstat -Lan
Current listen queue sizes (qlen/incqlen/maxqlen)


7) Увеличение максимальное число открытых сокетов

[root@s61 ~]# vi /boot/loader.conf 
#max socket connections
kern.ipc.maxsockets=204800
[root@s61 ~]# sysctl kern.ipc.maxsockets
kern.ipc.maxsockets: 204800
Статистика использования сокетов:
[root@s61 ~]# vmstat -z


8) Увеличение tcp hash

tcp hash позволяет быстро определять принадлежность пришедшего пакета к определенному соединению
[root@s61 ~]# sysctl net.inet.tcp.tcbhashsize
net.inet.tcp.tcbhashsize: 512
[root@s61 ~]# vi /boot/loader.conf
#raise tcp hash
net.inet.tcp.tcbhashsize=32768
[root@s61 ~]# sysctl net.inet.tcp.tcbhashsize
net.inet.tcp.tcbhashsize: 32768


9) Увеличение максимального количества файлов и файлов на процесс:

[root@s61 ~]# vi /etc/sysctl.conf
#max files
kern.maxfiles=817764
#max files per 1 process
kern.maxfilesperproc=200000
[root@s61 ~]# sysctl kern.maxfiles
kern.maxfiles: 817764
[root@s61 ~]# sysctl kern.maxfilesperproc
kern.maxfilesperproc: 200000
Посмотреть статистику использования:
[root@s61 ~]# pstat -T
52/817764 files
0M/8192M swap space



10) Настройка времени состояния TIME_WAIT соединения:

[root@s61 ~]# vi /etc/sysctl.conf
#time_wait 2*30000MSL=60 sec
net.inet.tcp.msl=30000
#max time_wait
net.inet.tcp.maxtcptw=102400
Настройка таймаута для fin_wait2
#time_out of fin_wait2(60 sec)
net.inet.tcp.finwait2_timeout=30000

[root@s61 ~]# sysctl net.inet.tcp.msl
net.inet.tcp.msl: 30000
[root@s61 ~]# sysctl net.inet.tcp.maxtcptw
net.inet.tcp.maxtcptw: 102400
Статистика:
[root@s61 ~]#vmstat -z | grep tcptw
tcptw:                     72,   102400,        0,        0,        0,        0


11) Увеличить диапазон портов для исходящих соединений, убрать рандомный выбор и

отключить создание time_wait в рамках localhost:
[root@s61 ~]# vi /etc/sysctl.conf
#portrange (min - max)
net.inet.ip.portrange.first=2048
net.inet.ip.portrange.last=65535
#disable random choice of ports
net.inet.ip.portrange.randomized=0
#disable time_wait for localhost
net.inet.tcp.nolocaltimewait=1


12) Складываем core файлы в одно место:

[root@s61 ~]# vi /etc/sysctl.conf
#locate of core files
kern.sugid_coredump=0
kern.corefile=/var/tmp/%N.core


13)

[root@s61 ~]# vi /etc/sysctl.conf
#4GB*1024*1024/4
kern.ipc.shmall=1048576
#128MB*1024*1024
kern.ipc.shmmax=134217728
[root@s61 ~]# sysctl -a | grep -E "shmall|shmmax"
kern.ipc.shmall: 1048576
kern.ipc.shmmax: 134217728


14) Чтобы sysctl пареместры встыпили в силу:

[root@s61 ~]# /etc/rc.d/sysctl restart
Остальные параметры что в /boot/loader.conf - только после ребута:
[root@s61 ~]# shutdown -r now




Тэги и ключевые слова: #freebsd tuning, #freebsd sysctl, #тюнинг

Индекс цитирования