Я выполняю тестирование нагрузки HTTP по простому маршруту NodeJS, который выполняет запрос к базе данных разных пользователей и возвращает результат клиенту, используя Vegeta (https://github.com/tsenart/vegeta), но я сталкиваюсь с медленной производительностью с утомительным соединителем пула MS SQL (https://github.com/tediousjs/tedious-connection-pool).
Тест был запущен с этими конфигурациями:
- Запрос (это простой запрос): SELECT fields1 FROM таблица
- Мин. Пула: 10
- Макс. Пул: 100
- скорость: 1000 запрос ( в секунду)
- продолжительность: 30 с c
Вот результаты:
Процент успеха:
- MS SQL (пакет: пул утомительных соединений ): 60% запросов были успешными и 30% сбоев с этим сообщением ometimes: прочитайте tcp 127.0.0.1:55998->127.0.0.1:8000: прочитайте: сброс соединения по пиру
- MySQL (пакет: mysql ): 100% успеха
- PostgreSQL (пакет: узел- postgres): 100% успеха
Средняя задержка:
- MS SQL (пакет: пул утомительных соединений ): 39s c
- MySQL (пакет: mysql): 100мс
- PostgreSQL (пакет: узел- postgres ): 50мс
Я не думаю, что проблема возникает из-за конфигурации сервера или реализации кода, потому что все базы данных находятся на одном сервере, но не работают в одно и то же время для теста, и код маршрута NodeJS очень базовый c, и это одинаково для каждого соединителя.
Кроме того, я ' мы выполняем тест Jmeter t только для проверки запроса на SQL сервере, и никаких проблем, график задержки был хорошим (график задержки показывает линию менее 800 мс в течение периода тестирования).
Кто-то сталкивался с подобной проблемой или имеет Любая идея о низкой производительности на SQL сервере ( Я думаю, что низкая производительность на базе SQL Server происходит из-за утомительного драйвера, но я не уверен, и я не знаю, как его определить )?