1

Я пытаюсь использовать ab для оценки производительности моего веб-сайта после того, как произвожу некоторые изменения производительности.

В частности, я хотел бы проверить разницу в производительности между следующими наборами шифров - все они поддерживаются моим веб-сайтом:

ECDHE-RSA-AES128-GCM-SHA256
ECDHE-ECDSA-AES128-GCM-SHA256
ECDHE-ECDSA-CHACHA20-POLY1305 

Три команды, которые я пробовал:

ab -l -n 1000 -c 10 -H "Accept-Encoding: gzip, deflate, br" -Z ECDHE-RSA-AES128-GCM-SHA256 https://bytes.fyi/
ab -l -n 1000 -c 10 -H "Accept-Encoding: gzip, deflate, br" -Z ECDHE-ECDSA-AES128-GCM-SHA256 https://bytes.fyi/
ab -l -n 1000 -c 10 -H "Accept-Encoding: gzip, deflate, br" -Z ECDHE-ECDSA-CHACHA20-POLY1305 https://bytes.fyi/

Первые два работают нормально, но третий выдает следующую ошибку:

error setting cipher list [ECDHE-ECDSA-CHACHA20-POLY1305]
1995798240:error:1410D0B9:SSL routines:SSL_CTX_set_cipher_list:no cipher match:ssl_lib.c:1385:

Я думаю, что мои версии ab и openssl достаточно актуальны для поддержки теста:

pi@pi3:~ $ which ab && ab -V
/usr/bin/ab
This is ApacheBench, Version 2.3 <$Revision: 1757674 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

pi@pi3:~ $ which openssl && openssl version
/usr/bin/openssl
OpenSSL 1.1.0f  25 May 2017

Документы по Apache Benchmark не дают подробных сведений о том, как проверить / изменить доступные наборы шифров, которые можно указать:

-Z ciphersuite
Specify SSL/TLS cipher suite (See openssl ciphers)

Я думаю, что вышеизложенное подразумевает, что я должен иметь возможность использовать любой из наборов шифров, перечисленных командой openssl ciphers .

Все три моих целевых набора шифров действительно перечислены, поэтому я запутался, почему мой тест ab не подходит для набора ECDHE-ECDSA-CHACHA20-POLY1305.

Вот некоторые результаты, показывающие, что мой целевой набор поддерживается моей версией openssl:

pi@pi3:~ $ openssl ciphers -v | grep ECDHE-ECDSA-CHACHA20-POLY1305
ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH     Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD

1 ответ1

1

Отвечая на мой собственный вопрос теперь, когда я решил это, в случае, если это полезно для других ...

Оказывается, моя версия ab была слишком старой, чтобы (должным образом) поддерживать OpenSSL 1.1.0, как советовал мне Константин Колинко (через список рассылки поддержки httpd):

Просматривая http://svn.apache.org/r1757674 (четверг, 25 августа 12:53:03 2016 UTC) и историю файла httpd/httpd/branch /2.4.x /support /ab.c, который был изменен в этой ревизии Я думаю, что ваша версия AB вообще не поддерживает OpenSSL 1.1.0, так как поддержка 1.1.0 была добавлена более поздними версиями этого файла,

http://svn.apache.org/viewvc?view=revision&revision=1787728 "Поддержка OpenSSL 1.1.0"

В конце концов мне пришлось собрать последний транковый код всего Apache httpd, чтобы получить современную работающую версию ab . Я просто собрал его в своей домашней папке, так как вообще не собирался использовать другие элементы httpd:

# apply any updates and install pre-requisites
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libapr1 libapr1-dev libaprutil1 libaprutil1-dev libpcre3 libpcre3-dev subversion autoconf libtool libtool-bin

# move to home folder and create a folder where to build into
cd ~
mkdir httpd-install

# get the latest source and unzip it (to ~/httpd-trunk)
wget https://github.com/apache/httpd/archive/trunk.zip
unzip trunk.zip
cd httpd-trunk

# get the latest APR source and put it in '[httpd source root]/srclib/apr' (required for the build)
svn co http://svn.apache.org/repos/asf/apr/apr/trunk srclib/apr

# configure the things
chmod +x buildconf
./buildconf
./configure --prefix=/home/pi/httpd-install/ --with-included-apr

# make and install
make
make install

# create a symlink to our bleeding-edge version of ab, so we can just call it using 'ab'
sudo ln -s /home/pi/httpd-install/bin/ab /usr/bin/ab

Тогда не совсем просто ... но это сработало. Теперь у меня есть новейшая версия ab , которая, кажется, прекрасно работает даже с современными наборами шифров, такими как ECDHE-ECDSA-CHACHA20-POLY1305:

pi@pi3:~ $ ab -l -n 1000 -c 10 -k -H "Accept-Encoding: gzip, deflate, br" -Z ECDHE-ECDSA-CHACHA20-POLY1305 https://bytes.fyi/
This is ApacheBench, Version 2.3 <$Revision$>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking bytes.fyi (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests


Server Software:        nginx
Server Hostname:        bytes.fyi
Server Port:            443
SSL/TLS Protocol:       TLSv1.2,ECDHE-ECDSA-CHACHA20-POLY1305,256,256
Server Temp Key:        
TLS Server Name:        bytes.fyi

Document Path:          /
Document Length:        Variable

Concurrency Level:      10
Time taken for tests:   6.876 seconds
Complete requests:      1000
Failed requests:        0
Keep-Alive requests:    0
Total transferred:      10464567 bytes
HTML transferred:       8983567 bytes
Requests per second:    145.42 [#/sec] (mean)
Time per request:       68.764 [ms] (mean)
Time per request:       6.876 [ms] (mean, across all concurrent requests)
Transfer rate:          1486.13 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       10   31   9.6     32     110
Processing:    16   37   9.4     36     116
Waiting:       14   33   8.5     34      93
Total:         30   68  14.2     69     153

Percentage of the requests served within a certain time (ms)
  50%     69
  66%     72
  75%     73
  80%     74
  90%     77
  95%     87
  98%    103
  99%    116
 100%    153 (longest request)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .