如何确定 nginx/HTTPS 加密是我的瓶颈?

如何确定 nginx/HTTPS 加密是我的瓶颈?

我正在使用 Digital Ocean droplet(类似于 EC2 主机),它是 Ubuntu 22.10,并运行 node.js 应用程序。但是,这可能是一个坏主意,我在同一台主机和应用程序上运行 nginx,它正在终止 HTTPS 连接。一切运行正常,但有一个警告。

我最昂贵的调用花费了大约 622 毫秒来计算结果,但随后花费了大约 6 秒来发送数据。由于发送响应的速度变慢,我怀疑这个贫血 droplet 上的 HTTPS 加密是瓶颈。

我的问题是,如何收集有关 nginx 性能的数据来确定这是否是瓶颈?提前谢谢您!

答案1

加密速度可以通过该openssl speed工具进行测试(见人openssl速度):

概要

openssl 速度 [-help] [-engine id] [-elapsed] [-evp 算法] [-decrypt] [-rand 文件...] [-writerand 文件] [-primes num] [-seconds num] [-bytes num] [算法...]

描述

此命令用于测试加密算法的性能。要查看支持的算法列表,请使用 list --digest-commands 或 list --cipher-commands 命令。全局 CSPRNG 由随机算法名称表示。

例如,这是在具有 i5-4570 CPU(10 年前发布)的 Debian 11 桌面上运行的:

$ openssl speed aes
Doing aes-128 cbc for 3s on 16 size blocks: 42126692 aes-128 cbc's in 3.00s
...
Doing aes-256 cbc for 3s on 16384 size blocks: 31677 aes-256 cbc's in 3.00s
OpenSSL 1.1.1n  15 Mar 2022
built on: Fri May 26 21:30:44 2023 UTC
options:bn(64,64) rc4(16x,int) des(int) aes(partial) blowfish(ptr) 
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -Wa,--noexecstack -g -O2 -ffile-prefix-map=/build/openssl-FSeIwm/openssl-1.1.1n=. -fstack-protector-strong -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DNDEBUG -Wdate-time -D_FORTIFY_SOURCE=2
The 'numbers' are in 1000s of bytes per second processed.
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes  16384 bytes
aes-128 cbc     224675.69k   234114.05k   234762.07k   236847.45k   236888.06k   237076.48k
aes-192 cbc     194343.19k   199041.24k   199621.38k   200813.57k   200278.02k   196515.16k
aes-256 cbc     167304.09k   171438.21k   172737.84k   172836.18k   172886.70k   172998.66k

每个核心能够使用 AES-256-CBC 加密 170 MB/秒无硬件加速由于它是 2 核 4 线程 CPU,因此我还运行了 4 线程测试 ( openssl -multi 4 aes),总体速度为 642MB/s。

可以使用“EVP”接口测试 AES-128-GCM:

$ openssl speed -multi 4 -evp aes-128-gcm
...
evp            1467308.76k  3688563.14k  7856414.29k 10757336.06k 12390427.31k 12442206.21k

这表明使用 AES-NI 硬件加速后速度为 12 GB/s。

因此,即使您的服务器在这台计算机上运行,​​加密也不会成为瓶颈。

相关内容