Тестирование производительности 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