Задать вопрос
un1t
@un1t

Как оптимизировать SSL в HAProxy или Nginx?

Есть VDS с 4 CPU. Настроен HTTPS на уровне HAProxy.

Вот так выглядят настройки в haproxy.cfg
global
    ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
    ssl-default-bind-options no-sslv3

    maxconn 2048
    tune.ssl.default-dh-param 2048

    nbproc 4
    cpu-map all 4
    stats bind-process 4


Меня смущает производительность, она болтается в районе 150 RPS. Как-то это слишком мало для отдачи простой html странички. Причем nginx который отдает страничку по HTTP, делает это скоростью около 5000 RPS.

ab -c 100 -n 2000 "https://myhost//test.html"
Requests per second:    166 [#/sec] (mean)


Все 4 CPU грузятся под 100%.
Страничка test.html весит 27КБ.

Я пробововал перенести SSL на сторону nginx, результат примерно такой же. - около 150 RPS.

1) Это вообще нормальная скорость 150 RPS или тут явно какая-то проблема?
2) Может есть способы как-то это ускорить? Другие алгоритмы шифрования прописать, может там буферы какие-то подтюнить?
  • Вопрос задан
  • 1182 просмотра
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 1
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
> Меня смущает производительность, она болтается в районе 150 RPS.
Самая тяжелая операция - хендшейк, всё остальное мелочи жизни.
У вас производительность не 150 RPS, а 150 хендшейков.

По сабжу, как-то так:
ssl_certificate /etc/nginx/ssl/cert.pem;
ssl_certificate_key /etc/nginx/ssl/cert.pem;

ssl_dhparam /etc/nginx/ssl/dhparam.pem;

ssl_prefer_server_ciphers on;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers kEECDH+AES128:kEECDH:kEDH:-3DES:kRSA+AES128:kEDH+3DES:DES-CBC3-SHA:!RC4:!aNULL:!eNULL:!MD5:!EXPORT:!LOW:!SEED:!CAMELLIA:!IDEA:!PSK:!SRP:!SSLv2;
ssl_session_cache shared:SSL:64m;
ssl_session_timeout 28h;

#add_header Strict-Transport-Security "max-age=31536000; always";


A-rate при оптимальной производительности, 1 хендшейк на клиента раз в 28 часов, если клиентов много разных - крутите размер ssl_session_cache.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы