tsung

проведемо тестування сайту навантаженням
за допомогою програми tsung , яка написана на erlang,
та вміє додавати віртуальних "нових користувачів сайту" щосекунди,
іншими словами -- відправляти запити та "ходити" по сайту

erlang (v 22) у мене уже встановлений,
тому я одразу переходжу до встановлення tsung:

скачати, розархівувати, встановити

$ wget http://tsung.erlang-projects.org/dist/tsung-1.7.0.tar.gz
$ tar -zxvf tsung-1.7.0.tar.gz
$ cd tsung-1.7.0

$ ./configure
$ make
$ sudo make install

далі нам потрібен конфіг

$ cp /home/user/tsung-1.7.0/examples/simple_http.xml /home/user/tsung.xml 
$ cd /home/user
$ vim tsung.xml

поправимо конфіг до наступного вигляду,
для простого нагрузочного тестування сайту з https

<?xml version="1.0"?>
<!DOCTYPE tsung SYSTEM "/usr/share/tsung/tsung-1.0.dtd">
<tsung loglevel="notice" version="1.0">

  <clients>
    <client host="localhost" cpu="1" use_controller_vm="true"/>
  </clients>

  <servers>
    <server host="yourwebsite.com" port="443" type="ssl"></server>
  </servers>

  <load>
  <arrivalphase phase="1" duration="5" unit="minute">
    <users arrivalrate="15" unit="second"></users>
  </arrivalphase>
  </load>

  <sessions>
  <session name="https-example" probability="100" type="ts_http">
    
    <set_option name="certificate">
      <certificate keyfile="/home/user/tsungkeys/key.pem" certfile="/home/user/tsungkeys/certificate.pem"></certificate>
    </set_option>
    
    <request> <http url="https://yourwebsite.com/page/2" method="GET" version="1.1"></http> </request>

    <thinktime value="10" random="true"></thinktime>
    
    <request> <http url="https://yourwebsite.com/page/2" method="GET" version="1.1"></http> </request>
    
  </session>
  </sessions>
</tsung>

налаштування тут говорить
"тестуємо 5 хвилин, щосекунди приходить 15 нових користувачів,
які роблять по 2 запити, між якими до 10 секунд рандом пауза"
отже, маємо 5 * 60 * 15 = 4500 користувачів * 2 = 9000 запитів

згенеруємо сертифікат, шлях до якого прописали в налаштуваннях

$ openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem

залишилось скопіювати конфіг і можемо запускати

$ mkdir /home/user/.tsung
$ cp tsung.xml /home/user/.tsung/tsung.xml
$ cd /home/user/.tsung

$ tsung -f tsung.xml start

далі ми можемо спостерігати, як поводиться наш сайт та сервер під навантаженням :)

Посилання

http://tsung.erlang-projects.org/
http://tsung.erlang-projects.org/user_manual/conf-load.html#randomly-generated-users
https://github.com/processone/tsung/issues/213
https://www.ibm.com/support/knowledgecenter/en/SSMNED_5.0.0/com.ibm.apic.cmc.doc/task_apionprem_gernerate_self_signed_openSSL.html
https://habr.com/ru/post/132459/