Linux에서 너무 많은 프로세스로 인해 php-fpm의 메모리가 부족해지는 문제를 해결하는 방법
제 개인 블로그의 Linux 서비스에서 데이터베이스 서비스가 안되는 경우가 많고, 재시작을 해야 정상적으로 접속이 가능한 것을 발견하여, 이 문제에 대한 해결 방법을 알려드리겠습니다.
문제 분석
문제를 발견한 후 먼저 free -m 명령을 사용하여 현재 서버 실행 상태를 확인합니다.
내 서버 메모리가 2G인 것을 볼 수 있지만 현재 사용 가능한 메모리는 70M밖에 없습니다. 메모리가 남아있고 메모리 사용률이 92%에 달하면 메모리 사용량이 너무 많아 데이터베이스 서비스가 중단될 가능성이 매우 높습니다.
계속해서 세부 정보를 살펴보고 top 명령을 사용하세요:
그런 다음 명령 출력 결과에 나열된 프로세스 세부 정보를 살펴보고 열 10의 메모리 사용량 비율에 초점을 맞추세요.
찾습니다. CPU 사용량이 높지 않은 것으로 간주되어 CPU 문제도 해결됩니다. 또한, 데이터베이스 서비스가 메모리의 15.2%를 차지하는 것을 볼 수 있습니다. 메모리 사용량이 너무 높으면 데이터베이스가 혼잡해집니다. 프로세스(가장 많은 메모리를 차지하는 프로세스)로 인해 서비스가 중단되므로 자세한 메모리 사용량을 확인해야 합니다. 어떤 프로세스가 그렇게 많은 메모리를 소비합니까?
명령 사용:
ps auxw|head -1;ps auxw|sort -rn -k4|head -40
가장 많은 메모리를 소비하는 상위 40개 프로세스 보기:
네 번째 열의 메모리 사용량 비율을 보고 mysql 데이터베이스 서비스 외에 해당 항목이 있는지 확인하세요. , php-fpm 서비스 풀 너무 많은 하위 프로세스가 열려 메모리의 절반 이상을 차지했습니다. 문제가 발견되었고 우리는 문제를 해결하기 시작했습니다: php-fpm 프로세스 풀 프로세스 수를 설정하고 제어하는 것입니다.
문제 해결
다양한 검색수단을 통해 pm.max_children property을 구성하여 php-fpm 하위 프로세스 수를 제어할 수 있음을 발견했습니다. 먼저 php-fpm구성 파일을 엽니다. 다음 명령을 실행하십시오:
vi /etc/php-fpm.d/www.conf
pm.max_children 필드를 찾아 해당 값이 너무 큰 것을 발견했습니다.
그림에 표시된 것처럼 pm.max_children 값은 50입니다. 각 프로세스는 1%를 차지합니다. 메모리의 절반 이상을 추가하는 2.5%입니다. 따라서 여기의 블로거는 이 값을 25로 설정해야 합니다. 동시에 다음 두 가지 속성을 확인하세요.
pm.max_spare_servers: 이 값은 보장된 유휴 프로세스의 최대 수를 나타냅니다. 유휴 프로세스가 이 값보다 크면 pm.min_spare_servers 정리: 유휴 프로세스의 최소 수가 이 값보다 작은지 확인합니다.
이 두 값 중 어느 것도 pm.max_children 값보다 클 수 없습니다. 일반적으로 pm.max_spare_servers 값을 .max_children 값의 pm 60%-80%로 설정합니다.
마지막으로 php-fpm을 다시 시작합니다
systemctl restart php-fpm
메모리 사용량을 다시 확인하면 메모리 사용량이 많이 줄어듭니다.
메모리 사용량을 여러 번 관찰한 결과, 이번 개선 이후 서버가 메모리 리소스 소비가 크게 감소되었습니다.
ps: php-fpm에 의해 시작된 프로세스 수와 각 프로세스의 메모리 제한을 확인하세요
1. 이 명령을 사용하여 서버에 열려 있는 php-cgi 프로세스 수를 확인하세요
ps -fe |grep "php-fpm"|grep "pool"|wc -l
2. 이미 몇 개가 있습니까? php-cgi 프로세스는 tcp 요청을 처리하는 데 사용됩니다
netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l
3. Linux+nginx+php 환경에서 각 php-fpm 프로세스의 메모리 제한은
설정 방법:
편집 php-fpm.conf 구성 파일
php_admin_value[memory_limit] = 128M (내 서버의 구성 파일은 /etc/php5/fpm/pool.d/www.conf에 있습니다. 이 파일은 php-fpm.conf에 포함되어 있습니다. ) 다음 숫자는 마음대로 변경할 수 있습니다: 32M, 64M, 128M, 256M, 512M. 이 설정은 서버 메모리 크기와 필요에 따라 작성할 수 있습니다. 수정 후 php-fpm 서비스를 로드해야 합니다.
이 사례를 읽으신 후 방법을 마스터하셨다고 생각합니다. 더 흥미로운 정보를 보려면 PHP 중국어 웹사이트의 다른 관련 기사를 주목하세요!
관련 읽기:
javascript 이진 검색 자세한 설명_javascript 기술
javascript 이진 검색 배열 내 문자 위치(순서) 목록)_javascript 팁
위 내용은 Linux에서 너무 많은 프로세스로 인해 php-fpm의 메모리가 부족해지는 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

session_start () iscrucialinphpformanagingUsersessions.1) itiniteSanewsessionifnoneexists, 2) ResumesAnxistessions, and3) setSasessionCookieForContInuityAcrosrequests, enablingplicationsirecationSerauthenticationAndpersonalizestContent.

AI는 작곡가 사용을 최적화하는 데 도움이 될 수 있습니다. 특정 방법에는 다음이 포함됩니다. 1. 종속성 관리 최적화 : AI는 종속성을 분석하고 최상의 버전 조합을 권장하며 충돌을 줄입니다. 2. 자동화 된 코드 생성 : AI는 모범 사례를 준수하는 composer.json 파일을 생성합니다. 3. 코드 품질 향상 : AI는 잠재적 인 문제를 감지하고 최적화 제안을 제공하며 코드 품질을 향상시킵니다. 이러한 방법은 기계 학습 및 자연어 처리 기술을 통해 구현되어 개발자가 효율성과 코드 품질을 향상시킬 수 있도록 도와줍니다.

C의 DMA는 직접 메모리 액세스 기술인 DirectMemoryAccess를 말하며 하드웨어 장치는 CPU 개입없이 데이터를 메모리로 직접 전송할 수 있습니다. 1) DMA 운영은 하드웨어 장치 및 드라이버에 크게 의존하며 구현 방법은 시스템마다 다릅니다. 2) 메모리에 직접 액세스하면 보안 위험이 발생할 수 있으며 코드의 정확성과 보안이 보장되어야합니다. 3) DMA는 성능을 향상시킬 수 있지만 부적절하게 사용하면 시스템 성능이 저하 될 수 있습니다. 실습과 학습을 통해 우리는 DMA 사용 기술을 습득하고 고속 데이터 전송 및 실시간 신호 처리와 같은 시나리오에서 효과를 극대화 할 수 있습니다.

C에서 높은 DPI 디스플레이를 처리 할 수 있습니다. 1) DPI 및 스케일링을 이해하고 운영 체제 API를 사용하여 DPI 정보를 얻고 그래픽 출력을 조정하십시오. 2) 크로스 플랫폼 호환성을 처리하고 SDL 또는 QT와 같은 크로스 플랫폼 그래픽 라이브러리를 사용하십시오. 3) 성능 최적화를 수행하고 캐시, 하드웨어 가속 및 세부 사항 수준의 동적 조정을 통해 성능 향상; 4) 흐릿한 텍스트 및 인터페이스 요소와 같은 일반적인 문제를 해결하고 DPI 스케일링을 올바르게 적용하여 해결합니다.

MacOS와 Linux는 호환성 및 사용자 경험에서 고유 한 장점을 가지고 있습니다. MACOS는 Apple 생태계 내에서 우수한 호환성을 가지고 있으며 사용자 경험은 간단하고 직관적입니다. Linux는 뛰어난 하드웨어 호환성과 소프트웨어 유연성을 가지고 있습니다. 사용자 경험은 분포에서 배포에 이르기까지 개인화 및 제어를 강조합니다.

MySQL 기능은 데이터 처리 및 계산에 사용될 수 있습니다. 1. 기본 사용에는 문자열 처리, 날짜 계산 및 수학 연산이 포함됩니다. 2. 고급 사용에는 복잡한 작업을 구현하기 위해 여러 기능을 결합하는 것이 포함됩니다. 3. 성능 최적화를 위해서는 WHERE 절에서 기능 사용 및 GroupBy 및 임시 테이블 사용을 피해야합니다.

MySQL을 안전하고 철저하게 제거하고 모든 잔차 파일을 정리하려면 다음 단계를 따르십시오. 1. MySQL 서비스 중지; 2. MySQL 패키지 제거; 3. 구성 파일 및 데이터 디렉토리를 정리하십시오. 4. 제거가 철저한 지 확인하십시오.

Composer는 PHP의 종속성 관리 도구이며 Composer.json 파일을 통해 프로젝트 종속성을 관리합니다. 1) 종속성 정보를 얻기 위해 Composer.json을 구문 분석합니다. 2) 종속성 트리를 형성하기위한 종속성; 3) Packagist에서 공급 업체 디렉토리로 종속성을 다운로드하여 설치합니다. 4) Composer.Lock 파일을 생성하여 팀 일관성 및 프로젝트 유지 관리 가능성을 보장하기 위해 종속성 버전을 잠그십시오.
