Linux 에서 php-fpm 프로 세 스 가 너무 많아 서 메모리 소모 문 제 를 해결 합 니 다.

3551 단어 linuxphpfpm
최근 에 개인 블 로그 의 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속성 을 통 해 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값 의 60%-80%로 설정 합 니 다.
마지막 으로 php-fpm 재 부팅

systemctl restart php-fpm
메모리 사용 상황 을 다시 봅 니 다.메모리 사용 을 많이 줄 입 니 다.

이후 메모리 사용 상황 을 여러 차례 관찰 한 결과 이번 개선 으로 서버 메모리 자원 소모 가 크게 완화 되 었 다.
ps:php-fpm 가 열 린 프로 세 스 수 와 프로 세 스 마다 메모리 제한 보기
1.서버 에 php-cgi 프로 세 스 가 얼마나 열 렸 는 지 명령 으로 확인

 ps -fe |grep "php-fpm"|grep "pool"|wc -l
2.tcp 요청 을 처리 하기 위해 phop-cgi 프로 세 스 가 몇 개 있 는 지 확인 합 니 다.

 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]=128 M(내 서버 에 있 는 프로필 은/etc/phop 5/fpm/pool.d/www.conf 입 니 다.이 파일 은 php-fpm.conf 에 포 함 된)뒤에 있 는 숫자 를 마음대로 변경 할 수 있 습 니 다.32M,64M,128 M,256 M,512 M 입 니 다.이 설정 은 서버 메모리 크기 와 필요 에 따라 쓸 수 있 습 니 다.수정 후 pp-fpm 서 비 스 를 불 러 옵 니 다.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 Linux 에서 pp-fpm 프로 세 스 가 너무 많아 메모리 소모 문 제 를 해결 하 는 데 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기