성능을 향상 시키려면 어떤 PHP opcode cacher를 사용해야합니까?[닫은]
-
09-06-2019 - |
문제
고부하 상태에서 성능을 향상 시키려고 노력하고 있으며 opcode 캐싱을 구현하고 싶습니다. 다음 중 어떤 것을 사용해야합니까?
- APC- 설치 가이드
- eAccelerator- 설치 가이드
- XCache- 설치 가이드
저는 또한 제 레이더 아래에있는 다른 대안에도 열려 있습니다.
현재 Apache 2 및 PHP 5.2를 사용하는 Debian Etch에서 실행 중입니다.
[업데이트 1]
HowtoForge 설치 링크 추가
[업데이트 2]
주어진 답변과 피드백을 바탕으로 애플리케이션에서 다음 Apache JMeter 테스트 계획을 사용하여 3 가지 구현을 모두 테스트했습니다.
- 로그인
- 홈페이지 액세스
동시 연결이 50 개인 경우 결과는 다음과 같습니다.
Opcode 캐싱 없음
APC
eAccelerator
XCache
실적 그래프 (작을수록 좋음)
위의 결과에서 eAccelerator는 APC 및 XCache에 비해 성능이 약간 우수합니다. 그러나 위의 데이터에서 가장 중요한 것은 모든 종류의 opcode 캐싱이 성능을 크게 향상 시킨다는 것입니다.
다음 두 가지 이유로 APC를 사용하기로 결정했습니다.
- 패키지는 공식 데비안 저장소에서 사용 가능합니다.
- 더 많은 기능의 제어판
내 경험을 요약하면 :
설치 용이성 : APC> eAccelerator> XCache
성능 : eAccelerator> APC, XCache
제어판 : APC> XCache> eAccelerator
해결책
답은 실행중인 웹 애플리케이션의 유형에 따라 다를 수 있습니다.2 년 전에 직접 결정을 내려야했고 Zend Optimizer와 eAccelerator 중에서 결정할 수 없었습니다.
결정을 내리기 위해 ab (apache bench)를 사용하여 서버를 테스트하고 세 가지 조합 (zend, eaccelerator, 둘 다 실행 중)을 테스트하고 eAccelerator 자체가 최고의 성능을 제공함을 증명했습니다.
시간이 여유가 있다면 비슷한 테스트를 직접 수행하고 결과에 따라 결정을 내리는 것이 좋습니다.
다른 팁
Windows에 설치하기 쉽기 때문에 APC를 사용하고 WAMP에서 개발 중입니다.
APC를 PHP6에 통합하는 방법은 다음과 같습니다. http : //www.php.net/~derick/meeting-notes.html#add-an-opcode-cache-to-the-distribution-apc
그리고 여기에 Debian Etch에 APC를 설치하는 방법이 있습니다. http://www.howtoforge.com/apc-php5-apache2-debian-etch
eAcclerator, APC, XCache 및 Zend Optimizer를 사용한 벤치 마크 (Zend는 캐시가 아니라 최적화 프로그램 임에도 불구하고).
결과 : eAccelerator가 가장 빠르며 (모든 테스트에서) XCache 및 APC가 뒤를이었습니다.(다이어그램의 값은 WordPress 홈페이지를 10,000 번 호출하는 데 걸리는 시간 (초)입니다.)
Zend Optimizer는 모든 것을 느리게 만들었습니다 (!).
확실히 말할 수는 없지만 지금 제가 일하고있는 곳은 APC와 eAccelerator입니다.그러나 이것은 당신에게 영향을 미칠 수 있습니다- APC는 향후 PHP 릴리스에 통합됩니다 (링크에 대한 Ed Haber에게 감사).
저는 eAccelerator로 좋은 성공을 거두었지만 (부하없이 속도 향상이 눈에 띄게) XCache도 꽤 유망 해 보입니다.각각에 대해 몇 가지 평가판을 실행하고 싶을 수 있지만 애플리케이션은 각각 다르게 확장 될 수 있습니다.
XCache를 1 년 넘게 사용해 왔는데 전혀 문제가 없습니다.
eAccelerator로 전환하려고했지만 많은 세분화 오류가 발생했습니다 (오류를 덜 용서합니다).eAccelerator의 주요 이점은 단순한 opcode 캐시가 아니라 최적화 프로그램이라는 것입니다.
각 애플리케이션으로 애플리케이션을 완전히 테스트하여 문제가 없는지 확인한 다음 apachebench를 사용하여 부하 상태에서 테스트합니다.
이러한 부가 기능은 역사적으로 추적해야 할 이상한 버그를 많이 도입했습니다.이러한 버그는 캐시 상태에 따라 달라지기 때문에 쉽게 진단 할 수없는 일관성없는 동작을 유발할 수 있습니다.
그러므로 다음과 같이 말합니다.
- 위의 어떤 것도 사용하지 마세요.대신 더 많은 주석을 구입하면 성능을 높이는 더 안정적인 (예 : 오류없는) 방법입니다. 또는
- 애플리케이션에서 바지를 테스트 한 후 가장 강력한 위의 제품을 사용하세요.
하지만 다음과 같이 말합니다.
- 애플리케이션을 프로파일 링하여 성능 문제를 일으키는 것이 정말 PHP 코드 파싱인지 확인합니다.그렇지 않을 가능성이 매우 높다고 생각합니다. 그럴 경우 이들 중 하나를 설치하여 시간을 낭비하게 될 것입니다 (실제로는 시간을 생산적으로 부정적으로 사용).