ПРОЕКТЫ 


  АРХИВ 


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: nginx SSL offload в highload проекте


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: nginx SSL offload в highload проекте
  • From: Илья Шипицин <chipitsine@xxxxxxxxx>
  • Date: Thu, 23 Aug 2012 12:08:53 +0600
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=bC+8VD5aikhf0US3EI31YWGoeyB/MMeBQMzhJxOh8Kc=; b=SREv2n9IG4sYPQWcYbOrej2DXgw64+V3rW0cr/AUh4IT+tdCB7FGKFl4W8Z9eXJHUd wsRxk3FFM+Rdnp3XYGzJg1iyrsjMDlyGJJ+ny8CIquF27dPeTzuSqKT/52FaAtuYViQY IXiQy7uy6ZNzsk/WKUicsNW2/G/fkaWg1tC79jreLAytH5OZVwHqz5WKE8yjQwd1ak7h OOfzeRbAjNgSrPWyFKQRzXAlh6w7qLI+Tvq2LwOLFZqOzJrgxL3De/zkDvK3t1UsaU7b LSSVHmb2QzVDgGvXBMNUM5yt7rnnOSbxudDivAG7g68ZAXJ44R7ZxlXvRtT6a0YEIoAF 7bGQ==
  • In-reply-to: <027e437581ecddcdc84cb29efe1bf68f.NginxMailingListRussian@forum.nginx.org>
  • References: <027e437581ecddcdc84cb29efe1bf68f.NginxMailingListRussian@forum.nginx.org>



22 августа 2012 г., 2:04 пользователь ShivaS <nginx-forum@xxxxxxxx> написал:
Добрый вечер,

Возникла интересная возможность применения nginx в очень нагруженном
проекте.

Мы активно пользуемся Амазонон (ЕС2) и соответственно лоад балансером ELB,
который на данном этапе делает оффлоад на SSL и общается с пуш серверами.
Сервис достаточно большой, и на определенном этапе мы поняли, что ELB
перестал справляться с нагрузкой, да и его вечное отсоединение соединений с
пуш серверами уже надоело.

Провели тестирование с nginx на одном из серверов в амазоне, которое
показало неплохие результаты, но все уперлось в память.
Значит надо много серверов с большим кол-вом памяти. На удивление, несмотря
на SSL, процессоры вообще не напрягались и LA постоянно оставался < 1, что
дает возможность брать сервера с большим кол-вом памяти, малым кол-во
процессоров и экономить.
 
LA = Load Average, это показатель, который соответствует количеству процессов, ожидающих ввода-вывода. При высокой дисковой нагрузке, соотвественно упирается в потолок. В случае терминации SSL он и не должен расти больше единицы. 

Система: CentOS 6; nginx 1.2.3

конфиг подправлял в паре мест.
Вот тут:

listen       *:443 default backlog=4096 so_keepalive=30m::10;

И еще немного тут:

worker_processes  8;
worker_rlimit_nofile 204800;


events  {
        worker_connections  20000;
        use epoll;
        multi_accept on;
  accept_mutex on;
        }
 
 
серьезный момент - сколько запросов делает один клиент ? если несколько (в нашей ситуации в среднем 5), то очень серьезный выигрыш получается за счет keepalive до клиента (у вас он не включен).
 
в SSL очень дорогой хендшейк, он идет на несимметричной криптографии, keepalive позволяет уменьшить количество дорогих хендшейков. реально, CPU падает в разы (если один клиент делает несколько последовательных запросов и они попадают в одну keepalive-сессию)
 

Стоит ли ставить много воркеров и малое кол-во коннекшенов на каждый или
достаточно один и сразу выставить максимальное кол-во подсоединений? Диски
не задействованы совсем.
 
один воркер может задействовать одно ядро. если воркеров меньше, чем ядер, то сервер будет недонагружен.
 
с другой стороны, если у вас интенсивно используются механизмы, требующие согласования воркеров между собой  (например limit_req), то может быть оверхед на согласование.
 
трассируйте, смотрите :-)
 
 
Приведенные выше настройки использовались на сервере с 7ГБ памяти.
каждый воркер берет память, а при 60кб на клиент, даже несколько сотен
 
версия nginx какая ? недавно пробегал патч (включенный в последние версии), отключающий компрессию на уровне SSL, заметно снижающий потребление памяти.
 
мегабайт при большом кол-ве серверов может дать некоторый выигрыш.

Использую ssl ciphers AES256-SHA, для относительной надежности и скорости.
 
современные процессоры умеют AES-NI инструкции, в openssl они есть начиная с 1.0.1 (или чуть раньше ?). мы такое тестили - отвал башки, в продакшен скоро будем запускать. на амазоне - не знаю, там же Xen ? посмотрите на /proc/cpuinfo, светится там AES ?
 

стоит ли ставить OpenSSL 1.0.1? ECDHE не пользуем, да и тормознутый он (судя
по бенчмаркам, которые мы гоняли) и в скорости обработки подсоединений и в
объеме потребляемой памяти. Кроме этого, никаких преимуществ особо не нашел
в 1.0.1
 
в 1.0.1 есть аппаратное ускорение AES.
 
ECDHE - не более тормознутый, он быстрее за счет того, что эллиптическая криптография обеспечивает сопоставимую сложность при меньших ключах. вы случайно не такого же размера ключи выбирали ?
 
у ECDHE минус в том, что он пока не очень поддерживается на стороне клиента. но не в производительности.
 
 
Может, там что-то и подкручено, но меня интересует в основном потребление
памяти, а разницы с 1.0 в тестах не заметил

Кеш выставил, но шансы что клиент переподсоединиться на тот же сервер -
минимальны, но сотню мегов не жалко ;-)
 
ssl_session_cache  ?
в приведенном конфиге ее нет.
покажите полный конфиг ?

ну и sysctl соответственно тоже.

Сейчас вот подумываем очень серьезно о полном переходе на nginx в качестве
основного оффлоадера.
 
какая у вас нагрузка ?
мы держим 100-200к одновременных ssl-запросов на обычных серверах (и ни в какой потолок не упираемся).
 
Хотим на днях запустить полноценный продакшен тест (а может и финальный
переход на nginx)

Что еще можно подкрутить для уменьшения потребления памяти (если возможно
вообще)?
 
GeoIP память тратит :-)
покажите nginx -V
 
Может быть еще на что-то надо обратить внимание, без чего хорошего
перформанс не достигнуть?

Понимаю, что чудес наверно ждать не стоит, но вдруг кто сталкивался с чем-то
похожим и не спал ночами ;-)

И еще вопрос многоуважаемым разработчикам:
Когда планируется (и планируется ли вообще) поддержка CyaSSL?
Промелькнуло пару постов, что вроде уже тесты идут, и по слухам потребление
памяти должно сильно упасть.
Я в траке искал, но может не там...ничего не нашел

Спасибо!

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,229967,229967#msg-229967

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.