Linux_php 예제에서 너무 많은 php-fpm 프로세스로 인해 발생하는 메모리 고갈 문제 해결
이 글에서는 Linux에서 너무 많은 php-fpm 프로세스로 인해 발생하는 메모리 고갈 문제를 해결하는 방법을 주로 소개합니다. php-fpm에 대해 더 알고 싶다면 이 글을 참조하여 해결 방법을 알아보세요. php-fpm프로세스 오버플로 문제 메모리 소모에는 여러 가지 이유가 있습니다.
최근에 내 개인 블로그의 Linux 서버와 데이터베이스 서비스가 종종 중단되어 정상적으로 액세스하기 전에 다시 시작해야 하는 것을 발견했습니다. 매우 역겨워서 문제 해결을 시작하고 시간과 에너지를 확보하기로 결정했습니다. 문제가 자주 발생하고 수동으로 다시 시작하는 것은 힘들고 시간이 많이 소요되는 것을 원하지 않습니다.
문제 분석
문제 발견 후 먼저 free -m
명령을 사용하여 현재 서버 실행 상태를 확인하세요. 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
属性,控制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
值为 pm.max_children

계속해서 세부정보를 보려면 top
명령을 사용하세요.

CPU 사용량이 높지 않은 것으로 확인되어 CPU 문제는 배제됩니다. 또한 데이터베이스 서비스는 15.2%의 메모리를 차지하는 것으로 나타났는데, 메모리 사용량이 너무 높을 경우 데이터베이스 프로세스(가장 많은 메모리를 차지하는 프로세스)가 밀려 서비스가 중단될 수 있으므로 자세한 내용을 확인해야 합니다. 메모리 사용량 어떤 프로세스가 그렇게 많은 메모리를 소비합니까?
사용 명령:
systemctl restart php-fpm
가장 많은 메모리를 소비하는 상위 40개 프로세스 보기:
문제 해결
다양한 검색을 통해 찾아보실 수 있습니다 pm.max_children
속성을 구성하여 PHP를 제어할 수 있습니다. -fpm 하위 프로세스 수량, 먼저 php-fpm구성 파일을 열고 다음 명령을 실행합니다.
ps -fe |grep "php-fpm"|grep "pool"|wc -l
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
값은 pm.max_children
값의 60%-80%로 설정됩니다. 🎜🎜마지막으로 php-fpm을 다시 시작합니다🎜🎜🎜🎜netstat -anp|grep "php-fpm"|grep "tcp"|grep "pool"|wc -l
php_admin_value[memory_limit] = 128M (내 서버의 구성 파일은 /etc/php5/fpm/pool.d/www.conf에 있습니다. 이 파일은 php-fpm.conf에 포함되어 있습니다.) 다음 숫자는 마음대로 변경할 수 있습니다. : 32M, 64M, 128M, 256M, 512M, 이 설정은 서버 메모리 크기와 필요에 따라 작성할 수 있습니다. 수정 후 php-fpm 서비스를 로드해야 합니다.
요약
위 내용은 Linux에서 너무 많은 php-fpm 프로세스로 인해 발생하는 메모리 소모 문제를 해결하기 위해 편집자가 소개한 내용입니다. 모든 분들께 도움이 되기를 바랍니다.
관련 권장 사항:
위 내용은 Linux_php 예제에서 너무 많은 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)

뜨거운 주제











PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP는 웹 개발 및 컨텐츠 관리 시스템에 적합하며 Python은 데이터 과학, 기계 학습 및 자동화 스크립트에 적합합니다. 1.PHP는 빠르고 확장 가능한 웹 사이트 및 응용 프로그램을 구축하는 데 잘 작동하며 WordPress와 같은 CMS에서 일반적으로 사용됩니다. 2. Python은 Numpy 및 Tensorflow와 같은 풍부한 라이브러리를 통해 데이터 과학 및 기계 학습 분야에서 뛰어난 공연을했습니다.

PHP의 핵심 이점에는 학습 용이성, 강력한 웹 개발 지원, 풍부한 라이브러리 및 프레임 워크, 고성능 및 확장 성, 크로스 플랫폼 호환성 및 비용 효율성이 포함됩니다. 1) 배우고 사용하기 쉽고 초보자에게 적합합니다. 2) 웹 서버와 우수한 통합 및 여러 데이터베이스를 지원합니다. 3) Laravel과 같은 강력한 프레임 워크가 있습니다. 4) 최적화를 통해 고성능을 달성 할 수 있습니다. 5) 여러 운영 체제 지원; 6) 개발 비용을 줄이기위한 오픈 소스.

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP는 동적 웹 개발 및 서버 측 응용 프로그램에 사용되는 서버 측 스크립팅 언어입니다. 1.PHP는 편집이 필요하지 않으며 빠른 발전에 적합한 해석 된 언어입니다. 2. PHP 코드는 HTML에 포함되어 웹 페이지를 쉽게 개발할 수 있습니다. 3. PHP는 서버 측 로직을 처리하고 HTML 출력을 생성하며 사용자 상호 작용 및 데이터 처리를 지원합니다. 4. PHP는 데이터베이스와 상호 작용하고 프로세스 양식 제출 및 서버 측 작업을 실행할 수 있습니다.

PHP는 지난 수십 년 동안 네트워크를 형성했으며 웹 개발에서 계속 중요한 역할을 할 것입니다. 1) PHP는 1994 년에 시작되었으며 MySQL과의 원활한 통합으로 인해 개발자에게 최초의 선택이되었습니다. 2) 핵심 기능에는 동적 컨텐츠 생성 및 데이터베이스와의 통합이 포함되며 웹 사이트를 실시간으로 업데이트하고 맞춤형 방식으로 표시 할 수 있습니다. 3) PHP의 광범위한 응용 및 생태계는 장기적인 영향을 미쳤지 만 버전 업데이트 및 보안 문제에 직면 해 있습니다. 4) PHP7의 출시와 같은 최근 몇 년간의 성능 향상을 통해 현대 언어와 경쟁 할 수 있습니다. 5) 앞으로 PHP는 컨테이너화 및 마이크로 서비스와 같은 새로운 도전을 다루어야하지만 유연성과 활발한 커뮤니티로 인해 적응력이 있습니다.

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.
