힙합 VM의 드루팔 호스팅

지난 3 월, 페이스 북은 PHP와 완벽하게 상호 운용 선전 해킹, 그 힙합 가상 머신 (HHVM)를위한 새로운 오픈 소스 프로그래밍 언어를 발표했다. 발표에 이어, 나는 그들이 PHP에서 가능한 한 많은 성능을 짜내려고 노력의 새로운 릴리스를 시도 모든 것을보고 매료되었다. 이것은 나에게 아이디어를 준 : 우리는 페이스 북이 매일 수행하는 정확한 문제에 직면하지 않지만, 내가 HHVM, 페이스 북의 실행 엔진의 최신 반복에서 드루팔을 실행하려고하면 무슨 일이 일어날 지 지켜 보는 것도 흥미로울 것이다.

호스팅

공식 HHVM 패키지는 우분투와 데비안에 분산되어 있지만, 다행히도 몇몇 진취적인 사람들에 CentOS를 위해 그들을 포장했다. 가상 머신과 일부 추가 패키지의 빠른 스탠드 위로 그래서, 우리는 갈 수 있었다. 테스트하기 위해, 우리는 콘텐츠 사이에 상당한 관계 일반 패널 및 디스플레이 제품군을 기반으로 우리가 작년에 개발 된 매우 복잡한 사이트를 선택했다. 이는 특정 페이지에서 드루팔로드하고 페이지에 단지 하나를 넘어 여러 개체를 렌더링 할 가능성 것을 의미했다.

나는 사이트의 현재 PHP와 데이터베이스를 가지고 가고 4 개 코어 및 메모리의 6.5 GB로 로컬 VM에 그것을 서 있었다. 우리는 MySQL의에서 캐시에 약간의 증가와 함께, 서버의 수를 설정하는 FPM의 약간의 최적화를했다. 그 외에는, 그것은 거의 XCache를, Percona 5.5과의 nginx와 PHP 5.3의 바닐라 설치합니다. 목표는 가능한 한 빨리 모든 것을 만들기위한 많은 관계없이이 통역의 비교 "사과에 사과"는만큼을 제공하는 것이 었습니다. 우리는 다음 사이트를 스파이더와 무작위로 1,000의 URL을 샘플링 HHVM와 PHP-FPM과 함께 실행되는 사이트에 대한 30 개 개의 동시 요청을 생성하여 JMeter를 실행. 우리는 서버에 시간과 부하를 기록했다.

오프 시작, 우리는 사이트의 콜드 스타트에 대해 테스트를 실행했습니다. 우리는 드루팔 캐시를 삭제하고 nginx를, PHP-FPM와 MySQL을 다시 시작됩니다. 우리는 다음 지속적으로 캐시 아이템을 구축 할 수있는 단일 요청과 함께 홈 페이지를 누르십시오. 요청이 끌어 올렸되면서, 시간이 예상대로 각자가 올라 갔다 완료합니다.

평균 응답 시간은 5 초마다 샘플링, 콜드 스타트

무슨 서버에서 일어나고있는 것은 그 거울.

전체 CPU 및 메모리 사용량, 콜드 스타트

우리는 도전이었다 PHP-FHM에서 각 프로세스를 추적하기 때문에 mysqld를 꺼내이 경우, CPU 및 메모리 사용량을 생성 한 실제 프로세스를 확인했습니다.

mysqld를위한 CPU 사용량, mysqld에 대한 메모리 사용을 시작 콜드, 콜드 스타트

하나 개의 코어의 조금 넘는 100 %에 몇 가지 스파이크, 60 % - MySQL은 40에서 어디에서든지 사용되었다. 다른 모든 코어는 완전히 PHP-FPM에 의해 사용되었다. 마찬가지로, MySQL을 사용하고, 평균, 메모리에 대한 300메가바이트 내가 처리 일시 중지 및 응답 시간이 스파이크 영역을 일으키는 원인이 무엇인지 전혀 모르겠어요. 나는 모든 시나리오를보고, 내 생각은 아마도 MySQL의 또는의 nginx에서, I / O 차단의 일종 때문이라고합니다.

드루팔 캐시를 호스팅 힙합 VM의 드루팔 및

두 번째 시험으로, 우리는 XCache를와 MySQL에 대한 반복의 화상 도움이 될 있는지 확인하기 위해 드루팔 캐시를 지우고 시스템에 대해 동일한 URL을 달렸다. 전반적으로, 그것은 전체 400 밀리 초에서 평균 응답 시간을 단축하고 분당 무려 2.081 페이지로 처리량 증가했다. 일반적으로 응답 시간은 이전 실행에서 봉우리와 계곡의 감소와 좀 더 고르지했지만, 결과는 꽤 일치했다.

평균 응답 시간은 5 초마다 따뜻한 시작 전반적으로 CPU 및 메모리 사용량, 따뜻한 시작을 샘플링

그 후 우리는 HHVM을 위해 PHP-FPM을 전환, 컴퓨터를 다시 시작됩니다. 다행히, 그것은 FastCGI를 지원합니다, 그래서 약간의 nginx 구성을 변경하는 간단한 문제였다. 셋업은 PHP-FPM과 완전히 동일; 우리는 드루팔 캐시가 지워 졌음을 확인했다 및 MySQL과의 nginx를 다시 시작됩니다. 우리는 하나의 요청으로 홈페이지를 쳐서하여 JMeter를 시작했다.

평균 응답 시간은 5 초마다 샘플링, 콜드 스타트

우리가 처음으로 느낀 것은 13시 21분 반대가 절반 아래 시간 6:28을의 완성이었다. 응답 그래프의 모든 부분은 더 나은, 그리고 두 봉우리와 계곡이 유의하게 낮았다. 상기 작은 딸꾹질은 매우 떨어 뜨렸 전에 JIT 컴파일러를 실행했다 시작합니다.

서버 통계를 보면, 그뿐만 아니라 개선되었다.

전체 CPU 및 메모리 사용량, 콜드 스타트

HHVM는 하나의 프로세스로 실행, 그래서 우리는 그들에 대해 개별적으로 CPU 및 메모리 사용량을 포착 할 수 있었다.

mysqld를하고 hhvm, 감기 시작을위한 mysqld를하고 hhvm, 콜드 스타트 ​​메모리 사용에 대한 CPU 사용량

그냥이 그래프를보고, 그것은 몇 가지를 알려 꽤 간단합니다. 즉, HHVM 모두 CPU와 메모리 사용은 PHP-FPM 이상 향상된다. PHP-FPM에서 26 % - HHVM에 대한 피크 메모리 사용량은 25에 비해 약 20 %의 전체 시스템 사용에 대한 막 3백20메가바이트했다. 75 % - 마찬가지로, 총 CPU 사용량은 95 %의 CPU와 가까운 (70)에 중간에 일관된 스파이크에 비해 90 %와 60 %에 가까운 중간에 스파이크의 단지 몇 낮았다.

PHP를 - FPM 테스트와 마찬가지로, 우리는 또한 HHVM의 따뜻한 시작에 대한 시나리오를 달렸다. PHP-FPM과 마찬가지로, 단지 평균 응답 시간이 200 밀리 초 차이에 대해, 아주 작은 차이가 있었다.

우리는 높은 수준에서 볼 경우, HHVM는 PHP-FPM에 아주 잘 비교합니다.

우리는 두 배 이상 처리량과 절반 이하 평균 응답 시간을 보았다. 필요한 시스템 자원의 감소와 결합, 그것은 HHVM로 전환 꽤 설득력있는 주장이다.

몇 가지 중요한 고려 사항은, 그러나있다. 가장 큰는 HHVM 팀은 가능한 한 젠드 PHP에 가까운 얻기 위해 시도하는 동안, 그들은 아직없는 것입니다. 최신 보고서로, HHVM은 드루팔에 대한 단위 테스트의 99.83 %를 전달하지만, 어떤 영향을 미칠지 특이성 다양한 기여 모듈에 존재하는 무엇이든 아무 생각이 없다. 예를 들어, 우리는 GD가 그것을해야 모든 표시에도 불구하고,이 작업을 할 수 없었다. 다행히, 그것은 ImageMagick를 쉽게 교체 할 수있어 - 대부분의 조작을 위해. 사실, 우리는 HHVM에 실패 우리의 테스트 중 어떤 페이지로 실행하지 않은,하지만 당신은 당신이 실제로 그것으로 실행할 때까지 작동하지 않을 수 있습니다 몰랐어. 또한, 테스트는 프런트 엔드에 전적으로 이루어졌다. 우리가 관리 측면에서 일반적인 시나리오 몇 겪었 동안, 우리는 철저하게 그것을 테스트하지 않았다. 일부 PHP 모듈은 APC 및 memcache로 포팅되었습니다 및 MongoDB를, 얼음과 레디 스 등 다른 사람을 추가, 제 3 자에 의해 일이있다, 그러나 많은 모듈은 없을 것되지 아마했다.

또한 움직이는 대상입니다. 지금 HHVM 팀은 약 8 주 릴리스주기에서 찾고있다. 그들이 앞으로 이동,하지만 당신은 절대 모릅니다로 아마 상당한 회귀가되지 않습니다. 당신이 페도라 나에 CentOS를 실행하는 경우 소스에서 구축 중이 있거나 현재 상황을 반영하지 않을 수 있습니다 타사 저장소에 의존하므로 마찬가지로, 그들은 공식 패키지 우분투와 데비안을 목표로하고 있습니다.

책임의 한계

위의 실적은 2.3 GHz의 코어 i7 프로세서를 탑재 한 맥북 프로에서 실행되는 매우 '비 프로덕션'가상 시스템에서 생산 사이트를 실행합니다. 최적의 성능을 보장하기 위해 스택의 어떤 부분에 약간의 조정이 있었다. 로드 테스트는 다른 용도로 사용되지 않는 한 하나이기는하지만, 무선 네트워크를 통해 다른 시스템에서 수행 하였다. 부하 테스트는 대기 시간 또는 비 PHP 자산에 대한 요청이 포함되지 않았고 벤치 마크 단지의 PHP 인터프리터의 성능을 실제 사용을 시뮬레이션하도록 구성되지 않았습니다.

이 비디오를 시청!

관련 기사

이지 어 드루팔 호스팅 서비스당신은 당신에게 가능한 것이 무엇인지 확실하지 않은 경우 드루팔 호스팅을 따기 어려운 작업이 될 수 있습니다. 경우에 따라서는 Hostgator에 또는 공유 호스팅 환경 같은 뭔가 잘 될 수도 ...
드루팔 호스팅 PHP를 알아보기오후 10시 38분 2 월 3, 2010 juliejohnson26 의해 게시 내가 더 드루팔에 대해 배우고, 더 나는 약간의 PHP를 배워야한다고 알고 있습니다. 사람이 그렇게 할 수있는 위치에 대한 제안 사항이 있습니까? 아르...
첫 번째 바이트 느린 드루팔 호스팅에 시간나는 미넬리의 subtheme와 함께 D7 사이트를 넣어. 길을 따라 나는 다른 주제, 다른 모듈과 많은 실험. 어딘가에 길을 따라 나는 이상한 성능 문제를 개발, 그리고 ...
로드 코멘트 드루팔 호스팅압둘라 나는이 두 노트를 가지고 (mikeaja에) 19시 23분 2 월 2011 (18) 주석 : - 드루팔 6은 그것을 유용하게 7보다 더 필요한 리소스 (특히 CPU 사용량)의 관점에서 작 ...
Immigrer 워드 프레스 적이있는의 줌라 호스팅나는 블로거, wordpress.com처럼, 지금까지 몇 가지 웹 2 개 플랫폼을 사용했다. 위 블리 좀 더 블로그 웹 사이트는, 그래서 내가이 "경험"블로거 (내가 사용하는 방법을 알고 있다는 것을 의미입니다 말할 수 있습니다 ...