Нагрузочное тестирование: нестабильная ошибка «Соединение отказано» - PullRequest
1 голос
/ 06 февраля 2020

Окружающая среда:

  • Ubuntu 18.04.1, DigitalOcean: RAM 2 ГБ + 2CPU

  • Nginx (OpenResty) + Lua

Что я делаю:

Я попытался отправить простой запрос POST, например, по HTTPS: (это формат Яндекса)

[Host: myserver.com]
[Content-Type: application/x-www-form-urlencoded]
80 /api
xxxxxx=777777777&yyyyyyy=666666666&zzzzzzzz=ce96c7c3-87e5-4b90-b1e5-9664697aa5b6

Расписание: 100RPS в течение 30 секунд.

То, что я вижу:

Сначала - 1700 - 1900 запросов - успех со статусом 200. Но потом ... о 99% запросов об ошибках с ответом: «111 Соединение отклонено» максимум 1% успешных запросов с кодом 200

Если я подожду 30 секунд и перезапущу нагрузочный тест, у меня не будет даже 1600 успешных запросов! Первые запросы уже будут с ошибкой «111 Соединение отказано».

Если я подожду 10 минут и перезапущу нагрузочный тест, первый случай повторится (1700 - 1900 - успех, другой - неправильно).


МОЙ ВОПРОС:

Какие-либо предложения, какие параметры следует настроить для устранения ошибки? Это проблема в NGINX конфиге? или ОС?

Указанные ниже цифры менялись по-разному (worker_processes, worker_rlimit_nofile, worker_connections, keepalive_timeout).

Спасибо!


КОНФИГСЫ:

Nginx

user  www-data;
worker_processes  4;

error_log  logs/error.log;
error_log  logs/error.log debug;

worker_rlimit_nofile 33000;

events {
    worker_connections  4000;
    use epoll;
    multi_accept on;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    reset_timedout_connection on;
    sendfile        on;
    keepalive_timeout 15;

    include '/etc/nginx/sites-enabled/*';
}

Файл (сервер + местоположение)

...
    location ~ ^/api {
        content_by_lua '
            ngx.say("OK")
            return ngx.exit(200)
        ';
    }
...

ulimit -n

200000

1 Ответ

0 голосов
/ 27 февраля 2020

Проблема была в моем домашнем роутере

Не справился с такой нагрузкой

Проблема была решена заменой роутера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...