Linux
September 7

Тестирование производительности VPS сервера LINUX (debian/ubuntu)

Тесты производительности VPS необходимы для объективной оценки вычислительных ресурсов серверов. Проведение таких тестов помогает сравнить различные виртуальные серверы по ключевым параметрам: производительности процессора (CPU), скорости работы с памятью (RAM), пропускной способности дисковой системы и скорости интернет-соединения. Это позволяет выбрать оптимальный сервер для конкретных задач, будь то хостинг приложений, базы данных или вычислительные задачи. С помощью таких бенчмарков, как Geekbench, можно легко получить результаты в виде баллов и сравнить VPS по объективным метрикам.


Способ №1 - быстрый

С помощью инструментов sysbench и Ookla Speedtest CLI можно легко протестировать ключевые параметры сервера: процессор (CPU), оперативную память, дисковую систему и скорость интернет-соединения.

Эти тесты позволяют объективно оценить, насколько VPS отвечает требованиям пользователя по производительности. Результаты записываются в текстовый файл и могут быть использованы для сравнения различных серверов, что упрощает принятие решения о выборе подходящего хостинга.

Для автоматизации процесса создан скрипт, который выполняет все тесты, сохраняет результаты в файл и загружает их на FTP-сервер для дальнейшего анализа.

Как использовать:

Создайте скрипт:

nano boyko_it_linux_server_benchmark.sh
#!/bin/bash

# Установка sysbench
echo "Установка sysbench..."
sudo apt update && sudo apt install -y sysbench

# Установка Ookla Speedtest CLI
echo "Установка Ookla Speedtest CLI..."
sudo apt install -y gnupg1 apt-transport-https dirmngr
curl -s https://packagecloud.io/install/repositories/ookla/speedtest-cli/script.deb.sh | sudo bash
sudo apt install -y speedtest

# Получаем IP-адрес сервера
IP_ADDRESS=$(hostname -I | awk '{print $1}')

# Получаем имя хоста
HOST_NAME=$(hostname)

# Формируем имя файла с результатами, включающее IP-адрес и имя хоста
RESULTS_FILE="sysbench_speedtest_${IP_ADDRESS}_${HOST_NAME}.json"

# Очистка файла перед началом тестов
> $RESULTS_FILE

# Переменные для хранения значений
CPU_EVENTS=""
MEMORY_TRANSFERED=""
MEMORY_SPEED=""
DISK_READ=""
DISK_WRITE=""
INTERNET_DOWNLOAD=""
INTERNET_UPLOAD=""

# Тест CPU
CPU_EVENTS=$(sysbench cpu --cpu-max-prime=20000 run | grep "events per second" | awk '{print $4}')

# Тест памяти (правка для удаления скобки)
MEMORY_RESULTS=$(sysbench memory run | grep "transferred")
MEMORY_TRANSFERED=$(echo $MEMORY_RESULTS | awk '{print $1}')
MEMORY_SPEED=$(echo $MEMORY_RESULTS | awk '{print $4}' | sed 's/[()]//g')

# Тест дисковой системы (подготовка файлов для теста и результаты)
sysbench fileio --file-total-size=2G prepare
DISK_READ=$(sysbench fileio --file-total-size=2G --file-test-mode=rndrw run | grep "read, MiB/s" | sed 's/[^0-9.]//g')
DISK_WRITE=$(sysbench fileio --file-total-size=2G --file-test-mode=rndrw run | grep "written, MiB/s" | sed 's/[^0-9.]//g')
sysbench fileio --file-total-size=2G cleanup

# Тест скорости интернета
INTERNET_DOWNLOAD=$(speedtest --accept-license --accept-gdpr | grep "Download" | awk '{print $3}')
INTERNET_UPLOAD=$(speedtest --accept-license --accept-gdpr | grep "Upload" | awk '{print $3}')

# Создание JSON-выхода с именем сервера и IP
echo "{
  \"server_name\": \"$HOST_NAME\",
  \"server_ip\": \"$IP_ADDRESS\",
  \"cpu\": $CPU_EVENTS,
  \"memory\": {
    \"transfered\": $MEMORY_TRANSFERED,
    \"speed\": $MEMORY_SPEED
  },
  \"disk\": {
    \"read\": $DISK_READ,
    \"write\": $DISK_WRITE
  },
  \"internet\": {
    \"download\": $INTERNET_DOWNLOAD,
    \"upload\": $INTERNET_UPLOAD
  }
}" > $RESULTS_FILE

echo "Результаты тестов сохранены в $RESULTS_FILE в формате JSON"

# Загрузка файла на FTP сервер
echo "Загрузка файла на FTP сервер..."
curl -T $RESULTS_FILE ftp://user:password@ftp.server.com/linux_bench/ --ftp-create-dirs

echo "Файл загружен на FTP сервер: $RESULTS_FILE"

# Отправка JSON на вебхук
WEBHOOK_URL="WEBHOOK_URL"
echo "Отправка данных на вебхук: $WEBHOOK_URL"
curl -X POST -H "Content-Type: application/json" \
  -d @"$RESULTS_FILE" \
  $WEBHOOK_URL

echo "Данные отправлены на вебхук: $WEBHOOK_URL"

Не забудьте заменить логин и пароль и пусть ftp сервера на свои чтобы файлы с результатами сразу загрузились к вам на сервер.

Сделайте скрипт исполняемым:

chmod +x boyko_it_linux_server_benchmark.sh

Запустите скрипт:

./boyko_it_linux_server_benchmark.sh

Этот скрипт выполнит тесты, сохранит результаты в файл с именем, содержащим IP-адрес и имя хоста, а затем загрузит файл на ваш FTP-сервер и отправит данные на вебхук для дальнейшей автоматизиции.


Способ №2 - медленный и не на всех VPS работает, однако более детализированный.

Тест делается примерно минут 10-15

Для установки Geekbench через командную строку сервера (без доступа к графическому интерфейсу), выполните следующие команды для загрузки и установки бенчмарка на вашем сервере с Ubuntu или Debian.

Шаги установки и запуска Geekbench:

1. Перейдите в рабочую директорию:

cd /tmp

2. Скачайте последнюю версию Geekbench для Linux: Используйте команду wget, чтобы загрузить архив

wget https://cdn.geekbench.com/Geekbench-6.2.0-Linux.tar.gz

3. Распакуйте архив: Используйте команду tar, чтобы распаковать загруженный файл:

tar -xvzf Geekbench-6.2.0-Linux.tar.gz

4. Перейдите в распакованную директорию:

cd Geekbench-6.2.0-Linux

5. Запустите тест производительности: Для запуска теста просто выполните:

./geekbench6

6. Просмотр результатов: После завершения теста Geekbench покажет вам ссылку на результаты на своём сайте, где вы сможете увидеть подробные данные по вашему тесту и сравнить их с другими системами.

Результаты тестирования

Зарегистрировавшись на сайте geekbench вы сможете сохранять результаты тестирования своих серверов и сравнивать их.

Команды для удаления ненужных файлов после теста:

Перейдите в директорию, где были загружены и распакованы файлы:

cd /tmp

Удалите скачанный архив и распакованную папку:

rm -rf Geekbench-6.2.0-Linux.tar.gz Geekbench-6.2.0-Linux

Да прибудет с вами сила!