Nginx 서버의 CPU 로드와 프로세스 메모리 사용량이 높은 경우 어떻게 해야 합니까?

직장에서 Nginx의 CPU 사용량이 급증했다는 사실을 갑자기 발견하셨나요? 설상가상으로 Nginx의 다중 작업자 프로세스는 프로세스를 볼 때마다 미친 듯이 리소스를 소비하고 있습니다.

이 장면을 보면 머리가 뜨거워지고 "맙소사, 서버가 폭발하는 건가요?"라고 외칠 수밖에 없습니다. 그렇다고 서버가 "완료"된다는 의미는 아닙니다. 하지만 Nginx에서는 포괄적인 최적화가 필요합니다!

Nginx 부하 과다 원인 분석

Nginx 서버의 CPU 로드와 프로세스 메모리 사용량이 높은 경우 어떻게 해야 합니까?

먼저, 우리는 알아내야 합니다.Nginx가 갑자기 "소진"되는 이유는 무엇입니까?문제가 발생하는 이유는 다양합니다. 두려워하지 마세요. 아래에서 함께 알아보세요.

1. 무리한 구성

Nginx 구성 파일에서 가장 중요한 점은 worker_processes. 이 매개변수는 Nginx가 시작하는 프로세스 수를 결정합니다.

  • 작업자 프로세스를 너무 적게 구성하면 CPU 로드가 급증하고, 너무 많이 구성하면 메모리가 부족해집니다.
  • 예를 들어, 균형점을 찾아야 합니다.작업자_프로세스를 CPU 코어 수의 1~2배로 설정합니다..
  • 코어가 4개라면 시도해 보세요. worker_processes 4 아니면 직접 설정해 보세요. auto.

2. 방문수 급증

때로는 실수를 해서가 아니라 방문 횟수가 너무 많아서 Nginx의 부하가 갑자기 급증하는 경우가 있습니다.높은 동시 액세스 요청으로 인해 Nginx 작업자 프로세스가 과부하됩니다., 모든 프로세스가 과부하되고 CPU와 메모리도 가득 찼습니다. 이때 CPU 코어 수를 늘리거나 메모리를 늘리는 등 서버 리소스를 개선해야 할 수도 있습니다. 물론 이것은 또한 상기시켜주는 것이기도 합니다. CDN 오프로드 또는 로드 밸런싱을 고려하는 것을 잊지 마십시오.

3. 악의적인 공격을 받았습니다.

인터넷에서 "매우 인기가 있다"는 것이 항상 좋은 것은 아닙니다. 악의적인 공격이 언제든지 귀하를 표적으로 삼을 수 있습니다. CPU 사용량이 비정상적으로 높고 요청 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코어 CPU와 16GB RAM이 있다고 가정하면 안전한 시작점은 다음과 같습니다. 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의 캐싱 기능을 활성화하면 정적 리소스(예: 이미지 및 JS 파일)를 메모리에 캐시할 수 있습니다., 이를 통해 서버의 부하를 크게 줄일 수 있습니다.

또한, gzip 압축 기능을 켜면 전송되는 데이터의 양을 줄이고 웹 사이트 속도를 향상시킬 수 있습니다.

gzip on;
gzip_types text/plain application/javascript;

5. Nginx 리소스 사용량 분석

마지막으로, 위의 모든 최적화를 완료했지만 Nginx가 여전히 많은 CPU를 차지한다면 심층 분석을 위해 몇 가지 도구를 사용해야 할 수도 있습니다.

使用 tophtop 프로세스의 실시간 리소스 소비 보기,으로 strace 시스템 호출을 추적하거나 사용 nmon 성과 보고서를 생성합니다. Nginx의 실제 동작을 종합적으로 분석해야만 보다 정밀한 튜닝이 가능합니다.

요약

Nginx의 CPU 사용량이 급증하더라도 당황하지 마세요. 부적절한 구성이나 과도한 트래픽으로 인해 발생할 수 있습니다.

합리적인 조정을 통해 worker_processesworker_connections캐싱을 활성화하고 시간 초과 및 파일 설명자를 최적화하면 Nginx의 로드 압력을 크게 줄일 수 있습니다.

Nginx는 적절하게 최적화되면 웹 사이트에 탁월한 성능을 제공할 수 있는 강력한 웹 서버입니다.

기억하세요. 어떤 질문이라도 대답할 수 있습니다.科学이를 해결하는 방법, 서버 성능 최적화도 예외는 아닙니다.

시기적절하게 모니터링하고 조정하세요., Nginx를 효율적으로 실행하는 데 핵심입니다. 이러한 기술을 익힐 수 있다면 트래픽이 많거나 악의적인 공격이 발생하는 경우에도 웹사이트가 안전할 것입니다.

이 기사가 여러분에게 영감을 주었기를 바랍니다. 서둘러서 Nginx를 최적화하세요!

发表 评论

귀하의 이메일 주소는 공개되지 않습니다. 必填 项 已 用 * 标注

위쪽으로 스크롤