Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기

502 views

Published on

HHVM에서 기존 PHP로 만든 어플리케이션을 서비스한 경험을 공유합니다.

Published in: Technology
  • Be the first to comment

XECon2015 :: [3-1] 용영환 - HHVM 서비스 적용기

  1. 1. 용 영 환 PHPKorea 마켓컬리 옐로모바일 정글피플 네이버 태터앤컴퍼니 카페24 xenonix.com
  2. 2. HHVM 서비스 적용은 정글피플 개발본부 팀원들과 함께 했습니다.
  3. 3. HHVM를 고민하게 된 이유
  4. 4. 인터넷 서비스를 보다 원활하게 제공하는 방법
  5. 5. 1. 서버 사양을 좋게 한다. 2. 서버 수를 늘린다. 3. 서버 효율을 높인다.
  6. 6. 3. 서버를 보다 효율적으로 사용하고 싶었다.
  7. 7. 비용 이용자수
  8. 8. 서버 효율, 결국 언젠가는 고민해야 할 문제.
  9. 9. Hack Lang과 HHVM, 페이스북에서 사용하고 있다는데
  10. 10. Hack을 사용하지 않은 이유
  11. 11. 1. 언어적으로는 매우 좋으나 아직 성숙되지 않았다. 2. 맘에 드는 IDE가 아직 없다. 3. 개발환경 구축하기 어렵다.
  12. 12. 그런데, HHVM은 적용한 이유
  13. 13. 1. PHP 5.5 이상을 100% 지원 2. 개발환경을 바꿀 필요 없다. 3. 성능이 좋다.
  14. 14. FastCGI support JIT ( just-in-time ) Compilation
  15. 15. https://www.chriswiegman.com/2011/10/fastcgi-vs-suphp-vs-cgi-vs-mod_php-dso/
  16. 16. Codeigniter, laravel, phpunit 등 100% 구동 http://hhvm.com/frameworks/
  17. 17. 그럼, 우리는 HHVM을 얼마나 신뢰할 수 있는가
  18. 18. PHP + Zend PHP +HHVM DBMS Load Balancer
  19. 19. 그런데!!!
  20. 20. 공식 Prebuild Package 가 아직은 적다. Ubuntu 14.04 / 14.10 / 15.04 Debian 7 / 8 https://github.com/facebook/hhvm/wiki/Prebuilt-Packages-for-HHVM
  21. 21. 그래서, 이 외의 OS에서 구동하려면 직접 컴파일을 해야 한다. https://github.com/facebook/hhvm/wiki/Building%20and%20Installing%20HHVM
  22. 22. 컴파일이 오래 걸리긴 하지만 어렵지 않게 가능합니다.
  23. 23. 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/
  24. 24. PHP 성능 테스트
  25. 25. HHVM성능 테스트
  26. 26. Session handler Redis 와 memcached 지원
  27. 27. /etc/hhvm 아래에 php.ini server.ini
  28. 28. php.ini ; php options ;session.save_handler = files ;session.save_path = /var/lib/php5 ;session.gc_maxlifetime = 1440 session.save_handler = redis session.save_path = “xxx.xxx.xxx.xxx:6379" session.gc_maxlifetime = 1440 ; hhvm specific hhvm.log.level = Warning hhvm.log.always_log_unhandled_exceptions = true hhvm.log.runtime_error_reporting_level = 8191 hhvm.mysql.typed_results = false
  29. 29. server.ini ; php options pid = /var/run/hhvm/pid ; hhvm specific hhvm.server.port = 9000 hhvm.server.type = fastcgi hhvm.server.default_document = index.php hhvm.log.use_log_file = true hhvm.log.file = /var/log/hhvm/error.log hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
  30. 30. HHVM 실행은 가볍게 /etc/init.d/hhvm start
  31. 31. Apache Httpd 에서 ProxyPassMatch ^/(.+.(hh|php)(/.*)?)$ fcgi://127.0.0.1:9000/www경로/$1
  32. 32. PHP + Zend PHP +HHVM MariaDB Load Balancer Redis Sesseion 공유
  33. 33. young@phpk.org

×