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
onstat
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.