ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: поправки к "100-200 тысяч соединени й" для FreeBSD 7 ( i386 и amd64 )




On 02.06.2008, at 15:49, MZ wrote:

В пн, 02/06/2008 в 14:55 +0400, Alexey V. Karagodov пишет:
On 02.06.2008, at 14:13, MZ wrote:

В вс, 01/06/2008 в 05:09 +0400, Alexey V. Karagodov пишет:
Keywords: freebsd tcp optimization tune speed socket mbuf sendfile
sysctl
From: Сысоев Игорь Владимирович <http://
www.sysoev.ru>
Date: Mon, 1 Oct 2007 14:31:37 +0000 (UTC)
Subject: FreeBSD для обслуживания 100-200 тысяч
соединений


######## /usr/src/sys/i386/conf/CUSTOM


include GENERIC
сложно скопировать и почистить ? чем
инклудить весь мусор


device pf
device pflog
device pfsync
device carp


options ALTQ
options ALTQ_CBQ
options ALTQ_RED
options ALTQ_RIO
options ALTQ_HFSC
options ALTQ_CDNR
options ALTQ_PRIQ
options ALTQ_NOPCC


#options QUOTA
options IPSEC
оригинально, [GIANT] поддержку квот
выключили но ipsec оставляем, для
чего ?
да, для этих примеров надо было
почистить файлики, согласен
кстати, если IPSEC не использовать,
ничего плохого не будет?
кроме потребления памяти
Будет, особенно если на ядрах версии <= 6.x компилить просто IPSEC
поправки были для 7-ки
и что будет-то?


вместо FAST_IPSEC.
в 7-ке этого options нет
проще говоря FAST_IPSEC чуть ли не переименовали в IPSEC






#options IPSEC_FILTERGIF
device crypto
device cryptodev


options DEVICE_POLLING
#options HZ=1000


#options SCHED_ULE


options KVA_PAGES=512


options VM_KMEM_SIZE=1073741824
options VM_KMEM_SIZE_MAX=1073741824


options PANIC_REBOOT_WAIT_TIME=60


ident CUSTOM




######## /boot/loader.conf
verbose_loading="YES"
loader_logo="beastie"
#ng_ether_load="YES"
#linux_load="YES"
accf_data_load="YES"
accf_http_load="YES"
а в ядро добабавить сразу нельзя ?
не всегда нужно. работает точно также
или нет?
В случае именно с accept-фильтрами не знаю, а вот с другими драйверами наблюдал проблемы если они были загружены модулями, например с tap(4).
tap не используется



net.inet.tcp.syncache.hashsize=1024
net.inet.tcp.syncache.bucketlimit=100
net.inet.tcp.tcbhashsize=4096
kern.ipc.nsfbufs=10240

тут
vm.kmem_size=1G
без options KVA_PAGES=512 на i386 будет паника
это я вроде включал в конфиг ядра i386
Да, но давать советы по увеличению kmem до 1Г не предупреждая что этого
нельзя делать на GENERIC ядре....
почему нельзя?




vm.kmem_size_max=1G


######## /etc/sysctl.conf
net.inet.tcp.blackhole=1
net.inet.udp.blackhole=1


kern.ipc.nmbclusters=262144
Зачем такой гемор, ограничения на
полгига при ядерной памяти на гиг ?
Потом подымай если что..
Ставим kern.ipc.nmbclusters=0 в /boot/loader.conf и все
работает.
что здесь означает 0 ?
Отсутствие ограничений на размер зоны. Причем установка sysctl-а kern.ipc.nmbclusters в loader.conf влияет и на другие sysctl-ы, в отличие от смены этого sysctl после загрузки ядра.



kern.ipc.somaxconn=4096
kern.ipc.maxsockets=204800
kern.maxfiles=204800
kern.maxfilesperproc=200000
net.inet.ip.portrange.first=1024
net.inet.ip.portrange.last=65535
net.inet.ip.portrange.randomized=0
net.inet.tcp.recvspace=8192

net.inet.tcp.sendspace=16384
Зачем юзеру спешить что-то качать,
пусть понаблюдает как картинки одна
за одной возникают на странице.
Особенно если он на другом континенте.
Или сервер досят сразу после
загрузки ? Впечатление что автор не
нашел
другого способа избежать паники от
нехватки ядерной памяти.
приступ паранойи был, вот и уменьшил
сколько рекомендуете поставить? сенд -
256К или 512К ? страницы у нас в среднем
такие
128K в самый раз. Это чтоб быстро работало. Чтоб не падало в панику от нехватки памяти надо смотреть куда она девается и там уже чинить.


net.inet.tcp.maxtcptw=40960
net.inet.tcp.msl=30000
net.inet.tcp.syncookies=1
net.inet.tcp.nolocaltimewait=1
net.inet.tcp.fast_finwait2_recycle=1




######## после всех мытарств, работа
системы весьма порадовала.
Для трафика до двухсот мегабит в
принципе сойдут и такие настройки.
ваши рекомендации? пол гигабита,
гигабит, 5, 10 гигабит
Скажем так, гигабит на ваших рекомендация если и потянет то очень специфичного трафика, вот что я имел ввиду. Для того что-бы разгнать сервер до 1Г надо другие настройки (в каждом случае свои)
очень специфичный ответ ...
трафик простой, статика, динамика (проксируемая), 1 Гбит (к примеру)




######## комменты только приветствуются.
######## огромное пожелание к Игорю
включить сей опус с поправками и
комментариями (кои лично меня ОЧЕНЬ
интересуют) в документацию на
своём сайте.


######## данные конфиги являются
результатом печального опыта. если не
указывать vm.kmem_size_max, ядру нехватит
памяти, для всей этой
красоты.
Ядру надо увеличивать память, не
вопрос. Как и уменьшать её лишнее
потребление. Но не банальным же
уменьшением tcp-буфера.
если "почистить" GENERIC, то много памяти
не выиграешь. по сравнению с тем
гимором, который можно получить
что там такого ужасного есть в GENERIC?
debug_symbols ? лучше пусть будут
Причем тут память занимаемая кодом. Чистка ядра нужна не для того чтобы освободить память занимаемую драйвером, а чтобы снизить нагрузку от вызова кода который все равно не используется, например квоты, или
кто/что его будет вызывать?


ipsec, или драйвера usb.
И уж в корне неверно уменьшать потребление памяти через уменьшение буферов tcp, разве что сервер жестко досят и по другому никак. Это тоже самое что уменьшить в апаче MaxClients до 100 чтоб сервер не свопило (а некоторые ещё и советуют KeepAlive отключать, жесть)



######## успехов






 




Copyright © Lexa Software, 1996-2009.