Sinatra + Thin + Nginx Connect() не удалось (111: соединение отклонено) при подключении к восходящему каналу

У меня есть приложение Sinatra, которое работает на Thin с Nginx в качестве обратного прокси-сервера и получает большой трафик. Мои пользователи сообщают об ошибках 502, и, просматривая журналы Nginx, я вижу множество таких ошибок:

      [warn] upstream server temporarily disabled while connecting to upstream
[error] connect() failed (111: Connection refused) while connecting to upstream

Если я посмотрю журналы приложения Sinatra, я не увижу ошибок.

Я запускаю тонкий сервер со следующим:

      --max-conns 15360 --max-persistent-conns 2048 --threaded start

Я установил для Ninx следующее:

      worker_processes  auto;
worker_rlimit_nofile 65535;

events {
    worker_connections  15360;
}

Хост-файл приложения Sinatra:

      server {
    server_name my_sinatra_app;

    #lots of bots try to find vulnerabilities in php sites
    location ~ \.php {
        return 404;
    }

    location / {
        proxy_pass http://localhost:6903;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_cache_bypass $http_upgrade;

        #increase buffers
        proxy_buffer_size          128k;
        proxy_buffers              4 256k;
        proxy_busy_buffers_size    256k;
    }

    listen 443 ssl; # managed by Certbot
    #...
    #SSL stuff
}

Почему это происходит? Большие пробки?

Какое решение? Продолжаю ли я увеличиватьworker_connectionsи--max-connsпока ошибки не прекратятся?

Выходhtopкажется, что сервер может обрабатывать больше:

Любая информация/совет?

РЕДАКТИРОВАТЬ

Хотя я не вижу никаких ошибок в журнале Sinatra илиsystemctl statusВывод: я заметил, что служба никогда не работает очень долго, поэтому кажется, что тонкий сервер часто выходит из строя. Есть идеи, как я могу отладить это дальше?

1 ответ

Таким образом, проблема на самом деле была в Thin-сервере: по какой-то причине он продолжал падать каждые несколько минут с ошибкой C++, и поэтому Nginx выдавал эти ошибки при попытке подключения к Thin и терпел неудачу (потому что Thin давал сбой/перезагружался).

Решением было заменить Thin на Puma, после этого проблем больше не было.

Другие вопросы по тегам