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

Alexey V. Karagodov kav at karagodov.name
Mon Jun 2 17:04:05 MSD 2008


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




More information about the nginx-ru mailing list