Что делать, если сервер Nginx имеет высокую загрузку процессора и использование памяти процесса?

Вы внезапно обнаружили на работе, что загрузка ЦП Nginx резко возросла? Что еще хуже, многочисленные рабочие процессы Nginx потребляют ресурсы как сумасшедшие каждый раз, когда я смотрю на эти процессы.

Увидев эту сцену, у вас становится жарко, и вы не можете сдержать крика: «О боже, сервер взорвется?» Не волнуйтесь, это не значит, что ваш сервер будет «закончен», но Nginx Нам нужно, чтобы вы провели комплексную оптимизацию!

Анализ причин чрезмерной нагрузки Nginx

Что делать, если сервер Nginx имеет высокую загрузку процессора и использование памяти процесса?

Для начала нам нужно выяснить, почему Nginx внезапно «теряет мощность». Причин этой проблемы много, так что не волнуйтесь, давайте разберемся в них вместе.

1. Необоснованная конфигурация

В файле конфигурации Nginx самым важным моментом является worker_processes. Этот параметр определяет количество процессов, запускаемых Nginx.

  • Если вы настроите слишком мало рабочих процессов, нагрузка на процессор резко возрастет, если настроите слишком много, памяти будет недостаточно;
  • Вам необходимо найти точку баланса, например,Установите для worker_processes значение, в 1–2 раза превышающее количество ядер ЦП..
  • Если у вас 4 ядра, попробуйте worker_processes 4 Или установите его непосредственно в auto.

2. Рост посещений

Иногда внезапный скачок нагрузки на Nginx происходит не из-за операционных ошибок, а из-за чрезмерного объема запросов. Высокая параллельность может перегрузить рабочие процессы Nginx , заставляя каждый процесс работать сверх своих возможностей, потребляя ресурсы ЦП и памяти. В этом случае может потребоваться модернизация серверных ресурсов, например, увеличение количества ядер ЦП или добавление памяти. Конечно, это также служит напоминанием: не забудьте учесть распределение трафика через CDN или балансировку нагрузки.

3. Обнаружены вредоносные атаки

Невероятная популярность в интернете — это не всегда хорошо; вредоносные атаки могут начаться в любой момент. Если вы заметили аномально высокую загрузку ЦП и подозрительные IP-адреса, ваш веб-сайт, скорее всего, подвергается DDoS-атаке. В этом случае вам необходимо немедленно развернуть брандмауэр или ограничить частоту доступа , например, используя встроенный модуль ограничения скорости Nginx или настроив черный список IP-адресов.

Как решить проблему высокого использования памяти процессом Nginx?

Итак, вопрос в том, почему рабочий процесс Nginx занимает так много ресурсов? Приходится начинать с настройки и шаг за шагом оптимизировать ее.

Метод настройки

  1. Открыть файл конфигурации Nginx: Обычно основной файл конфигурации Nginx находится по адресу /etc/nginx/nginx.conf.

  2. 设置 worker_processes: Найдено в файле конфигурации. events блоки, настройки worker_processes ценить. если не events блок, вам нужно его создать.

    nginx
    events {
    worker_connections 1024;
    use epoll;  # 或者适用于操作系统的其他事件模型
    }

1. Правильно установите worker_connections

nginx worker_connections Параметр определяет максимальное количество соединений, которые может обработать каждый рабочий процесс. Если он слишком мал, это повлияет на производительность параллелизма; если он слишком велик, это может потребовать слишком много ресурсов.

Как рассчитать подходящую стоимость?

Предполагая, что у вас 4-ядерный процессор и 16 ГБ оперативной памяти, безопасной отправной точкой будет worker_connections 4096.

Но если на вашем веб-сайте много трафика, рассмотрите возможность увеличения этого значения до 8192, чтобы каждый процесс мог обрабатывать достаточное количество запросов.

events {
    worker_connections 8192;
}

Таким образом, вычислительная мощность Nginx будет значительно улучшена.

2. Настройте keepalive_timeout

Еще одним ключевым параметром Nginx для обработки запросов является keepalive_timeout.

Этот параметр определяет, как долго может поддерживаться соединение клиента с сервером.

Слишком большое значение длины может привести к чрезмерному потреблению ресурсов соединения.

Вы можете попробовать keepalive_timeout Установите значение 15 секунд для поддержания соединения и освобождения ресурсов.

keepalive_timeout 15;

3. Оптимизировать ограничения файловых дескрипторов

По умолчанию в системах Linux ограничивается количество файловых дескрипторов, которые может открыть каждый процесс.

Если Nginx необходимо обработать большое количество файлов (например, статических ресурсов), вы можете увидеть ошибку Nginx с запросом «too many open files».

Вы можете пройти worker_rlimit_nofile Увеличьте лимит файлового дескриптора, например, установлено на 65535.

worker_rlimit_nofile 65535;

4. Включить кеширование и gzip

Кэширование и сжатие — два ключа к оптимизации производительности веб-сайта.

Включение функции кэширования в Nginx позволяет кэшировать статические ресурсы (такие как изображения и файлы JavaScript) в памяти , что значительно снижает нагрузку на сервер.

Кроме того, включение функции сжатия gzip позволяет уменьшить объем передаваемых данных и повысить скорость работы сайта.

gzip on;
gzip_types text/plain application/javascript;

5. Анализ использования ресурсов Nginx

Наконец, если вы выполнили все вышеперечисленные оптимизации, но Nginx по-прежнему потребляет много ресурсов ЦП, возможно, вам придется использовать некоторые инструменты для углубленного анализа.

使用 top 或 htop Просмотр потребления ресурсов процесса в реальном времени, 通过 strace Отслеживайте системные вызовы или используйте nmon Создание отчетов о производительности. Только всесторонне проанализировав реальную работу Nginx, мы сможем выполнить более точную настройку.

резюме

Не паникуйте, когда загрузка процессора Nginx резко возрастает. Это может быть вызвано неправильной настройкой или чрезмерным трафиком.

посредством разумных корректировок worker_processes И worker_connectionsВключив кэширование, оптимизировав таймауты и файловые дескрипторы, вы можете значительно снизить нагрузку на Nginx.

Nginx — это мощный веб-сервер, который при правильной оптимизации может обеспечить отличную производительность вашего сайта.

Помните, любую проблему можно решить научным методом, и оптимизация производительности сервера не является исключением.

Своевременный мониторинг и корректировка параметров являются ключом к поддержанию высокой эффективности Nginx. Освоив эти методы, вы обеспечите безопасность своего веб-сайта даже при высокой нагрузке или вредоносных атаках.

Надеюсь, эта статья вдохновила вас, поспешите оптимизировать свой Nginx!

Надеюсь, статья «Как справиться с высокой загрузкой ЦП и высоким использованием памяти процессами на сервере Nginx?», опубликованная в блоге Чен Вэйляна ( https://www.chenweiliang.com/ ), окажется для вас полезной.

Не стесняйтесь делиться ссылкой на эту статью: https://www.chenweiliang.com/cwl-32093.html

Чтобы раскрыть еще больше скрытых трюков🔑, присоединяйтесь к нашему каналу в Telegram!

Поделитесь и поставьте лайк, если вам понравилось! Ваши репосты и лайки — наша постоянная мотивация!

 

发表 评论

您的邮箱地址不会被公开。必填项已用*标注

Наверх