FreeBSD - Тюнинг FreeBSD 8,9
Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2024
Версия от 01:03, 29 декабря 2014; Admin iph (обсуждение | вклад)
Тюнинг FreeBSD 8,9
[root@s61 ~]# uname -a FreeBSD s61.infiumhost.com 9.0-RELEASE FreeBSD 9.0-RELEASE #2: Fri Jan 13 19:42:24 MSK 2012 [email protected]:/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