Под нагрузкой ложится SSL

Discussion in 'Linux, Freebsd, *nix' started by LuzhkOFF, 17 Mar 2019.

  1. LuzhkOFF

    LuzhkOFF New Member

    Joined:
    22 Jul 2010
    Messages:
    25
    Likes Received:
    1
    Reputations:
    0
    Добрый вечер. Нужна помощь.

    Есть веб сервер Nginx, за ним на физически другой машине стоит Apache.
    У Nginx стоит настройка proxy_pass https://ip_address_of_apache:443;
    Сертификат настроен и там и там один, таким образом коммуникации от пользователя до первого сервера и между серверами зашифрованы. Все это находится под серьезной нагрузкой (десяток обращений в секунду к PHP, статика не считается).

    Иногда случается сбой при котором какое-то короткое время сайт недоступен, тогда скапливается двойной поток запросов (за счет F5) который постепенно рассасывается. Это было нормальным явлением и особо не мешало.

    Сейчас уже 3 раза за месяц происходила ситуация, которая снаружи выглядит как таймаут соединения к сайту по HTTPS. Внутри на первом сервере 2 потока nginx едят по 49% CPU, на втором сервере нагрузка 0%, в логе ошибок пусто. Между серверами связь нормальная, иначе была бы ошибка connect to upstream failed. При запросе к первому серверу по HTTP соединение успешно устанавливается и nginx отдает как статический так и динамический контент через локальный Apache (он там есть, панелька висит). Включая проблемный домен. Может быть чуть дольше обрабатывает запрос, но проблемы нет. Таким образом, ошибка таймаута связана именно с установкой большого числа сквозных SSL соединений через nginx.

    ВОЗМОЖНО это как-то связано с тем что раньше стоял покупной сертификат на 2 года, сейчас стоит свежий Lets Encrypt на 3 месяца. Может быть связано с тем что раньше соединение между фронтендом (nginx) и бекендом (apache2) осуществлялось поверх VPN туннеля без SSL, а сейчас без VPN туннеля но по SSL.
     
  2. altblitz

    altblitz Elder - Старейшина

    Joined:
    5 Jun 2009
    Messages:
    3,694
    Likes Received:
    3,149
    Reputations:
    236
    Бгг, опять поднял магазинчик хлама перепродаж кетайского барахла?
    Скоко деньжат пустил на рекламу, SEO-раб?

    Замечает Блиц - все вы, снежные ниггеры, так и носятись, тут и щас, со своими дрянными купюрами - никому не нужными ))

     
  3. LuzhkOFF

    LuzhkOFF New Member

    Joined:
    22 Jul 2010
    Messages:
    25
    Likes Received:
    1
    Reputations:
    0
    Вы меня ни с кем не путаете? Я китайским барахлом никогда не занимался :)
     
  4. BillyBons

    BillyBons Active Member

    Joined:
    1 Dec 2016
    Messages:
    221
    Likes Received:
    119
    Reputations:
    13
    По HTTPS ?

    Для начала, кмк, имеет смысл включить (хотя бы на короткое время) отладочные журналы в nginx (из Вашего описания следует, что проблема, вероятнее всего, где-то вокруг nginx), или даже периодически снимать статистику через REST API.

    Никогда не сталкивался с зависимостью скорости работы сервера от вида организации, выдавшей сертификат.

    Количество worker_process в nginx.conf какое ?

    P.S.:
    Так или иначе Вам точно необходимо настраивать мониторинг ключевых показателей серверов и канала между ними - по крайней мере,

    а)
    независимый от связки "NGINX - APACHE" мониторинг сетевой доступности узлов и портов (443/tcp как минимум)

    б)
    размер очереди запросов в NGINX

    в)
    основные технические параметры сервера NGINX - загрузка процессора, памяти, locks
     
    altblitz likes this.
  5. LuzhkOFF

    LuzhkOFF New Member

    Joined:
    22 Jul 2010
    Messages:
    25
    Likes Received:
    1
    Reputations:
    0
    Опечатки нет. Клиент - домен (nginx тут - apache там).
    Одновременно если обращаться по http соединение устанавливается и файл отдается нормально, если по https то connection timeout. Рестарт процессов nginx / apache приводит к тому что первый запрос может и отработает, но потом опять накапливается лавина запросов от клиентов и происходит ошибка соединения.

    worker_process = 2, больше нет смысла. Ядро одно, потому при загрузке каждый процесс набирает по 49%. Ставил 4 штуки - было по 25%, пробовал один - 99%. На глаз показалось что при двух после перезагрузки некоторое время живет, если любое другое число - после перезагрузки мой запрос не срабатывает, но это не точно, может просто не успел до завала.

    CRON задачу которая будет раз в минуту с машины 1 запрашивать машину 2 по HTTP и HTTPS и писать заголовок в файл лога сейчас напишу, но думаю что проблема не в соединении между серверами, а именно в обработке большого числа одновременных SSL соединений (которое каким-то образом не влияет на сколь угодно большое число не зашифрованных подключений все к тому же nginx) так как это wget'ом проверял.

    А вот про мониторинг показателей совсем ничего не понял, это как делать? Знаю только как получить количество файлов, открытых nginx'ом.
     
  6. Spinus

    Spinus Level 8

    Joined:
    23 Sep 2018
    Messages:
    489
    Likes Received:
    2,885
    Reputations:
    12
    Это местный , форумный дурачок Блиц, не обращай на него внимание.
     
    user100 likes this.
  7. BillyBons

    BillyBons Active Member

    Joined:
    1 Dec 2016
    Messages:
    221
    Likes Received:
    119
    Reputations:
    13
    Таки попробуйте debug в nginx - до понимания того, на каком моменте (после каких запросов) происходит "зависание"), сложно дать какие-либо дальнейшие рекомендации.

    Про мониторинг nginx есть хорошая статья прямо в документации.
     
    LuzhkOFF likes this.