herokuでhhvmを使ってWordPressを動かしてみる
herokuが正式にPHPへの対応を発表し、hhvm環境を提供したとのことです。
http://www.publickey1.jp/blog/14/herokuphpfacebookhiphop_vm.html
hhvmについては、以前の記事でパフォーマンスを調べてみたことがあったので、今回はheroku上にWordPressをインストールして調査してみたいと思います。
WordPressをインストール
標準のWordPressを使用しMySQL(ClearDB)で試してみます。
ClearDBについては、こちらをご参考下さい。
※ClearDBを使用するには、クレジットカードの登録が必要です。
まずは、herokuにアプリケーションを作成します。
$ heroku create
mighty-hoge-xxxxというアプリケーションが作成されたので、cloneしてきます。
(アプリケーション名は適宜読み替えて下さい。)
$ git clone git@heroku.com:mighty-hoge-xxxx.git
mighty-hoge-xxxxディレクトリが作成されるので、この中にWordPressを解凍します。
$ wget http://ja.wordpress.org/wordpress-3.9-ja.zip $ unzip wordpress-3.9-ja.zip $ mv wordpress/* mighty-hoge-xxxx/
ClearDBのadd-onをインストールします。
$ cd mighty-hoge-xxxx $ heroku addons:add cleardb
データベース接続情報の設定
データベースの接続情報を取得します。
$ heroku config | grep CLEARDB_DATABASE_URL
CLEARDB_DATABASE_URLの内容が表示されるので、適宜情報を抜き出してwp-config.phpに記載します。
CLEARDB_DATABASE_URLのフォーマットは下記のような感じです。
CLEARDB_DATABASE_URL: mysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}/{DB_NAME}?reconnect=true
git pushする
ひとまず、composer.jsonを下記のように作成します。
hhvmを使用しない環境です。
{ "require": { "ext-mbstring": "*", "ext-gd": "*" } }
git でcommit、pushしておきます。
$ git add ./ $ git commit -m 'first commit' $ git push origin master
http://mighty-hoge-xxxx.herokuapp.com/
にアクセスすると見慣れたWordPressの初期設定画面が表示されるはず。です。
あとは、WordPressの初期設定を行って、試しに確認用の記事を投稿してみてください。
hhvmを有効にする
composer.jsonを下記のように修正して、commit、pushします。
{ "require": { "hhvm": "3.0.1" } }
ブラウザでアクセスしてみると、同じようにWordpressの画面が表示される、はず。です。
dashboardで確認してみると、確かにhhvm上で動作しています。
投稿や、画像のアップロードも問題無さそうです!
が、基本的にherokuではデプロイ毎にgitで管理されていないファイルは消えてしまうようです。
そのあたりの対応は、下記のページをご参考下さい。
http://blog.mah-lab.com/2013/05/04/wordpress-on-heroku-file-upload/
ベンチマークを取ってみる
早速ベンチマークを取ってみます。
方法は、以前と同様にabでやってみます。
通常編
This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking mighty-hoge-xxxx.herokuapp.com (be patient).....done Server Software: Apache/2.4.9 Server Hostname: mighty-hoge-xxxx.herokuapp.com Server Port: 80 Document Path: /?p=31 Document Length: 11589 bytes Concurrency Level: 10 Time taken for tests: 12.638 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1189500 bytes HTML transferred: 1158900 bytes Requests per second: 7.91 [#/sec] (mean) Time per request: 1263.753 [ms] (mean) Time per request: 126.375 [ms] (mean, across all concurrent requests) Transfer rate: 91.92 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.3 0 1 Processing: 653 1240 538.3 1065 2841 Waiting: 604 1176 521.8 1000 2676 Total: 653 1241 538.4 1066 2842 Percentage of the requests served within a certain time (ms) 50% 1066 66% 1322 75% 1584 80% 1707 90% 2199 95% 2255 98% 2357 99% 2842 100% 2842 (longest request)
hhvm編
This is ApacheBench, Version 2.3 <$Revision: 655654 $> Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache Software Foundation, http://www.apache.org/ Benchmarking mighty-hoge-xxxx.herokuapp.com (be patient).....done Server Software: Apache/2.4.9 Server Hostname: mighty-hoge-xxxx.herokuapp.com Server Port: 80 Document Path: /?p=31 Document Length: 11589 bytes Concurrency Level: 10 Time taken for tests: 9.081 seconds Complete requests: 100 Failed requests: 0 Write errors: 0 Total transferred: 1189592 bytes HTML transferred: 1158900 bytes Requests per second: 11.01 [#/sec] (mean) Time per request: 908.117 [ms] (mean) Time per request: 90.812 [ms] (mean, across all concurrent requests) Transfer rate: 127.93 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.1 0 0 Processing: 559 872 198.4 876 2314 Waiting: 558 863 155.4 869 1634 Total: 560 872 198.5 876 2314 Percentage of the requests served within a certain time (ms) 50% 876 66% 913 75% 943 80% 967 90% 1035 95% 1060 98% 1256 99% 2314 100% 2314 (longest request)
1.3倍程?
何回かトライしたものの結構数値のブレがあったので、「ぼちぼち速くなったんじゃない?」ぐらいの感じで。
あまり厳密にテストすると、herokuサーバー(aws?)へ負荷をかけまくってしまうので、止めておきます。
結果
heroku + hhvmで、WordPressはひとまずは動きそうな感じです。
かなり尖った環境かと思うので、全てのWordPressの機能が問題無く使えるかは分かりませんが…
パフォーマンスも若干向上してそうですが、あまり明確な差は感じられませんでした。
んー、なんか設定等でミスってたかな…
ただ、hhvmを使用した実例がどんどん出てくるかと思うので、様子を見て使ってみるのもおもしろいかと思います。
運用中にhhvmに乗り換えると、投稿した画像がどっかに行くかもしれないので、注意です!
台北に遊びに行ってきた話
GWで台北に遊びに行ってきました。今回で台北は7回目ぐらいです。
旅行ブログ的なものは書いたことが無いんですが、ネット関連の情報をまとめてみました。
通信環境
iOS7のバックグラウンド通信の仕様が良く分からんです。
国内では気にしませんが、海外でしらんうちに通信されるのは怖い…SoftBankの海外パケホの上限は¥2980みたいです。
それなら、海外用Wifi端末をレンタルした方が安いんじゃないかと。
バックグラウンド通信に怯えなくて良いし。ということで、イモトのwifiをレンタルしました。
最初は宅急便受取・空港での返却のつもりだったのですが、宅急便が前日着ということが発覚。受け取れなかったらどうすんの?ということで、受け取りも空港に変更しました。
1日680円(台湾の場合)のようなので、かなり割安のはず。
ただし直近3日間で400Mの上限設定があるようです。
ホテル
サンルートホテル 台北をネットから予約。
前に利用したことがあるので、ホテル周辺もだいたい分かるし、日本系のホテルなのでなんとなく安心感があります。
ちなみに地下は大戸屋。昨年の夏に全室無線LANに対応したらしいです。これはかなり心強かった!
航空券
役立ったアプリやサイト
- taiwanyo 台湾遊
- 食べログ的アプリです。
- 自分の周りの旨い店などを教えてくれます。
- 乗換案内 台北
- 乗り換え案内 + 路線図 + 駅ごとの情報
- 基本的に地下鉄で移動したので、なんだかんだ良く使いました。
- Google Maps
- とにかく必須。今どこにいて、地下鉄の最寄り駅がどこなのか、日本で使う時と変わらないぐらいの情報量があります。
- タクシーに乗る時も、変に遠回りしてたりするとすぐに分かって便利です。
- taipei navi
- 台北の観光情報が詰まっているサイト。オプショナルツアーの予約も出来ます。
海外旅行保険
- 旅行前日まで加入を忘れてました。
- ネットで当日でも加入出来るらしいので利用してみました。
検索で一番上に出てきた「損保ジャパン」の「off!」というやつに加入。 - ファミリータイプ(3人分)で¥4200程でした。
なんとなく割安な印象です。
Uber
Uberについてはこちらの記事をご参考下さい…
- 台北でもUber利用可能です。
- Uberを立ち上げると、だいたい4台程度が動いている様子でした。
- ひとまず呼んでみたところ、すぐにドライバーから自分のiPhoneに電話かかってきました。
「中国語しゃべれるか?」と聞かれたので、「英語をちょっと」と答えると「OK、ちょっと待ってな!」的なことを言われて電話が切れました。 - 迎車をお願いすると、頼んだ車が今どこを走っているのか、また画面下部にドライバーの顔写真、車種、ナンバーが表示されます。
車種はなんとベンツ。ええですね。 - ただ、7分で到着と表示されてましたが、20分ぐらいかかりました…
道の混み具合とかもあるかと思うんですが、いつもこんな感じなのか、たまたまなのか… しばらく待っていると、表示されていたナンバーのベンツが到着。
運転手さんはとても親切で、土砂降りの雨だったのに、出てきてくれてドアを開けてくれました。子供がいたのでかなり助かりました。
感謝。料金メーターは付いていませんでした。
まあ、料金についてはWebページに掲載されているので、だいたいの料金は把握出来るかと思います。ただ、請求書が来るまでちゃんとした料金が分からないのでドキドキしました。結局、請求額は普通のタクシーの1.5倍ぐらいでした。
ベンツ&運転手さんのホスピタリティーの極上さで、次も利用したいと思いました!
帰国後の感想
エクスコムのwifi端末は、2時間ほどしかバッテリーが持たないらしいです。
なので、ネットを使うときだけ端末の電源をONして使い終わったらOFFしてました。ただこの使い方だと、ちょっと調べたい時とか、めんどかったです。
wifi端末に合ったUSBケーブルを持っていけば良かった…MySoftbankから請求予定額を見ると「海外パケットし放題」が5,000円強で記載されていました。
ちょこちょことキャリア経由で接続してたからかと思いますが、案外高額になってしまったな、という印象です。
おまけ - VISAデビットカードで現金を引き出してみた
会社用MacBookAirで使っているアプリ達
よくMacに入れてるアプリの記事を見かけるので、自分も乗っかってみます。
会社ではMacBookAir 11"を使用しているのですが、これに入れてよく使っているアプリ達です。
環境的には、自分以外ほぼWindowsです。なので、Windowsと仲良くするというのが前提だったりします。
有料アプリ
Microsoft Office 2011 for Mac
http://www.microsoft.com/japan/mac
お決まりのOffice。 会社では必須です。Byword
Markdownエディタです。自動インデント等、エディタとしての機能が充実しています。 以前記事を書かせて頂いたのですが、最近は、会議や勉強会のメモをBywordで、手順書など後で変更する可能性のあるものはwri.peで書いています。
phpStorm
http://www.jetbrains.com/phpstorm/
PHPerとしては持っていたいIDE。開発環境としても優秀ですが、GitやSubversionのクライアントとしても分かりやすい表示で良い感じです。
Versions
会社はSubversion。クライアントが必要なんで購入したんですが、WindowsのToitoiseSVNを経験すると、やはり使いにくい感が…。なので「オススメ」ではないかもです。
単純なcommitやupdateする時は、ターミナルを立ち上げてコマンドを打った方が早いです。
Macで一番良いSubversionクライアントは、案外phpStormかもしれない…
定番アプリ
iTerm2
標準のターミナルに変わる定番アプリです。
RemoteDesktopConnection
http://www.microsoft.com/ja-jp/download/details.aspx?id=18140
Windows Serverの管理業務もあるので必須になっています。
GenyMotion
Androidのエミューレーション動作環境です。 実機を持ってないので、これで取り敢えずAndroid版の動作を見たりしてます。
Seaquel Pro
MySQLクライアントです。日本語化もされています。 UIも洗練されていて、今のところ不自由は無いです。 個人的には、インデックスを作成しやすかったり、CREATE文をすぐに取り出せたりするところが気に入ってます。
VNC Viewer
社内にちょこちょこあるデスクトップが立ち上がっているLinuxに接続する時に必要になります。
物理マシンにLinuxを入れる時はデスクトップもインストールするようにしてます。深い意味は無いですが、使いやすいかな、と。
ユーティリティ系アプリ
Fluid
Webページをアプリ化するやつです。Chatworkとwri.peをアプリ化して使ってます。
Doorman
http://mr-fridge.de/software/doorman/index.php
パスワード生成アプリです。アイコンもイケてます。
Platypus
http://sveinbjorn.org/platypus
seleniumを使ったpythonスクリプトをアプリ化して、設定ファイルをD&Dしたらchromeが立ち上がってゴニョゴニョしてくれるという使い方をしています。
cd to
https://github.com/jbtule/cdto
finderの現在開いているディレクトリにcdしてターミナルを立ち上げてくれます。iTerm2も対応しています。
Finderのツールバーには、commandを押しながらD&Dすれば、追加出来るみたいです。 http://niwatako.info/20140402/article1417.html