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  
отключать, жесть)
 
 
######## успехов
 
 
 
 
 
 
 
 
 
 |