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

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

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

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

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

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

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

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

person Cognitiaclaeves    schedule 26.01.2017    source источник


Ответы (1)


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

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

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

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

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

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