Linux

[nginx]php-fpm 메모리 관리

먹세 2019. 2. 7. 11:10

사이트가 다운되거나 접속지연 현상이 발생되고, 메모리 문제일때.


php-fpm error 로그를 살펴본다.

에러로그 위치는 vi /etc/php-fpm.d/www.conf 에 세팅되어 있고,


보통 기본 세팅이 아래 경로일 것이다.

/var/log/php-fpm/error.log


WARNING: [pool www] server reached pm.max_children setting (50), consider raising it


위 메시지가 로그에 찍혔을때, 동시 프로세스 사용으로 인한 메모리 부족 현상.

pm.max_children 과 여러 세팅들을 살펴봐야 한다.



메모리 사용량 (프로세스별)

ps -ef --sort -rss


상위 20개

ps -ef --sort -rss | head -n 21


메모리 사용량 표시 종류 지정

ps -eo user,pid,ppid,rss,size,vsize,pmem,pcpu,time,cmd --sort -rss | head -n 21


참고URL : https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EB%A9%94%EB%AA%A8%EB%A6%AC_%EC%82%AC%EC%9A%A9%EB%9F%89%EC%88%9C_%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4_%EB%B3%B4%EA%B8%B0



* php-fpm 환경 설정


각각 메모리 환경에 맞게 설정 변경해서 사용.

// php-fpm 기본으로 설치하면 www.conf가 자동으로 생성됨.

vi /etc/php-fpm.d/www.conf


//현재 운용중인 서버 세팅

//동접 약 2,000명 정도 수용 가능할듯 (아래 세팅은 순수 동접자 수가 아니라, 사이트에서 request를 발생시켜서 php를 동시에 실행시킬수 있는 세팅임.


pm.max_children = 20 //동시 사용할수 있는 최대 프로세스 수

pm.start.server = 5 // 시작할때 5개로 시작함

pm.min.spare_server = 5 //최소 5개로 사용

pm.max_spare.server = 15 //최대 15개까지 사용 (이 수가 넘어가면 프로세스 삭제)


systemctl restart php-fpm


위 명령어는 관리자권한으로 실행해야함.



*프로세스당 평균 메모리 사용량

ps -ylC php-fpm --sort:rss

아래는 결과



위 결과에서 RSS 값을 보면,

각 프로세서 당 약 50,000KB (50MB)를 쓴다. 


*php-fpm 의 평균 메모리 사용량을 한번에 보려면 아래 명령어.


ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"Mb") }'


내 경우는 평균 40MB가 나온다.




반응형

'Linux' 카테고리의 다른 글

centos7에서 composer 설치  (0) 2019.04.30
centos7 sendmail 설치 및 세팅  (0) 2019.02.18
서버에서 파일별 권한 확인방법  (0) 2018.10.02
crontab 사용법  (0) 2017.06.27
리눅스 서버 점검시 유용한 명령들  (0) 2017.06.22