SlideShare a Scribd company logo
HHVM on CentOS6
本番運用の
うまみとつらみ
HHVM処理系の構築・運用に関する話です
Hack言語は出てきません...
自己紹介
• 桑折 慧(KORI Kei)
• @2k0ri
• 株式会社オークファン 新卒2年目
• インフラ・運用、DevOps(1年半)
• 分析基盤開発に異動(4ヶ月目)
HHVM導入の経緯
• 先輩マネージャー「HHVMにしたら超早くなった」
• Ubuntu+HHVMにレガシーシステムを引っ越しただけで
チューニングが完了した
• リビルドプロジェクトが立ち上がる
• Ubuntu換装はハードルが高いが
HHVMへの換装はワンチャンあるのでは...?
導入サービス
aucfan.com
1. スマートフォン版
2. PC版の一部ページ(落札相場検索、商品詳細)
• CentOS 6.7, nginx, HHVM 3.5.0
• FuelPHP 1.7.2
3. オウンドメディア(オクトピ)
• Wordpress
それぞれが単独のアプリケーションとして稼働
最上流のnginxでURL/UAを元にリバースプロキシ
インストールまで
• FB社の公式パッケージ提供はdpkg形式のみ
• CentOS6向けのrpmは下記の野良リポジトリがある
• hop5(HHVM 3.0.1)
• gleez(HHVM 3.5.0)
インストールまで
• gleezのお粗末なところをchefで吸収
• mysql周辺の2バージョンにまたがる依存に追随
• remiから消失している依存パッケージを別途調達
• initスクリプトを修正
chefコード片/.iniのgist: https://git.io/vzWOO
開発機への工夫
• 言語はPHPのまま、処理系のみをHHVMに移行する計画
• 開発機(Vagrant)にはPHP5.6(php-fpm)とHHVMを両方構築
• バーチャルホストで別のfastcgiソケットに着信
• 処理系固有のバグを踏んでもすぐに戻れるように
http://php.dev.vagrant.aucfan.com/...
http://hhvm.dev.vagrant.aucfan.com/...
pros
うまみ
早い
2021ms -> 907ms
611ms -> 354ms
230ms -> 100ms
PHPコードに手を加える必要がない
開発リソースを使わず、インフラのみで高速化できる
いざとなれば一手戻れる(Hackに移行しない限り)
ピーク時LAが2/3ほどに
→1台での同時リクエスト数がアップ
→コスト減
cons
つらみ
Xdebug対応が不十分
• xdebug.オプションはある
• が、3.5.0とPHPStormでは動作せず
すごいレアケースでパーサの挙動が違った
<?php//echo "sample" ;?>
• ↑ PHP works, HHVM returns syntax error
• PHPのやわらかさに改めて驚かされる
ログが滅多に出てこない
• PHPより頻繁に画面が真っ白なまま
• hhvm.log.level=Verboseでもエラーログが無言のケースが
多々ある
• 今でも極稀に原因不明のスタックが起きる
memcachedを使うとhphp_invoke(500)
• 原因不明のセグメンテーション違反
• HHVMアップデートの道は閉ざされているので
FuelのCacheドライバを変更
• memcached → Redis
• OS/バージョン固有のバグであって欲しい
• FB社はmemcachedヘビーユーザだし...
12回目のアクセスから500になる
• FuelPHP × php-pdo × HHVMで発生
• FuelのDBドライバがJITにかけられた途端動かなくなった
• fuel/core/classes/database/connection.php L60付近
+ // https://github.com/facebook/hhvm/issues/2011#issuecomment-58767200
+ settype($name, 'string');
if ( ! $writable and ($readonly = Config::get('db.'.$name.'.readonly', false)))
{
! isset(static::$_readonly[$name]) and static::$_readonly[$name] = Arr::get($readonly, array_rand($readonly));
惜しいところ
hhvm.repo.authoritative
• PHPファイル全部を事前(AOT)コンパイル、高速化するオプシ
ョン
• FBのチューニングマニュアルにはコレで20%改善とある
• FuelPHP1.7.2でやろうとするとセグメンテーション違反に
• 惜しい
今後の方針
結局...
• HHVMのメリットを最大限享受するにはCentOS6はやっぱり
もったいない
• 最新バージョンを使えないのは脆弱性対策としても不安
• 後述の理由もある
• →Ubuntu移設進行中
いざとなれば一手戻れる(Hackに移行してなければ)
HHVM -> PHP5.6の可能性
• 運用ノウハウがネットに少ないのがやはり一番の不安材料
• どうしようもないバグにぶつかった時に
nginx1行で振り戻せる状態にしておく
hhvm.php7.all
• HHVMのphp7シンタックス対応オプション(3.11.0~)
• コード・処理系両面でphp7化を視野に
→HHVM <-> PHP7ワンチャンあるのでは...?
まとめ
• PHP on HHVMは結構お得でした
• いざとなれば戻れる(PHP7以降も?)
• 情報は少ない、地雷は踏み抜かれる
• FuelPHPでなければもう少し楽かもしれません
ご清聴ありがとうございました

More Related Content

PDF
HTML5 Experts.jp パフォーマンス・チューニング
PPTX
PHP7ではなくHack/HHVMを選ぶ理由
PPTX
FuelPHP × HHVM サービス開発事例
PPTX
人の言うことを簡単に信じるな!
PPTX
マークアップの作業効率をあげよう!
PDF
PHP カンファレンス福岡 2017 参加報告
PPTX
PHP7がリリースされたいま、 改めてHackについて考える。
PPTX
Hack+FuelPHPによるWebサービス開発
HTML5 Experts.jp パフォーマンス・チューニング
PHP7ではなくHack/HHVMを選ぶ理由
FuelPHP × HHVM サービス開発事例
人の言うことを簡単に信じるな!
マークアップの作業効率をあげよう!
PHP カンファレンス福岡 2017 参加報告
PHP7がリリースされたいま、 改めてHackについて考える。
Hack+FuelPHPによるWebサービス開発

What's hot (20)

PPTX
Hack言語に賭けたチームの話
PDF
まだタスクランナー使っていないって本当(マジ)? 仕事に対する効率化意識向上のための gulp ハンズオン : Wordcamp tokyo 2015
PDF
エンタープライズパッケージを利用しました〜HTML Exporter編〜
PDF
業務系WebアプリケーションがStrutsから旅立つ日
PPTX
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
PDF
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
PDF
第4回concrete5京都勉強会 〜まだまだ遅くない!基礎からガッチリ使いこなそうconcrete5〜
PDF
OWIN - .NETにおけるPSGI -
PDF
安全なテーマ作成のためのPHPの知識
PPTX
案件で使えるプラグイン特集
PDF
CLR/H#74 LT IT勉強会発表用イチオシツール
PDF
チラ見せ♡ナイト@20150410 LT公開用
PDF
魅せるPowerPointビジネスプレゼン【入門編】先生:河合 浩之
PDF
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
PDF
ディレクタ兼エンジニアの仕事@Creators MeetUp #36
PDF
非エンジニアカンファレンス資料の抜粋
PPTX
Git入門
PDF
アプリ開発を効率化する 方法あれこれ
PDF
C#でアプリを作ってみよう! #ngtnet
PDF
Backlog初心者の学習のためあえて課題を「たらい回し」してみた - JBUG福岡 #10 Backlogの使い方に悩んでいる方へ
Hack言語に賭けたチームの話
まだタスクランナー使っていないって本当(マジ)? 仕事に対する効率化意識向上のための gulp ハンズオン : Wordcamp tokyo 2015
エンタープライズパッケージを利用しました〜HTML Exporter編〜
業務系WebアプリケーションがStrutsから旅立つ日
日本で一番PHPのシステムをテストしている手動テスターが思うところ:PHPカンファレンス福岡
非エンジニアのためのこれだけは押さえておきたいWEBサービスの基礎技術
第4回concrete5京都勉強会 〜まだまだ遅くない!基礎からガッチリ使いこなそうconcrete5〜
OWIN - .NETにおけるPSGI -
安全なテーマ作成のためのPHPの知識
案件で使えるプラグイン特集
CLR/H#74 LT IT勉強会発表用イチオシツール
チラ見せ♡ナイト@20150410 LT公開用
魅せるPowerPointビジネスプレゼン【入門編】先生:河合 浩之
デザイナーのためのはじめてPHP ~Codex、どう使いこなす?~
ディレクタ兼エンジニアの仕事@Creators MeetUp #36
非エンジニアカンファレンス資料の抜粋
Git入門
アプリ開発を効率化する 方法あれこれ
C#でアプリを作ってみよう! #ngtnet
Backlog初心者の学習のためあえて課題を「たらい回し」してみた - JBUG福岡 #10 Backlogの使い方に悩んでいる方へ
Ad

Viewers also liked (20)

PDF
超高速WordPress ~ PHP7 vs HHVM vs PHP5.6
PDF
OSSで楽に作るGo言語クライアントツール
PDF
Fintech研究所『2016年振り返り』
PPTX
Why choose Hack/HHVM over PHP7
PPTX
PHPバージョン別応答速度比較
PDF
安全なPHPアプリケーションの作り方2013
PPTX
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
PDF
[Azure Deep Dive] APIエコノミーに向けて ~Azure API ManagementによるAPIの公開と管理~ (2016/12/16)
PPTX
セキュアコーディング方法論再構築の試み
PPTX
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
PPTX
「技術のインテリジェンスを創る」をどうやって実現するか
PDF
figo at API Days 2016 in Paris
PDF
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
PDF
Memcache basics on google app engine
PDF
MySQLアンチパターン
PDF
認定スクラムマスター研修に行ってきました
PDF
OAuth2.0によるWeb APIの保護
PDF
Presto - Hadoop Conference Japan 2014
PDF
170311 JAWS days 2017 fintech
PDF
Introducing Ballerina
超高速WordPress ~ PHP7 vs HHVM vs PHP5.6
OSSで楽に作るGo言語クライアントツール
Fintech研究所『2016年振り返り』
Why choose Hack/HHVM over PHP7
PHPバージョン別応答速度比較
安全なPHPアプリケーションの作り方2013
MariaDB+GaleraClusterの運用事例(MySQL勉強会2016-01-28)
[Azure Deep Dive] APIエコノミーに向けて ~Azure API ManagementによるAPIの公開と管理~ (2016/12/16)
セキュアコーディング方法論再構築の試み
Neo4j の「データ操作プログラミング」から 「ビジュアライズ」まで
「技術のインテリジェンスを創る」をどうやって実現するか
figo at API Days 2016 in Paris
AWSマネージドサービスをフル活用したヘルスケアIoTプラットフォーム
Memcache basics on google app engine
MySQLアンチパターン
認定スクラムマスター研修に行ってきました
OAuth2.0によるWeb APIの保護
Presto - Hadoop Conference Japan 2014
170311 JAWS days 2017 fintech
Introducing Ballerina
Ad

Similar to HHVM on CentOS6 本番運用のうまみとつらみ (20)

PPTX
Nutanixを導入してみて思ったこと(仮)
PPTX
エンジニアという職業について
PPTX
PHPで並列処理する ライブラリを作った
PDF
Apache Hiveの今とこれから - 2016
PDF
リリース対象どーれだっ??
PDF
配布用Cacti running with cherokee
PDF
HP Helion 標準搭載!! OpenStack TripleO解説課題 – OpenStack最新情報セミナー 2015年2月
PDF
Linux+Xenによるサーバ仮想化構築事例セミナー
PDF
あなたの安心を高速に守る Container-based CI
PDF
HBase Meetup Tokyo Summer 2015 #hbasejp
PDF
TranslimitのChatOps事情と愉快なbotたち
PDF
8時間耐久 PHP構築の教室
PDF
Fn project爆誕
PDF
Heroku で作る
スケーラブルな 
PHP アプリケーション
PDF
ネットワン様講演 OpenStack最新情報セミナー 2014年8月
PPTX
PHPべんちまーく
PDF
JSUG20171027-spfingboot-k8s-ocp
PPTX
cluster-monitoringで困ったこと学んだこと
PDF
PowerShell を使用した Hyper-V の管理
PDF
PHP カンファレンス福岡 参加報告
Nutanixを導入してみて思ったこと(仮)
エンジニアという職業について
PHPで並列処理する ライブラリを作った
Apache Hiveの今とこれから - 2016
リリース対象どーれだっ??
配布用Cacti running with cherokee
HP Helion 標準搭載!! OpenStack TripleO解説課題 – OpenStack最新情報セミナー 2015年2月
Linux+Xenによるサーバ仮想化構築事例セミナー
あなたの安心を高速に守る Container-based CI
HBase Meetup Tokyo Summer 2015 #hbasejp
TranslimitのChatOps事情と愉快なbotたち
8時間耐久 PHP構築の教室
Fn project爆誕
Heroku で作る
スケーラブルな 
PHP アプリケーション
ネットワン様講演 OpenStack最新情報セミナー 2014年8月
PHPべんちまーく
JSUG20171027-spfingboot-k8s-ocp
cluster-monitoringで困ったこと学んだこと
PowerShell を使用した Hyper-V の管理
PHP カンファレンス福岡 参加報告

HHVM on CentOS6 本番運用のうまみとつらみ