Когда сервер начинает подводить под нагрузкой, важно понять его пределы. Именно для таких задач существует stress-ng - инструмент для стресс-тестирования аппаратного и программного обеспечения.
Что такое stress-ng?
Это утилита, которая генерирует нагрузку на разные компоненты системы: CPU, память, диски, сеть и т.д. С её помощью можно проверить, как сервер справляется с нагрузкой, и выявить узкие места.
Установка stress-ng
Для Ubuntu/Debian:
sudo apt update
sudo apt install stress-ng -y
Для CentOS/RHEL:
sudo yum install epel-release -y
sudo yum install stress-ng -y
Примеры использования
Стресс-тест CPU. Задействуем 4 ядра процессора на 60 секунд:
stress-ng --cpu 4 --timeout 60s
Вывод:
stress-ng: info: [1002] stress-ng: dispatching hogs: 4 cpu
stress-ng: info: [1002] stress-ng: successful run completed in 60.01s
Нагрузка на память. Тестируем систему, выделяя 2 ГБ памяти:
stress-ng --vm 1 --vm-bytes 2G --timeout 60s
Вывод:
stress-ng: info: [1003] stress-ng: dispatching hogs: 1 vm
stress-ng: info: [1003] stress-ng: memory allocated: 2048 MB
Одновременная нагрузка на CPU и диск. Смешанный тест, нагружающий процессор и создающий 2 потока записи на диск:
stress-ng --cpu 4 --hdd 2 --timeout 90s
Нагрузка на файловую систему. Тест создания файлов и директорий:
stress-ng --temp-path /tmp --timeout 30s --touch 1000
Проверьте /tmp для созданных файлов.
Имитация пикового использования системы. Задействуем все ресурсы:
stress-ng --cpu 4 --io 4 --vm 2 --vm-bytes 1G --timeout 120s
Анализ результатов. Вместе с утилитой можно использовать мониторинг:
htop - для наблюдения за нагрузкой на CPU и RAM.iostat - для анализа ввода/вывода.dstat - для комбинированного мониторинга.Пример с htop:
stress-ng --cpu 4 --timeout 30s &
htop
---
В проде такое лучше не запускать, балуйтесь на тестовых серверах 🎅
BashTex 📱 #linux #utils