Есть такая проблема (
При кроссерверных запросах иногда выпадает следующая ошибка "Connection timed out after 15000 milliseconds" , на php установлен timeout 15 сек.
Каждую минуту на удаленные хосты в среднем отправляется 300 запросов и в таком режиме каждые 15 мин происходит от 1 - 10 таких ошибок. Если после такой ошибки снова отправить такой же запрос, на тот же хост - он мгновенно пройдет . Это может возникать при запросах на любые удаленные хосты.
Установлен входящий nginx proxy .
Архитектура сервера : host (nginx proxy, kvm host) -> virtual machine (nginx, php ...) везде ubuntu server 16.04
Как решить эту проблему?
нельзя выставлять столь длинные значения таймаута, смысл его тогда теряется.
Стольо длинные хиты это явно или выгрузки или работа по апи.
А следовательно наличие сервера с той стороны и доступности его не дело nginx
а легко решается в самом скрипте обмена.
Что же касается времяни то именно для этого скрипта можно сделать исключение позволяющее делать таймаут вплоть до -1
Но при этом общая система не пострадает.
Vlad Kravets, посмотрите количество открытых коннектов netstat -an
Ну и я бы не сбрасывал со счетов PHP, и базу данных, может быть коннекты закfнчиваются в базе данных? Так как похоже, что таймаут срабатывает как раз именно на PHP.
Также посоветую провести стрессовое тестирование например через ab/siege/jmeter
Если есть подозрения на связку host (nginx proxy, kvm host) -> virtual machine (nginx, php ...), то сделайте самый простой файл php и тестируйте. Посмотьрите что получится, замените php html-файлом с диска.
Запросы небольшие?
Что делает другой сервер при этом?
Проверьте использование памяти (свап), диска, нагрузку сети и процессора как на гипервизор так и на виртуалки.
Просмотрите логи виртуалки нет ли там ошибок от что виртуалка замирает.
Попробуйте отправлять ежесекундно мелкие udp/tcp запросы в обе стороны и пишите их в файл. Отправляемые данные пронумеруйте и затем посмотрите не выпадает ли что-то. Поснифьте tcpdump-ом трафик который отправляете/принимаете с обеих сторон.
Проверить драйвера сетевых карт.
Посмотреть настройки и статистику файрвола.