Ошибки при работе с Locust
Введение
В этой статье вы узнаете о популярных проблемах с Locust и их решении
Подразумевается, что вы работаете
в
Ubuntu Linux
У меня прописаны алиасы python - python3 и pip - pip3, поэтому я не пишу тройку в конце.
Статья про это называется
«Bash Python alias»
System open file limit '1024' is below minimum setting
Вы выполняете команду
locust
И получаете следующее предупреждение
[2020-10-27 10:36:12,176] andrei-ubuntu/WARNING/locust.main: System open file limit '1024' is below minimum setting '10000'. It's not high enough for load testing, and the OS didn't allow locust to increase it by itself. See https://github.com/locustio/locust/wiki/Installation#increasing-maximum-number-of-open-files-limit for more info.
[2020-10-27 10:36:12,177] andrei-ubuntu/INFO/locust.main: Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces) [2020-10-27 10:36:12,194] andrei-ubuntu/INFO/locust.main: Starting Locust 1.3.1
Минимальное количество одновременно открытых файлов должно быть от 10 000. Иначе locust не может нормально работать
Проверить предел для вашей
Linux
можно командой
cat /proc/sys/fs/file-max
9223372036854775807
9223372036854775807 - это мой абсолютный потолок. Но нас интересуюте ограничения для сторонних программ
Изучить лимиты можно командой ulimit флаги -Hn для жёсткого лимита и -Sn для мягкого setrlimit
ulimit -Sn
1024
1024 это как раз то значение, на которое жаловалася locust
Поднимем лимит
ulimit -Sn 10001
ulimit -Sn
10001
locust
[2020-10-27 11:33:44,124] andrei-ubuntu/INFO/locust.main: Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces) [2020-10-27 11:33:44,133] andrei-ubuntu/INFO/locust.main: Starting Locust 1.3.1
locust: error: unrecognized arguments: --no-web
Вы пытаетесь запусть тест без UI и выполняете команду
locust -f locustfile.py --host=https://my-site.com --no-web -u 100 -r 10
И получаете следующее предупреждение
locust: error: unrecognized arguments: --no-web
Нужно заменить --no-web на --headless потому что так решили разработчики Locust
NameError: name 'between' is not defined
Вы пытаетесь задать wait_time
NameError: name 'between' is not defined
Значит скорее всего вы просто забыли подключить between
Добавьте
from locust import between
libuv only supports millisecond timer resolution
Вы пытаетесь запусть тест используя between и получаете
c:\users\andrei\pycharmprojects\locust_demo\lib\site-packages\gevent\hub.py:158: UserWarning: libuv only supports millisecond timer resolution; all times less will be set to 1 ms with loop.timer(seconds, ref=ref) as t:
Скорее всего вы поставили минимальное значение в 0, например wait_time = between(0, 0.4)
Поставьте ненулевое значение, например 0.01