Как загрузить тестовые микросервисы с помощью Python 3.5?

У нас есть набор микросервисов, которые я хотел бы загрузить в тестирование способом, который согласуется с тем, как к ним обращаются.

После выбора Locust в качестве инструмента выбора я обнаружил, что в основе TCP-соединения есть пул соединений, потому что я продолжаю видеть подобные сообщения:

ПРЕДУПРЕЖДЕНИЕ / запросы.packages.urllib3.connectionpool: пул подключений переполнен, без подключения:

Насколько я понимаю, это сообщение говорит мне, что оно отбрасывает соединение из пула, которым оно управляет. Я предполагаю, что он все еще создает новое соединение и добавляет его вместо того, от которого он отказался.

  • Это то, что он делает?
  • Это делает это без разрыва соединения?

Я не думаю, что наши микро-сервисы держат открытыми сессии. Соединения устанавливаются на дальнем конце к нашим службам, которые обеспечивают результат, и затем соединение закрывается. Итак, тест обрабатывает соединения не так, как используются сервисы. Есть ли способ заставить lib запросов не использовать пул, и каждый раз выполнять настройку и разрывать все соединения, сделанные через него?

  • Есть ли какая-то причина, почему мы не хотели бы проверять этот способ?
  • Если предпочтительнее проводить тестирование с пулом соединений, как я должен предвидеть разницу в нагрузке, когда это не выполняется в производственной среде?

1 ответ

Правильно. Если вы не установите пул urllib3 на блокировку, он будет генерировать больше соединений, чем пул сконфигурирован для хранения по мере необходимости, а затем будет отбрасывать их после выполнения запроса.

Это часто случается, когда у вас больше потоков, использующих пул, чем количество соединений, которые настроен для хранения в пуле. urllib3 занимает maxsize параметр (по умолчанию 1), который вы можете установить на количество потоков, которые вы работаете. Для запросов вам нужно будет сделать специальный адаптер для этого. Увидеть:

Тем не менее, это просто предупреждение, которое некоторые люди игнорируют, так что это не провал. Но если это часто случается в производственной среде, это, вероятно, означает, что вы должны настроить свою конфигурацию, потому что создание / удаление новых соединений все время довольно дорого.

По этой причине рекомендуется повторно использовать соединения.

Мои предложения будут в следующем порядке:

  1. Повторно использовать соединения, или
  2. Увеличьте количество подключений, которые объединяются, чтобы соответствовать количеству потоков, или
  3. Отключите предупреждение, если вы не хотите с ним бороться.
Другие вопросы по тегам