2 votes

Amélioration du débit de NGINX sur un seul thread SSL

Nous configurons un serveur de livraison de fichiers en utilisant nginx. Le serveur servira des fichiers volumineux via HTTPS.

Nous avons rencontré un problème où nous ne pouvons atteindre qu'environ 25MB/s sur un seul fil HTTPS.

Nous avons effectué des tests en utilisant un seul fil de téléchargement non-HTTPS (http://) et nous avons pu atteindre la pleine vitesse de la ligne (1Gb/s) à environ 120MB/s.

Le CPU n'est pas près d'atteindre son maximum lors du cryptage des transferts. Nous avons BEAUCOUP de puissance de traitement en réserve.

Nous utilisons fils d'aio y directio pour le système de livraison de fichiers avec de grands tampons de sortie.

Voici un exemple de notre configuration :

server {

sendfile off;
directio 512;
aio threads;
output_buffers 1 2m;

            server_name  downloads.oursite.com;
            listen       1.1.1.1:443 ssl;
            ssl_certificate /volume1/Backups/nginxserver/ourdownloads.cer;
            ssl_certificate_key /volume1/Backups/nginxserver/ourdownloads.key;
            ssl on;
            ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
            ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
            ssl_prefer_server_ciphers on;
            ssl_stapling on;
            ssl_stapling_verify on;
            resolver 8.8.4.4 8.8.8.8 valid=300s;
            resolver_timeout 10s;

location = / {
        rewrite ^ https://oursite.com/downloads.html permanent;
}

error_page 404 /404.html;
        location = /404.html {
                root /volume1/Backups/nginxserver/pages/;
                internal;
        }

location / {
                root   /volume1/downloads.oursite.com;
    limit_conn_status 429;
 limit_conn alpha 50;
}
}

Quelqu'un sait-il comment obtenir des vitesses de transfert plus rapides pour un seul thread sur une connexion SSL ? Quelle est la cause de ce problème ? Merci d'avance pour vos astuces, suggestions, conseils et aide.

0 votes

Êtes-vous certain d'être lié au CPU+SSL ? Quel débit obtenez-vous sans https ? Voyez-vous également des retransmissions tcp en netstat -s o nstat

0 votes

Veuillez consulter notre commentaire ci-dessus. Nous obtenons une vitesse de ligne complète sur un seul fil sans HTTPS. De plus, consultez notre réponse ci-dessous - les tests de vitesse openssl montrent le débit exact que nous obtenons sur un seul fil HTTPS. Si nous doublons le nombre de fils, nous obtenons le double du débit. Avez-vous des idées ? Merci pour votre aide.

0voto

0x00FE Points 31

Il semble que notre CPU soit à blâmer. Pas de support de cryptage AES intégré.

admin@RackStation:/$ openssl speed -evp aes-128-cbc
Doing aes-128-cbc for 3s on 16 size blocks: 5462473 aes-128-cbc's in 2.97s
Doing aes-128-cbc for 3s on 64 size blocks: 1516211 aes-128-cbc's in 2.97s
Doing aes-128-cbc for 3s on 256 size blocks: 392944 aes-128-cbc's in 2.97s
Doing aes-128-cbc for 3s on 1024 size blocks: 98875 aes-128-cbc's in 2.98s
Doing aes-128-cbc for 3s on 8192 size blocks: 12479 aes-128-cbc's in 2.97s
OpenSSL 1.0.2o-fips  27 Mar 2018
built on: reproducible build, date unspecified
options:bn(64,64) rc4(16x,int) des(idx,cisc,16,int) aes(partial) blowfish(idx) 
compiler: information not available
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-128-cbc      29427.46k    32672.56k    33869.92k    33975.84k    34420.19k

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X