Какво да правите, ако при работа с nginx възникне грешка при превишаване на 1024 връзки?
sobes.tech AI
Отговор от AI
Това показва ограничение на броя на отворените файлови дескриптори.
Решения:
-
Увеличете
worker_connectionsв конфигурацията на Nginx:// Увеличаване на максималния брой връзки на работен процес events { worker_connections 4096; // или повече, в зависимост от нуждите и ресурсите } -
Увеличете лимита на отворените файлове на ниво операционна система:
- За текущата сесия на потребителя:
# Временно увеличаване на лимита на отворените файлове ulimit -n 65536 - За цялата система (постоянно):
Редактирайте файла
/etc/security/limits.conf. Добавете редове:(Заменете# Специфични лимити за потребителя nginx soft nofile 65536 nginx hard nofile 65536 # Алтернативно, за всички потребители # * soft nofile 65536 # * hard nofile 65536nginxс името на потребителя, под който работи Nginx, ако е различно.) Необходимо е да рестартирате системата или да се логнете отново, за да се приложат промените, или да изпълнитеsysctl -p.
- За текущата сесия на потребителя:
-
Проверете глобалните настройки на ядрото: Уверете се, че
fs.file-maxе достатъчно високо.# Проверете текущата стойност cat /proc/sys/fs/file-max # Задайте нова стойност (временно) # sudo sysctl -w fs.file-max=100000 # Задайте нова стойност (постоянно) - редактирайте `/etc/sysctl.conf` # Добавете ред: fs.file-max = 100000 # Приложете промените # sudo sysctl -p -
Уверете се, че потребителят на Nginx има право да отваря толкова файлове: Проверете под кой потребител работи Nginx и какви лимити са зададени за него. Това е свързано с точка 2.
-
Рестартирайте Nginx: След направените промени в конфигурацията или системните лимити, трябва да го рестартирате.
# Презаредете Nginx sudo systemctl reload nginx # Или, ако не помогне # sudo systemctl restart nginx
Приоритет при решаването:
- Проверете и увеличете
worker_connections. - Проверете и увеличете лимитите за файлови дескриптори за потребителя на Nginx.
- Проверете и увеличете глобалния лимит
fs.file-max. - Рестартирайте Nginx.
Важно е да се помни, че увеличаването на лимитите трябва да е обосновано и да съответства на наличните ресурси на сървъра (памет, CPU). Прекалено високите стойности могат да доведат до нестабилност на системата.