Я написал небольшой Flask Rest API для целей обучения. Он хорошо работает, когда я тестирую его как один пользователь.
Затем я узнал о Locust, подумал, что нужно протестировать мой API для нескольких одновременно работающих пользователей, и он не прошел.
Я тестировал API для POST.
Для меньшей JSON полезной нагрузки я могу запустить ее до 400 пользователей, с 55 одновременными пользователями в секунду, и она прекрасно работает.
Для большей JSON полезной нагрузки (20 КБ) она прекрасно работает до 350 пользователей. (5 одновременных), но терпит неудачу после отметки около 370 пользователей.
Ошибка, которую он выдает:
uwsgi_response_writev_headers_and_body_do(): Broken pipe [core/writer.c line 306] during POST /myurl ()
IOError: write error
Иногда я вижу: SIGPIPE: writing to a closed pipe/socket/fd (probably the client disconnected) !!!
У меня есть это в моем uwsgi.ini
:
listen = 2048
enable-thread = True
threads = 32 #I do not understand the relation between this and concurrent users, yet
Я не вносил никаких изменений в mysql файл conf.
Как улучшить мой API?
(Flask -Restful, MySQL, uwsgi, Nginx, ubuntu)