Я пытаюсь заменить балансировщик нагрузки, предоставленный моим облачным провайдером, и пытаюсь настроить свой собственный с помощью NGINX в Linux (Ubuntu 24.04) с 16 виртуальными ядрами и 128 ГБ оперативной памяти, что, я надеюсь, достаточно для поддержки нагрузки . Моя настройка такая: у меня есть группа «клиентов» с iPhone, которые я запускаю через прокси (прокси-сервер Fiddler), так как у меня их много, у меня есть 4 внутренних сервера, которые я запускаю через балансировщик нагрузки TCP, все работает в основном это нормально при использовании балансировщика нагрузки облачного провайдера, но некоторые из моих клиентов достаточно сообразительны, чтобы запустить простой тест скорости, который дает результаты с очень низкой скоростью (загрузка 6-8 Мбит / с / загрузка 1-2 Мбит / с), что в дни 5G очень смехотворно, поэтому они требуют лучшего обслуживания. Если я подключаюсь напрямую к своим серверным серверам, я легко получаю 200+Up/100+Down даже при большой нагрузке, поэтому я почти уверен, что проблема в балансировщике нагрузки. Я попробовал NGINX и, пройдя все обучение и настройку с помощью ChatGPT, я запустил его, и все отлично, и скорость на должном уровне, но когда я нагружаю его ... около 80 запросов в секунду и выше. начинает выдавать ошибки и таймауты, отключать сеансы и т. д.. моя конфигурация проста, так как я использую только для распределения нагрузки TCP. Интересно, может ли кто-нибудь помочь здесь с оптимизацией, и даже я готов компенсировать личный опыт, если он предложит.
Вот мой базовый анонимный файл nginx.config, если это поможет:
Код: Выделить всё
user nginx;
worker_rlimit_nofile 65536;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 16384;
multi_accept on;
use epoll;
}
stream {
log_format main '$remote_addr [$time_local] "$protocol" $status $bytes_sent $bytes_received';
access_log /var/log/nginx/stream_access.log main;
upstream my_proxy {
server xxx.xxx.xxx.xxx:8080 max_fails=5 fail_timeout=30;
server yyy.yyy.yyyy.yyy8080 max_fails=5 fail_timeout=30;
server zzz.zzz.zzz.zzz:8080 max_fails=5 fail_timeout=30;
}
server {
listen 7777;
proxy_pass my_proxy;
proxy_timeout 60s;
proxy_connect_timeout 5s;
proxy_socket_keepalive on;
}
}
Я внес другие изменения в какой-то другой файл конфигурации в системе, предложенный ChatGPT для большого объема, в основном для того, чтобы разрешить большему количеству файлов и соединений оставаться открытыми и т. д., но не увидел никаких улучшений от этого .
возможно, стоит упомянуть, что я вообще не разбираюсь в Linux/nginx, я в основном занимаюсь Windows как разработчик, поэтому, пожалуйста, будьте со мной терпеливы, лол.>
Подробнее здесь:
https://stackoverflow.com/questions/788 ... timization