> 백엔드 개발 > PHP 튜토리얼 > ZendOpcache로 PHP 속도 향상

ZendOpcache로 PHP 속도 향상

黄舟
풀어 주다: 2023-03-03 14:18:02
원래의
1240명이 탐색했습니다.

Optimizer+는 Zend가 개발한 비공개 소스이지만 무료로 사용할 수 있는 PHP 최적화 가속 구성 요소로, 최초이자 가장 빠른 opcode 캐싱 도구입니다. 이제 Zend Technologies는 PHP 라이센스에 따라 Optimizer+를 Zend Opcache로 오픈 소스화했습니다.

Zend OPcache는 opcode 캐싱 및 최적화를 통해 더욱 빠른 PHP 실행을 제공합니다. 나중에 사용할 수 있도록 미리 컴파일된 스크립트 파일을 공유 메모리에 저장하므로 디스크에서 코드를 읽고 컴파일하는 데 시간이 소모되지 않습니다. 동시에 코드 실행 속도를 높이기 위해 일부 코드 최적화 모드도 적용합니다.

1. opcode 캐시란?

인터프리터가 스크립트 코드 분석을 완료하면 직접 실행할 수 있는 중간 코드, 즉 연산 코드(Operate Code, opcode)를 생성합니다. Opcode 캐시의 목적은 반복적인 컴파일을 피하고 CPU 및 메모리 오버헤드를 줄이는 것입니다. 동적 콘텐츠의 성능 병목 현상이 CPU와 메모리에 있는 것이 아니라 데이터베이스 쿼리로 인한 디스크 I/O 오버헤드와 같은 I/O 작업에 있는 경우 opcode 캐시의 성능 향상은 매우 제한적입니다. 하지만 opcode 캐시는 CPU와 메모리 오버헤드를 줄일 수 있으므로 이는 항상 좋은 일입니다. 환경 친화적인 방식으로 소비를 최대한 줄여야겠죠? :D

최신 opcode 캐시(Optimizer+, APC2.0+ 등)는 저장을 위해 공유 메모리를 사용하며 실행 전에 코드를 "역직렬화"할 필요 없이 캐시에서 직접 파일을 실행할 수 있습니다. 이로 인해 성능 속도가 크게 향상되고 전체 서버 메모리 소비가 낮아지며 단점이 거의 발생하지 않습니다.

2. Optimizer+와 APC의 장단점 비교

Optimizer+는 2013년 3월 중순에 Opcache로 이름이 변경되었습니다.

PHP 위키의 토론에 따르면 Zend Opcache는 곧 PHP 5.5에 통합될 예정입니다. APC의 경쟁자로서, OptimizerPlus에는 APC와 같은 사용자 캐시 기능이 없지만 새로운 Zend Opcache가 APC의 위치를 ​​대체할 가능성이 높습니다.

APC에 비해 OPTIMIZER+의 장점

성능. 테스트에 따르면 Zend Optimizer+는 지속적으로 APC보다 성능이 뛰어납니다. 코드에 따라 초당 처리되는 요청 수가 5~20% 더 높습니다. 구글 문서에 기록된 테스트 결과 중 워드프레스 2.1.1(왜 WP 새 버전으로 테스트하지 않았는지 모르겠다)의 성능이 약 8% 향상됐다. 이론적으로 WP 3.5.1의 경우 약 5~10% 정도 성능이 향상되어야 한다. WordPress를 실행하는 서버의 경우 Optimizer+를 사용하면 CPU 사용량을 크게 줄이고 페이지 로드 속도를 높일 수 있습니다(여기 그래픽).

새로운 PHP 버전을 지원합니다. Zend와 PHP 커뮤니티는 Optimizer+가 최신 버전의 PHP를 지원하는 데 도움을 줄 것입니다.

신뢰성. Optimizer+에는 데이터 손상으로 인한 서버 충돌을 방지하는 선택적 손상 감지 기능이 있습니다.

호환성이 향상되었습니다. PHP 커뮤니티는 Optimizer+가 커뮤니티에서 지원하는 모든 PHP 버전과 호환되도록 하려고 합니다.

OPTIMIZER+에 비해 APC의 장점

APC에는 데이터 캐싱 API가 있지만 Optimizer+에는 없습니다.

APC는 오래된 유효하지 않은 스크립트가 차지한 메모리를 회수할 수 있습니다. APC에는 더 이상 사용되지 않는 스크립트와 관련된 메모리를 회수할 수 있는 메모리 관리자가 있습니다. Optimizer+는 이와 다릅니다. 이러한 메모리를 "더티"로 표시하지만 이를 회수하지는 않습니다. Optimizer+는 "더티" 메모리 사용량의 특정 비율이 구성된 임계값에 도달하면 자동으로 다시 시작됩니다. 이 동작은 안정성 측면에서 장점과 단점을 모두 가지고 있습니다.

3. Zend Opcode 사용

이제 APC 대신 Zend Opcache를 PHP 최적화 가속 도구로 사용할 수 있습니다. 현재 Zend Opcode는 PHP 5.2.*, 5.3.*, 5.4.* 및 PHP-5.5 개발 버전과 호환됩니다. 그러나 PHP 5.2에 대한 지원은 향후 제거될 예정입니다.

참고: Zend Opcache는 eaccelerator와 충돌합니다. Zend Opcache를 설치하려면 먼저 eaccelerator를 제거해야 할 수도 있습니다(이 가속 모듈을 사용하는 경우).

소스 코드에서 설치 및 구성

Zend Opcache의 소스 코드는 github에서 호스팅되며 현재 ZendOptimizerPlus라고 합니다.

자세한 설치 단계는 README 파일을 참조하세요.

참고:

자신의 서버에 배포하기 전에 로컬 가상 머신에서 테스트하는 것이 가장 좋습니다.

eacceleratro, xcache 또는 apc와 같은 구성 요소를 삭제하는 것이 가장 좋습니다. 설치 전.

그런데, 소스코드에서 컴파일하고 설치하려면 php-devel이 필요합니다. README의 빠른 설치 섹션 시작 부분에서 사용됩니다.

$PHP_DIR/bin/phpize

phpize 경로를 모르는 경우 다음을 수행할 수 있습니다.

whereis phpize

README 파일에도 해당 권장 최적화 설정이 있습니다.

EPEL 소스에서 설치 및 구성

저는 소스 코드로 프로그램을 컴파일하고 설치하는 것을 좋아하지 않습니다. 하나는 제 능력이 부족해서이고, 다른 하나는 트러블이 두려워서입니다. 다음은 내 VPS 구성을 기반으로 CentOS에서의 작업을 예로 들어 EPEL 설치 소스에서 Zend Opcache를 설치하는 방법을 설명합니다.

EPEL 커뮤니티에서는 yum을 사용하여 직접 설치할 수 있는 Zend Opcache용 설치 패키지를 제공했습니다. 물론, EPEL 설치 소스가 구성되어 사용된다는 전제가 있습니다. 그렇지 않은 경우 여기를 참조할 수 있습니다.

참고로 REMI 설치 소스의 PHP는 이미 버전 5.4입니다. 일부 사람들은 WordPress가 PHP 5.3보다 PHP 5.4에서 더 나은 성능을 발휘한다는 것을 테스트했기 때문에(10% 더 빠르고 RAM 소모가 적음), 그런데 PHP를 업그레이드하는 것은 나쁜 것이 아닙니다.

작업 단계:

epel 설치 소스를 사용하도록 구성합니다. 이미 존재하는 경우 건너뜁니다.

eaccelerator, xcache, apc 삭제:

yum delete php-eaccelerator php-xcache php-apcu

사용하지 않으면 건너뛰세요.

시스템 업그레이드:

yum update

목적은 현재 PHP 및 기타 소프트웨어를 상태에 따라 remi가 지원하는 최신 버전으로 업그레이드하는 것입니다. 레미 설치 소스. 이때 시스템에 다음과 유사한 출력이 표시되는 것을 볼 수 있습니다. 🎜>경고: 이러한 php- * RPM은 공식 Fedora/Red Hat 빌드가 아니며

Fedora에 버그를 신고하지 마십시오. Project 또는 Red Hat.


전용 포럼 http://forums.famillecollet.com/ 사용

경고: /etc/php.ini가 /etc/php.ini.rpmnew로 생성됨
업데이트 중: MySQL-libs-5.5.31-1.el6.remi.i686                                        2/26

경고: 이 MySQL RPM은 공식 Fedora/Red Hat 빌드가 아니며
공식 버전을 재정의합니다. . Fedora Project나 Red Hat에 버그를 신고하지 마세요.
전용 포럼인 http://forums .famillecollet.com/

을 사용하세요. 경고: /etc/my.cnf는 /etc/my로 생성됩니다. cnf.rpmnew


는 이제 Fedora/Red Hat 버전에서 마이그레이션 중이라는 뜻입니다. Remi 버전에 도달했으므로 Fedora/Red Hat에 가서 도움을 받지 마세요. 하하, 발생하는 모든 문제는 온라인에서 발견되는 것 같고, 공식 포럼에서는 질문을 거의 하지 않습니다. 저와 같은 초급 사용자는 이러한 심각한 문제에 직면하지 않을 것입니다.

Zend Opcache(pecl 버전) 설치:

yum install php-pecl-zendopcache

설치 중에 생성된 opcache 구성 파일은 기본 /etc에 있습니다. / php.d 디렉토리:


opcache-default.blacklist

opcache.ini

이 구성 파일은 기본적으로 README의 권장 설정을 사용하며 필요한 경우에만 필요합니다. 몇 군데에서 수정하세요.

vi /etc/php.d/opcache.ini

다음 권장 구성을 수정하고 저장하세요(전체 Zend Opcache 구성 정보 참조):


opcache.memory_consumption=128

opcache.interned_strings_buffer=8

opcache.max_accelerated_files=4000

opcache.revalidate_freq=60

opcache.fast_shutdown=1
opcache.enable_cli=1


php.ini 구성을 수정할 필요가 없습니다. 이를 적용하려면 Apache 서비스를 다시 시작하세요.

service httpd restart

다음을 확인하세요. 올바르게 시작되었습니다.


php -v

출력은 다음과 유사합니다.


PHP 5.4.14(cli)(작성 날짜: 2013년 4월 11일 11: 04:35) 저작권 (c) 1997-2013 PHP 그룹 Zend 엔진 v2.4.0, 저작권 (c) 1998-2013 Zend Technologies with Zend OPcache v7.0.1, Copyright (c) 1999-2013, by Zend Technologies

위는 ZendOpcache를 사용하여 PHP를 가속화하는 내용입니다. 더 많은 관련 기사를 보려면 PHP에 주목하세요. 중국사이트(www.php.cn)!


관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿