Тюнинг FreeBSD для високих мережевих навантажень

  у розділі Технічні теми 
                           ,        ,
                           /(        )`
                           \ \___   / |
                           /- _  `-/  '
                          (/\/ \ \   /\
                          / /   | `    \
                          O O   ) /    |
                          `-^--'`<     '
                         (_.)  _  )   /
                          `.___/`    /
                            `-----' /
                <----.     __ / __   \
                <----|====O)))==) \) /====
                <----'    `--' `.__,' \
                            |        |
                             \       /       /\
                        ______( (_  / \______/
                      ,'  ,-----'   |
                      `--{__________)

Тюнинг сервера FreeBSD для надійної роботи з великим трафіком. Мережеві карти Intel (em, igb).

sysctl

Вставити в /etc/sysctl.conf:

# Безпека + зменшення навантаження при DDoS-атаках
net.inet.tcp.blackhole=2
net.inet.udp.blackhole=1

net.graph.recvspace=8388608
net.graph.maxdgram=8388608

dev.em.0.rx_int_delay=200
dev.em.0.tx_int_delay=200
dev.em.0.rx_abs_int_delay=4000
dev.em.0.tx_abs_int_delay=4000
dev.em.0.rx_processing_limit=4096

dev.em.1.rx_int_delay=200
dev.em.1.tx_int_delay=200
dev.em.1.rx_abs_int_delay=4000
dev.em.1.tx_abs_int_delay=4000
dev.em.1.rx_processing_limit=4096

dev.igb.0.rx_processing_limit=4096
dev.igb.1.rx_processing_limit=4096

net.route.netisr_maxqlen=4096

kern.ipc.nmbclusters=400000
kern.ipc.maxsockbuf=83886080

net.inet.ip.intr_queue_maxlen=10240

net.inet6.ip6.auto_linklocal=0
net.inet6.mld.use_allow=0

net.inet.tcp.sendbuf_max=4194304
net.inet.tcp.recvbuf_max=4194304

loader.conf

Вставити в /boot/loader.conf:

# network interfaces
hw.em.rxd=4096
hw.em.txd=4096
hw.em.max_interrupt_rate=32000

hw.igb.rxd=4096
hw.igb.txd=4096
hw.igb.max_interrupt_rate=32000

# for other protocols (IP & PPPoE?)
net.isr.defaultqlimit=4096

# default outgoing interface queue length
# used by lagg etc.
net.link.ifqmaxlen=10240

#netgraph queue sizes tuning, see vmstat -z|egrep 'ITEM|NetGraph'
# net.graph.maxdata=65536
# net.graph.maxalloc=65536
net.graph.maxdata=2048
net.graph.maxalloc=4096

Різне

Дуже цікава практична стаття на цю тематику.

Вищевказана конфігурація використовується на серверах з трафіком близько 1Гб/с, 1500 клієнтів PPPoE.


Коментарі