Установить причину неудачного нагрузочного тестирования СУБД по сценарию повышенной нагрузки на CPU. Отсутствуют данные по нагрузке 39-115 . ⚠️Свопинг в ходе нагрузочного тестирования по сценарию-2.⚠️ При конфигурации CPU=2 ядра и RAM=2 GB экспоненциальный рост нагрузки до 115 соединений с высокой вероятностью приведет к свопингу, что вызовет дополнительную нагрузку на CPU и может значительно снизить производительность СУБД.
Установить причину неудачного нагрузочного тестирования СУБД по сценарию повышенной нагрузки на CPU. Отсутствуют данные по нагрузке 39-115 . ⚠️Свопинг в ходе нагрузочного тестирования по сценарию-2.⚠️ При конфигурации CPU=2 ядра и RAM=2 GB экспоненциальный рост нагрузки до 115 соединений с высокой вероятностью приведет к свопингу, что вызовет дополнительную нагрузку на CPU и может значительно снизить производительность СУБД.
...Читать далее
У любой проблемы есть корневые и сопутствующие причины.
Задача
Установить причину неудачного нагрузочного тестирования СУБД по сценарию повышенной нагрузки на CPU.
Виртуальная машина 06
- CPU = 2
- RAM = 2GB
- Astra Linux 1.7
- PostgreSQL 15
Сценарий тестирования-1
- Select only : 50% нагрузки
- Select + Update : 30% нагрузки
- Insert only : 15% нагрузки
Сценарий тестирования-2
- Select only : 50% нагрузки
- Select + Update : 30% нагрузки
- Insert only : 15% нагрузки
- CPU Load : 5% нагрузки
Нагрузка
Ось X - точка наблюдения. Ось Y - количество сессий pgbench
Операционная скорость - 2
Ось X - количество сессий pgbench. Ось Y - Операционная скорость.
Отсутствуют данные по нагрузке 39-115 .
🤔Чек-лист IO (сценарий-1 и сценарий-2)
🤔Чек-лист CPU (сценарий-1 и сценарий-2)
🕵️♂️Чек-лист RAM (сценарий-1 и сценарий-2)
ℹ️Причина ошибки нагрузочного тестирования по сценарию-2
⚠️Свопинг в ходе нагрузочного тестирования по сценарию-2.⚠️
📊 1. Механизм возникновения свопинга при нехватке памяти
- При увеличении числа подключений к СУБД (например, с 5 до 115) каждый новый процесс требует выделения памяти для своих операций. Если физической памяти (RAM) недостаточно, система начинает использовать swap-пространство на диске для перемещения неактивных страниц памяти.
- При конфигурации 2 GB RAM и интенсивной нагрузке на CPU процессы СУБД могут быстро исчерпать доступную оперативную память. Это активирует механизм подкачки, при котором демон kswapd начинает активно перемещать данные между RAM и диском, что дополнительно нагружает CPU.
⚙️ 2. Влияние свопинга на CPU и общую производительность
- Процесс свопинга требует значительных вычислительных ресурсов. При активном использовании swap-пространства нагрузка на CPU может достигать 90-100%, причем большая часть этого времени тратится на системные (kernel) операции.
- Это связано с тем, что ядро Linux должно управлять страницами памяти, определять, какие данные перемещать в swap, и обрабатывать дисковые операции ввода-вывода. В результате нагрузка на CPU возрастает даже при том, что основная задача свопинга — разгрузить оперативную память.
3. Экспоненциальный рост нагрузки и его последствия
- Экспоненциальное увеличение числа соединений (с 5 до 115) приводит к нелинейному росту потребления ресурсов. Каждое новое соединение требует памяти для выполнения запросов, хранения временных данных и управления транзакциями.
- При 2 GB RAM такой рост может быстро исчерпать доступную память. Например, если каждое соединение потребляет даже небольшой объем памяти (например, 20-50 MB), то при 115 соединениях общее потребление может превысить 2 GB, что активирует свопинг.
💎 Заключение
При конфигурации CPU=2 ядра и RAM=2 GB экспоненциальный рост нагрузки до 115 соединений с высокой вероятностью приведет к свопингу, что вызовет дополнительную нагрузку на CPU и может значительно снизить производительность СУБД.