사이트가 다운되거나 접속지연 현상이 발생되고, 메모리 문제일때.
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 |