Zend OPcache 개념과 설치 및 설정

OPcache는 PHP script 를 바이트코드(bytecode)로 컴파일한 후에 공유 메모리에 저장하여 성능을 향상 시키는 모듈입니다. 서버의 성능을 향상시키는 PHP 가속기(PHP accelerators) 중 하나인 Zend Opcache 는 PHP 5.5부터 기본 모듈로 내장되었습니다.

✅ OPcache의 주요 기능

  • 바이트코드 캐싱: PHP 스크립트를 바이트코드로 컴파일한 후 캐시에 저장합니다. 이후 동일한 스크립트가 요청되면 캐시된 바이트코드를 재사용합니다.
  • 빠른 실행: 캐시된 바이트코드를 사용하여 PHP 코드의 실행 속도를 높입니다.
  • 메모리 사용 최적화: 공유 메모리를 사용하여 여러 요청 간에 캐시를 공유합니다.
  • 자동 메모리 관리: 오래된 또는 사용되지 않는 캐시 데이터를 자동으로 정리합니다.

✅ Zend OPcache 설치

  • Alma Linux 9.4
  • PHP 8.3.7

PHP 8.3을 이미 설치 해서 서버에 Zend OPcach가 이미 설치되어 있는 상태임을 확인했습니다.

PHP 8.3에 내장 확인미설치 된 경우 설치
~]# php -i | grep "Zend OPcache"
    with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies
Zend OPcache
# php를 설치 후에 rpm 명령어로 PHP OPczche와 Zend OPcache가 같이 확인되는 경우 아래 명령어를 입력하면 하나의 OPczche만 나오는 것을 확인할 수 있음. 두 개의 이름에 하나의 OPczche가 설치된 것임.
~]# php -i | grep -i "opcache"
Additional .ini files parsed => /etc/php.d/10-opcache.ini,
    with Zend OPcache v8.3.7, Copyright (c), by Zend Technologies
Zend OPcache
--- 생략 ---
~#] dnf -y install php83-php-opcache.x86_64
# 다른 명령어 ▼ 
~#] dnf -y install php-opcache

✅ Zend OPcache 설정

🔲 php.ini 설정

/etc/php.d/10-opcache.ini에 이미 설정이 되어 있고 해당 파일에서 수정할 수 있지만 php.ini에 설정을 진행했습니다.

[opcache]
zend_extension=opcache.so
opcache.enable=1                       # 1로 활성화(0=비활성화)
opcache.memory_consumption=512         # 메모리 소비 설정 (단위: MB)
opcache.interned_strings_buffer=8      # interned 문자열에 사용할 메모리 크기 (단위: MB)
opcache.max_accelerated_files=30000    # 캐시할 최대 파일 수
opcache.revalidate_freq=60             # 파일 변경 확인 주기 (단위: 초)
opcache.validate_timestamps=1          # 파일 변경 시각 확인 (개발 환경에서는 1, 운영 환경에서는 0)
opcache.fast_shutdown=1    # 빠른 종료 기능 사용
opcache.enable_cli=1       # PHP의 CLI(Command-line interface) 버전에 Zend OPCache가 활성화되어 사용 할지 여부
opcache.preload=/home/www/opcache_preload.php   # 미리 로드할 스크립트 파일 경로

## root로 사전 로드를 활성화 할 땐 opcache.preload_user로 설정 / 워드프레스 웹사이트 플러그인 사용 시 opcache.preload 설정할 필요가 없음.
opcache.preload_user=root=/home/opcache_preload.php

🔲 opcache 설정 적용 및 확인

~]# systemctl restart php-fpm
~]# apachectl restart
~]# php -i | grep opcache  ## 설정 값 확인 ## 
opcache.blacklist_filename => no value => no value
opcache.dups_fix => Off => Off
opcache.enable => On => On
opcache.enable_cli => On => On
opcache.enable_file_override => Off => Off
opcache.error_log => no value => no value
opcache.file_cache => no value => no value
opcache.file_cache_consistency_checks => On => On
opcache.file_cache_only => Off => Off
opcache.file_update_protection => 2 => 2
opcache.force_restart_timeout => 180 => 180
opcache.huge_code_pages => Off => Off
opcache.interned_strings_buffer => 8 => 8
opcache.jit => tracing => tracing
opcache.jit_bisect_limit => 0 => 0
opcache.jit_blacklist_root_trace => 16 => 16
opcache.jit_blacklist_side_trace => 8 => 8
opcache.jit_buffer_size => 0 => 0
opcache.jit_debug => 0 => 0
opcache.jit_hot_func => 127 => 127
opcache.jit_hot_loop => 64 => 64
opcache.jit_hot_return => 8 => 8
opcache.jit_hot_side_exit => 8 => 8
opcache.jit_max_exit_counters => 8192 => 8192
opcache.jit_max_loop_unrolls => 8 => 8
opcache.jit_max_polymorphic_calls => 2 => 2
opcache.jit_max_recursive_calls => 2 => 2
opcache.jit_max_recursive_returns => 2 => 2
opcache.jit_max_root_traces => 1024 => 1024
opcache.jit_max_side_traces => 128 => 128
opcache.jit_max_trace_length => 1024 => 1024
opcache.jit_prof_threshold => 0.005 => 0.005
opcache.lockfile_path => /tmp => /tmp
opcache.log_verbosity_level => 1 => 1
opcache.max_accelerated_files => 30000 => 30000
opcache.max_file_size => 0 => 0
opcache.max_wasted_percentage => 5 => 5
opcache.memory_consumption => 512 => 512
opcache.opt_debug_level => 0 => 0
opcache.optimization_level => 0x7FFEBFFF => 0x7FFEBFFF
opcache.preferred_memory_model => no value => no value
opcache.preload => no value => no value
opcache.preload_user => no value => no value
opcache.protect_memory => Off => Off
opcache.record_warnings => Off => Off
opcache.restrict_api => no value => no value
opcache.revalidate_freq => 60 => 60
opcache.revalidate_path => Off => Off
opcache.save_comments => On => On
opcache.use_cwd => On => On
opcache.validate_permission => Off => Off
opcache.validate_root => Off => Off
opcache.validate_timestamps => On => On
웹 캐시(Web Cache)

Similar Posts

  • 리눅스 wget 명령어

    wget 명령어는 웹의 다운로드 링크를 리눅스 커멘드라인에서 실행해 다운로드를 할 수 있는 명령어입니다. HTTP, HTTPS, FTP 프로토콜을 이용해서 웹 서버에서 다운로드가 가능합니다. 목차✅ OPcache의 주요 기능✅ Zend OPcache 설치✅ Zend OPcache 설정🔲 php.ini 설정🔲 opcache 설정 적용 및 확인wget 설치하기 레드헷 계열에서 사용하는 패키지 매니저인 yum으로 wget 설치를 진행합니다. 기본 다운로드 명령입니다. wget…

  • 리눅스: lrzsz 툴 설치 및 파일 업로드(rz) 및 다운로드(sz) 사용하기

    리눅스 OS에서 rz와 sz를 이용한 각각의 파일 업로드 및 다운로드 명령어를 실행시키기 위해 lrzsz가 서버에 설치되어 있어야 합니다. lrzsz 툴 설치 후 rz와 sz는 ZMODEM/YMODEM/XMODEM을 지원하는 프로토콜에서 파일 송수신이 가능합니다. Xshell을 사용해서 lrzszs 툴을 설치해 보겠습니다. 목차✅ OPcache의 주요 기능✅ Zend OPcache 설치✅ Zend OPcache 설정🔲 php.ini 설정🔲 opcache 설정 적용 및 확인…

  • PHP-FPM이란 | PHP-FPM 설치 및 설정

    PHP-FPM을 시작하기 전에 CGI에 대해 알아야 합니다. CGI(Common Gateway Interface)는 웹 서버와 외부 프로그램 사이의 상호작용을 위한 표준 프로토콜이며, 웹 서버는 사용자 요청에 따라 동적으로 콘텐츠를 생성하거나 데이터를 처리할 수 있습니다. 요청이 들어올 때 마다 각각의 요청으로 CGI가 생성되게 되어 서버의 속도는 느려질 수 밖에 없습니다. CGI(Common Gateway Interface)의 업그레이드 버전으로 서버의 성능을…

  • 리눅스 tmp 디렉토리: /tmp와 /var/tmp 차이

    리눅스 tmp 디렉토리는 임시 파일을 저장하기 위해 주로 /tmp와 /var/tmp 디렉토리를 사용합니다. /tmp는 일시적인 임시 파일을 저장하는 공간으로, 시스템이 재부팅 되면 대부분의 파일이 삭제됩니다. 따라서 빠른 입출력과 임시 작업에 적합하며, 주로 프로세스가 실행 중 생성하는 임시 데이터를 저장합니다. 반면에 /var/tmp는 재부팅 후에도 파일이 유지되는 임시 저장 공간입니다. 장기간 유지가 필요한 임시 파일이나 작업…

  • 리눅스 tree 명령어

    tree 명령어는 디렉토리 안의 파일과 디렉토리를 나무 형태로 출력하는 명령어입니다. 디렉토리 구성을 파악하는데 유용하며, 하위 디렉토리와 파일이 어떤 구조로 정리되어 있는지 한눈에 확인 가능합니다. 문서화 및 시스템 분석 등에 활용됩니다. 목차✅ OPcache의 주요 기능✅ Zend OPcache 설치✅ Zend OPcache 설정🔲 php.ini 설정🔲 opcache 설정 적용 및 확인✅ tree 명령어 기본 사용 방법 ✅…

  • Apache 시작, 중지, 재시작 명령어 | 서비스 상태 확인

    리눅스에서 Apache를 설치하고 레드헷 계열과 우분투에서의 시작, 중지, 재시작 명령어를 자주 사용하게 됩니다. Apache 시작, 중지, 재시작 등의 명령어는 다음과 같습니다. 목차✅ OPcache의 주요 기능✅ Zend OPcache 설치✅ Zend OPcache 설정🔲 php.ini 설정🔲 opcache 설정 적용 및 확인✅ Apache 시작 및 중지, 재시작: Red Hat 계열 ✅ Apache 시작 및 중지, 재시작: Debian…

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

Prove your humanity: 3   +   5   =