; Zend Opacache 활성화 여부 결정 opcache.enable=1 ; PHP CLI 버전에서 Zend Opcache 활성화 여부 결정 opcache.enable_cli=1 ; Opcache 공유 메모리 저장소 사이즈 opcache.memory_consumption=128 ; 메모리에서 interned 문자열을 위해 사용할 메모리량 opcache.interned_strings_buffer=8 ; Opcache 해쉬 테이블에서 가질수 있는 키값의 최대값(200~100000 사이에 값만 가질 수 있음) opcache.max_accelerated_files=4000 ; 공유 메모리 저장소 할당을 위해서 변화된 것들에 대해 얼마나 자주 파일 타임 스탬프를 체크(초단위)할지 ( 0은 늘 검사) opcache.revalidate_freq=60 ; 활성화 시 accelerated code 에 대해서 사용되어짐 opcache.fast_shutdown=1 ; 활성화 시 Opcache는 현재 작업디렉토리를 스크립트 키에 추가하고, 같은 이름을 가진 파일들 사이에 가능한 충돌을 제거한다. ; 비활성화 시 성능이 향상되지만, 존재하는 애플리케이션이 깨질 수 있음. opcache.use_cwd=1 ; 비활성화 시, Opcache 를 수동으로 리셋해주거나, 파일시스템이 변한것에 대해 효과를 얻기위해서는 웹서버를 재시작 해야함. opcache.validate_timestamps=1 ; 재시작이 스케줄 될때까지 "wasted" 최대 메모리 비율 opcache.max_wasted_percentage=5 |
출처: https://jlblog.me/100 [JLBlog]
==========================================
4.2. php.ini에서 OPcache 설정
php.ini 파일을 열어보면 OPcache 관련해 앞에 주석 처리된 명령문들이 많이 있습니다.
이 명령문 중에서 상호 관련이 있는 변수는 opcache.memory_consumption, pcache.max_accelerated_files, opcache.max_wasted_percentage의 3가지로 서로 충돌이 나지 않토록 설정하는 게 관건으로 보입니다.
opcache.memory_consumption은 기본값이 64MB로 되어 있는데요.
메모리의 여유가 있다면 늘려주는 게 좋을 것 같습니다. 원래 256MB를 설정했는데,
OPcache 모니터링 프로그램으로 며칠 살펴보니 70MB이하로 사용되고 있어서 96MB로 최종 설정했습니다.
opcache.max_accelerated_files은 한번에 처리하는 캐시 파일 수 인데요.
이는 200에서 1,000,000사이의 값을 넣게 되어 있고 기본값은 2000입니다.
램에 여우가 있다면 기본보다 높이는게 좋겠죠. 저는 100,000으로 설정했습니다만
실제로 1,300개 정도 사용되고 있는 것으로 보아 개인 사이트라면 10,000정도면 충분할 것 같습니다.
opcache.max_wasted_percentage는 Opcache가 재시작을 해야할 시 버려야하는 비율을 정하는 것입니다.
기본값은 5%로 되어 있습니다. 일반적으로 기본보다 더 높여주는 것 같습니다.
opcache.revalidate_freq는 php소스 변경 확인 간격을 말하는데요.
개발자라면 이를 0으로 놓아 바로 바로 확인토록 하고, 일반인이라면 60 또는 180으로 설정합니다.
그외 일반적으로 꼭 하는 설정들은 아래에 적어 보았습니다.
opcache.enable=1 ; Opcache 사용여부 설정, 1일때 활성화 됨
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=100,000 ; 최대 파일갯수 설정
opcache.revalidate_freq=180 ; php 소스 변경확인시간 60sec
opcache.validate_timestamps=2 ; php 소스 수정 확인
opcache.fast_shutdown=1
opcache.enable_cli=0 ; 명령행 버전의 PHP에서도 opcache 적용할지 여부
opcache.use_cwd=1 ;같은 이름을 가진 파일들사이에서 가능한 충돌 제거
4.3. OPcache 모니터링
이렇게 OPcache를 설정했으면 이 OPcache가 어떻게 작동하고 있는지 모니터링하고 혹시 수정할게 있는지 확인하는 게 좋을 것 같습니다.
이 모니터링 프로그램은 PHP’s Zend Opcache Config & Web Viewer 에서
세가지 프로그램을 소개하고 있는데요.
저는 이중에서 Opcache-Status by Rasmus Lerdorf를 설치해 사용하고 있습니다.
cd /var/www/example.com/ # 설치하고 싶은 디렉토리로 이동
wget https://raw.github.com/rlerdorf/opcache-status/master/opcache.php
설치 후 인터넷 브라우저에서
설치주소/opcache.php 명령으로 모니터링 프로그램을 볼 수 있습니다.
아래 이미지가 모니터링 프로그램으로 확인한 내용입니다.
5. 마무리하면서
이상으로 간단히 OPcache에 대해서 살펴보았습니다.
단일 사이트에서 OPcache는 굉장히 효율적인 툴로 보입니다.
더우기 올해 PHP가 7.x에서 8.0으로 업그레이드가 되면 더욱 유용할 것으로 보입니다.
저는 Page Caching은 FastCGI를 적용하고, PHP Script Cache는 여기서 설명한 OPcache를 적용하며,
데이타베이스 관련해 Memcached를 적용해 사용하고 있습니다.
지금까지 성과는 나름 만족스럽습니다.
FastCGI나 Memcached에 대해서는 아래 포스팅을 참조하시기 바랍니다.