ПРОЕКТЫ 


  АРХИВ 


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: соотношение баланс ировщиков/веб-серверов (оффтоп, но...)



On Fri, Oct 23, 2009 at 03:53:36AM +0300, Denys Fedoryschenko wrote:

> >
> > Оптимизация даёт пару процентов, не больше.
> Абсолютно не согласен.

Под оптимизацией я имел ввиду -O2 и выше и сборку под конкретный процессор.

> Приведу примеры из своей жизни:
> 1)Настройка шедулера. CFQ который частенько используют, по умолчанию работает 
> с NCQ/TCQ просто отвратительно. Впрочем anticipatory тоже, и неудивительно, у 
> TCQ своя точка зрения на оптимизацию дисковой системы, с более глубоким 
> знанием физики диска, на котором стоит контроллер. По iostat это видно 
> увеличением трансфера на 2-3 Mbyte/s (было около 3Mbyte/s, стало 5 Mbyte/s). 
> Трансфер небольшой - т.к. масса запросов на очень мелкие файлы. С помощью 
> latencytop,профайлера,httping можно подогнать значения к приемлимому 
> компромиссу.
> 
> iostat -d -x 1
> Linux 2.6.31.4-build-0048y (PROXY)         10/23/09        _i686_  (4 CPU)
> ...
> Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz 
> avgqu-sz   await  svctm  %util
> sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00    
>  
> 0.00    0.00   0.00   0.00
> sdb               0.00    52.00   99.00   11.00   856.00   504.00    12.36    
>  
> 0.94    8.53   1.05  11.60
> sdc               0.00    15.00    0.00    1.00     0.00   128.00   128.00    
>  
> 0.01    6.00   6.00   0.60
> sdd               0.00    23.00   66.00    1.00   544.00   192.00    10.99    
>  
> 0.76   11.34   0.85   5.70
> sde               0.00     0.00    3.00    0.00    24.00     0.00     8.00    
>  
> 0.01    4.67   4.67   1.40
> dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00    
>  
> 0.00    0.00   0.00   0.00
> 
> 
> 
> 
> 2)Настройки файловой системы. noatime, nodiratime, отключаем барьеры (но 
> рискуем data integrity), journal_async_commit, journal в writeback. 
> Естественно сама файловая система тоже имеет значение.
> 3)SMP affinity. Cache coherency имеет огромное значение. В старых версиях 
> дистрибутивов любили разбрасывать сетевые прерывания ровным слоем по ядрам, 
> что приводило к колоссальным cache miss. В моем случае программного 
> маршрутизатора это привело почти к двукратному росту производительности 
> (правильно установленный affinity).
> 4)somaxconn, про это вообще молчу. На squid+linux на дефолтовом значении 
> начинало затыкаться уже на 7-10k req/sec.
> 5)Если по умолчанию запущен conntrack, это убийца производительности сетевого 
> стека. Собственно лучше избавиться от iptables вообще, и резать через iproute 
> filter
> 6)Само собой размеры сетевых буферов в sysctl
> 7)Шедулер
> 
> И самое главное - профайлинг, профайлинг и еще раз профайлинг.
> Вот например на этом тазике очень медленный таймер (AMD черт его подери)
>              samples    pcnt         RIP          kernel function
>   ______     _______   _____   ________________   _______________
> 
>             13996.00 - 41.5% - 00000000c028c494 : acpi_pm_read
>               834.00 -  2.5% - 00000000c029e738 : __napi_schedule
>               825.00 -  2.4% - 00000000c01475c8 : getnstimeofday
>               781.00 -  2.3% - 00000000c0211e34 : copy_to_user
> 
> Ну и конечно можно посмотреть узкие места в самом ПО. У меня почти все 
> сервера 
> собраны без debug symbols, потому примеры показать не могу.
> 
> Хотя вот, нашел, результат злоупотребления мной high resolution таймерами в 
> userspace.
> SUPERPROXY ~ # perf report|more
> # Samples: 53605
> #
> # Overhead         Command              Shared Object  Symbol
> # ........  ..............  .........................  ......
> #
>     14.02%            init  [kernel]                   [k] acpi_pm_read
>      7.76%          globax  [kernel]                   [k] acpi_pm_read
>                 |
>                 |--99.73%-- getnstimeofday
>                 |          ktime_get_ts
>                 |          |
>                 |          |--63.98%-- ktime_get
>                 |          |          |
>                 |          |          |--64.20%-- sys_timer_settime
>                 |          |          |          syscall_call
>                 |          |          |          timer_settime
>                 |          |          |          mytimer_set
> 
> Причем это проявляется только на AMD, и некоторых интелях, где наблюдаются 
> проблемы с таймерами.
> Поэтому смотреть надо, в чем проблема на том сервере и искать где узкое место.
> 
> >
> > > On Thursday 22 October 2009 19:20:25 big bond wrote:
> > > > CARP только в BSD, а эти замечательные системы у нас в компании не
> > > > принято использовать. Скорее всего балансер(ы) будут железные, но пока
> > > > тестируем.
> > > >
> > > > Кстати, сегодня пробовали нагрузить конкурентными SSL-сессиями один из
> > > > тестирумых балансировщиков, использовали программу flood_connect. Я
> > > > скомпилировал её на линуксовой машине (2хXEON E5420, 2.50GHz, 4GB RAM,
> > > > SUSE ENT 10.2), выжать смог максимум 16000 соединений, все 4 ядра были
> > > > загружены на 100%.
> > > > Коллега скомпилировал на старенькой железке (P3 700MHz, 512MB RAM,
> > > > FreeBSD 7.2), выжал 7500 соединений и процессор был загружен не более
> > > > 80%!!!! Сам балансировщик при этом тоже неплохо был загружен.
> > > > Как такое возможно? Старая железка отстала всего в два раза от
> > > > современного неслабого сервера!
> > > > Запускали так: *flood_connect -S -f 10 -p 443 адрес_балансировщика*
> > > > -f - количество форков
> > > > -S - SSL-режим
> 
> 

-- 
Игорь Сысоев
http://sysoev.ru



 




Copyright © Lexa Software, 1996-2009.