Агар Nginx бо шумораи зиёди пайвастшавиҳо (беш аз 1024) наметавонад кор кунад, шумо чӣ мекунед?
sobes.tech AI
Ҷавоб аз AI
Nginx конфигурациясын текшерем: worker_processes, worker_connections, multi_accept, use (epoll/kqueue) жана keepalive_requests, keepalive_timeout параметрлерин. Керек болсо көбөйтөм.
Жүйө лимиттерин көзөмөл кылам: ulimit -n Nginx процесси үчүн. Аларды ылайыктуу мааниге көтөрөм.
Linux ядросунун тармак менен байланышкан конфигурацияларын оптималдаштырам: net.core.somaxconn, net.ipv4.tcp_tw_reuse, net.ipv4.tcp_fin_timeout.
Nginx логдорун (error_log, access_log) ката же норма бузуу үчүн анализ кылам.
Мониторинг куралдарын (nginx-status, top, vmstat, iostat, netdata, Prometheus/Grafana) колдонуп, тыгыны бар жерлерди аныктайм (CPU, эс, диск, тармак).
Күчтүү жабдууларды колдонуу же масштабдоо мүмкүнчүлүгүн карайм (кошумча Nginx инстанцияларын жүктү теңдештирүүчү артында кошуу).
Арткы серверлерди текшерем: маселе Nginxте эмес, өтүнүчтөрдү иштеткен тиркемелерде болушу мүмкүн.
# Worker процесстердин санын көбөйтүү
worker_processes auto;
# Бир worker үчүн байланыштар санын көбөйтүү
events {
worker_connections 65536;
multi_accept on;
use epoll; # Linux үчүн
}
http {
# Keep-alive жөндөөлөрү
keepalive_requests 10000;
keepalive_timeout 65;
# ... башка жөндөөлөр
}
# Nginx колдонуучусунун учурдагы чектөөсүн текшерүү
su - nginx -c 'ulimit -n'
# limits.conf файлына чектөө коюу
# nginx - nofile 65536
# nginx - nproc 65536
# SSH сессиясын же серверди кайра жүктөө limits.conf колдонуу үчүн
# Ядро параметрлерин текшерүү жана өзгөртүү
# Ар бир өзгөртүү sysctl -p иштетүүнү талап кылат
# sysctl net.core.somaxconn
# sysctl -w net.core.somaxconn=65536
# sysctl net.ipv4.tcp_tw_reuse
# sysctl -w net.ipv4.tcp_tw_reuse=1
# sysctl net.ipv4.tcp_fin_timeout
# sysctl -w net.ipv4.tcp_fin_timeout=30