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