xecon2015 :: [3-1] 용영환 - hhvm 서비스 적용기

34

Upload: xpressengine

Post on 16-Apr-2017

341 views

Category:

Technology


0 download

TRANSCRIPT

용 영 환PHPKorea

마켓컬리옐로모바일 정글피플네이버태터앤컴퍼니카페 24

xenonix.com

HHVM 서비스 적용은정글피플 개발본부 팀원들과함께 했습니다 .

HHVM 를 고민하게 된 이유

인터넷 서비스를 보다원활하게 제공하는 방법

1. 서버 사양을 좋게 한다 .

2. 서버 수를 늘린다 .

3. 서버 효율을 높인다 .

3.서버를 보다 효율적으로사용하고 싶었다 .

비용

이용자수

서버 효율 ,

결국 언젠가는고민해야 할 문제 .

Hack Lang 과 HHVM,

페이스북에서사용하고 있다는데

Hack 을사용하지 않은 이유

1. 언어적으로는 매우 좋으나아직 성숙되지 않았다 .

2. 맘에 드는 IDE 가 아직 없다 .

3. 개발환경 구축하기 어렵다 .

그런데 ,HHVM 은 적용한 이유

1. PHP 5.5 이상을 100% 지원2. 개발환경을 바꿀 필요 없다 .

3. 성능이 좋다 .

FastCGI support

JIT ( just-in-time ) Compilation

https://www.chriswiegman.com/2011/10/fastcgi-vs-suphp-vs-cgi-vs-mod_php-dso/

Codeigniter, laravel, phpunit 등100% 구동

http://hhvm.com/frameworks/

그럼 ,우리는 HHVM 을얼마나 신뢰할 수 있는가

PHP + Zend PHP +HHVM

DBMS

Load Balancer

그런데 !!!

공식 Prebuild Package 가아직은 적다 .

Ubuntu 14.04 / 14.10 / 15.04Debian 7 / 8

https://github.com/facebook/hhvm/wiki/Prebuilt-Packages-for-HHVM

그래서 , 이 외의 OS 에서 구동하려면직접 컴파일을 해야 한다 .

https://github.com/facebook/hhvm/wiki/Building%20and%20Installing%20HHVM

컴파일이 오래 걸리긴 하지만어렵지 않게 가능합니다 .

PHP HHVM

math 1.274 sec. 0.403 sec.

stringmanipulation 1.311 sec. 0.747 sec.

loops 0.813 sec. 0.045 sec.

ifelse 0.639 sec. 0.093 sec.

PHP vs. HHVM 성능 테스트

스크립트 출처 : http://www.php-benchmark-script.com/

PHP 성능 테스트

HHVM 성능 테스트

Session handler

Redis 와 memcached 지원

/etc/hhvm 아래에php.ini server.ini

php.ini

; php options;session.save_handler = files;session.save_path = /var/lib/php5;session.gc_maxlifetime = 1440session.save_handler = redissession.save_path = “xxx.xxx.xxx.xxx:6379"session.gc_maxlifetime = 1440

; hhvm specifichhvm.log.level = Warninghhvm.log.always_log_unhandled_exceptions = truehhvm.log.runtime_error_reporting_level = 8191hhvm.mysql.typed_results = false

server.ini

; php options

pid = /var/run/hhvm/pid

; hhvm specific

hhvm.server.port = 9000hhvm.server.type = fastcgihhvm.server.default_document = index.phphhvm.log.use_log_file = truehhvm.log.file = /var/log/hhvm/error.loghhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc

HHVM 실행은 가볍게/etc/init.d/hhvm start

Apache Httpd 에서ProxyPassMatch ^/(.+\.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/www 경로 /$1

PHP + Zend PHP +HHVM

MariaDB

Load Balancer

RedisSesseion 공유