php 8.1 jit 컴파일 옵션 사용하기 > 리눅스서버
리눅스서버

php 8.1 jit 컴파일 옵션 사용하기

조회 144회 댓글 0건

기본 설정이 opcache 사용으로 되어 있어서 페이지 로딩에서 보여지는 차이를 느끼지 못했습니다. 

아래는 설정 및 확인한 내용 들입니다.


여기서 설치한 방법은 CentOS에서 php-fpm

아래 위치에서 환경설정 파일을 열어서 변경해 준다.

[root@pabburi /etc/opt/remi/php81] vim php.d/10-opcache.ini 


# opcache.jit = 1205 - all code is JIT compiled

# opcache.jit = 1235 - only selected code portions (based on their relative use) are passed to the JIT compilation

# opcache.jit = 1255 - application code is tracked for compilation by JIT and selected parts of the code are transferred to the compiler

# opcache.jit = 1205 - 모든 코드가 JIT 컴파일됨

# opcache.jit = 1235 - 선택한 코드 부분(상대적 용도에 따라)만 JIT 컴파일에 전달됩니다.

# opcache.jit = 1255 - JIT에서 컴파일을 위해 애플리케이션 코드를 추적하고 코드의 선택된 부분을 컴파일러로 전송합니다.

#  

# tracing은 1254, funciton은 1205과 같다

# https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.jit

opcache.enable=1

opcache.enable_cli=1

opcache.jit_buffer_size=256M

opcache.jit=tracing


기본적인 환경설정에서는 jit 부분만 없고 인에이블은 이미 되어 있었다.

phpinfo를 확인해 보는 것이다.


현재 php8.1 사용인데 디폴트 옵션이 설정이 되어 있는 상태 임을 알 수 있다.

[root@pabburi /etc/opt/remi/php81] /opt/remi/php81/root/bin/php -r "phpinfo();" | grep opcache | grep jit

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_prof_threshold => 0.005 => 0.005


이것 환경설정을 실시간으로 읽고 있다. php-fpm을 재시작하지 않아도 버퍼사이즈 변경하니 적용이 된다.

[root@pabburi /etc/opt/remi/php81] /opt/remi/php81/root/bin/php -r "phpinfo();" | grep opcache | grep jit

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 => 256M => 256M

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_prof_threshold => 0.005 => 0.005


환경설정에 보면 아래와 같은것이 있다.

필요하지 아니한것은 정리해 놓으란 의미로 보면 될것 같다. 또는 문제가 발생 한다거나.

opcache.blacklist_filename=/etc/opt/remi/php81/php.d/opcache*.blacklist


결론은 실제 어느정도 속도 향상이 있는지에 대해서는 자신의 사이트는 자신이 비교 해야 될것입니다. 기본 옵션의 변경만 가지고 문제가 없는지 아니면 추가 적인 튜닝작업이 필요할지 말입니다. 아직 php81사용하고 있는것이 저 같은 경우는 트래픽이 많지 않아 이정도에서 마무리 지었습니다. 버퍼좀 늘려 줬으니 안한것 보다 낳겠지???


잘 사용하지 않는 레디스, 오디비씨 같은 모듈도 같이 설치 되면서 올라와 있는데 주석처리 하였는데 없어도 될것이 있어서 좋을 이유는 없습니다.


* 참고한곳

https://pat.im/1207

https://www.php.net/manual/en/opcache.configuration.php#ini.opcache.jit

https://www.phoronix.com/review/php8-jit-june/2

https://medium.com/jp-tech/try-out-jit-compiler-with-php-8-0-a020e6aeb3e5

https://www.droptica.com/blog/jit-compiler-php-8/


  • 페이스북으로 공유
  • 트위터로  공유
  • 구글플러스로 공유
전체 85건 1 페이지
  • profile_image jpeg 보다 더 압축 성능이 좋은 webp 이미지에 대한 것입니다.앞으로 대세로 사용될 이미지 포맷으로 현재 버전의 크롬에서 잘 지원이 되기 때문에 이미지 태그에 그대로 사용하면 됩니다.# CentOS 설치 or 아마존 리눅스yum -y install libwebp-tools.x86_64# 변환 방법cwebp img.jpg -o img.jpg# 퀄리티를 줘서 압축 80까지 문제 없다cwebp -q 91 img.jpg -o img.jpg# we…
  • profile_image 리눅스에서 사용하는 png 압축 프로그램 입니다.기본적은 png은 훼손방식의 압축은 아니지만 이 프로그램은 훼손방식의 압축이지만 jpg와는 다른 방식으로 압축을 진행 합니다.결과는 아래 보시면 됩니다.각각 jpg, png 압축방식의 차이가 표현하는 방식이 다르기 때문에 이 부분을 이해하고 사용하는 것이 좋습니다. png는 gif의 라이센스 비용때문에 탄생한것으로 gif 처럼 훼손방식이 아닙니다.리눅스에서 아래와 같은 명령으로 어떤 패키지를 설치…
  • profile_image MySQL은 mysql 디비의 user, host, db 테이블을 직접 건드리는 방식도 가능 하지만 그렇게 하는것이 더 불편하고 힘듭니다.SQL 명령이 있으니 아래 참고 하여 사용하면 됩니다.# 간단하게 유저 추가하는방법 - rootCREATE USER 'root'@'접근IP' IDENTIFIED WITH 'mysql_native_password' BY '접근문자';# GRANT 이외의 권한을 모두 줍니다.GRANT ALL PRIVILEGES …
  • profile_image 쉘에서 특정 명령을 계속 실행 하는 방법입니다.현재 디렉토리에 변화가 있는지 확인(모니터링)while true; do (ls -al; sleep 2); done이 경우는 디비서버 변화에 대한 모니터링이 필요할때 사용 합니다.별도의 모니터 또는 화면을 분할하여 간간이 확인이 필요할때 사용하면 유용 합니다.while true; do (mysql -A  -u 디비유저 -p디비PW -h localhost -P 3306 -e "show master st…
  • profile_image 아파치 웹로그에서 특정 부분을 취합하여 많은 순으로 정렬하여 볼 수 있는 기능입니다.1) 먼저 웹로그에서 전체를 대상으로 해도 되지만 필요한 일부분만을 필터링하여 파일로 저장합니다.2) 저장된 파일에서 특정 부분을 소팅하고 숫자를 셉니다.cat /var/http/log/access_log | grep "보고싶은것" | grep '날짜'  | grep -v '제외시킬문자' > /var/http/log/www_log.txtawk '{ prin…
  • profile_image 러시아산 엔진엑스와 전통의 아파치 웹서버에 대한 것입니다. 잘못된 글들이 많아 결론만 간단하게 작성하게 되었습니다.결론부터 말하면 요즘버전의 아파치2.4 부터는 별차이 없습니다. 엔진엑스가 정적인 처리에서 더 나쁘진 않지만 그렇다는 것은 뭔가 기능이 적거나 하단 이야기가 되기도 합니다. 이유는 동일한 event 방식을 사용하기 때문입니다. 엔진엑스가 단순하다는 것은 심플하게 잘 설계 되었다는 의미가 되기도 하지만 기능이 적다는 것일 수 있기 때…
  • profile_image 로그인 유저의 목록을 보는 명령을 사용 하면 됩니다.명령은 last 입니다.그리고 뒤쪽에 -30 같은 옵션을 주면 30개의 목록을 볼 수 있습니다.로그인 할 때마다 매일 자동으로 보고 싶으면 /etc/bashrc 파일 끝에 넣어 주면 로그인 할 때 마다 접속한 목록을 볼 수 있습니다.* 로그인한 유저의 리눅스 IP 접속기록  그리고 리눅스에서 로그를 봐도 되는데요/var/log 디렉토리를 보시면 됩니다.보통 아래 파일을 많이 확인 합니다/var…