Drupalのパフォーマンスを丸裸にするツール(XHProfの導入)
公開日:
:
最終更新日:2016/03/30
programing
ここ1ヶ月ほどオープンソースCMSのDrupalをあれこれ触っているのですが、まぁびっくりするぐらい日本語の情報が無い!!ので、自分がやってきた足跡を少しでも残しておこうかと書いてみます。 今回はDrupalが入っているサーバにXHProfを導入して、処理結果のプロファイルをDrupalの画面から参照するところまでです。処理結果の確認方法やパフォーマンス・チューニングについては、別途書いてみたいですね。
なんで、DrupalでXHProf?
パフォーマンスを追求しないとイカンのです。 現在、絶賛Drupalで自社サービスの開発中なのですが、本番相当のテストデータを入れてみると、とんでもなく遅い処理が散見される現状。手作業であれこれ見ててもいいんだけれど、なんか効率的にできないかといろいろ探した結果、グラフが素敵そうなXHProfを導入してみることに。
XHProfとは
XHProfの画像検索結果 このグラフィカルな感じだけでもいれてもええんやないやろか。という妙な期待感が沸き立ちますね。はい。 XHProfは、facebook作成のPHPプロファイリングツール。似たようなツールにxdebugのprofilerもあるけれど、XHProfは開発元がfacebookらしく、取得できるプロファイルやグラフィカルな処理の描画などがウリとのこと。まぁ直接の動機は面白そうだからちょっといれてみたっという軽いノリです。
XHProfの導入
以下コマンドの実施環境はAmazonLinux前提で。
XHProfのインストール
$sudo pecl install xhprof Failed to download pecl/xhprof within preferred state “stable”, latest release is version 0.9.3, stability “beta”, use “channel://pecl.php.net/xhprof-0.9.3” to install install failed
最新版はベータ版だと怒られました。まぁいいよβ版で。
$sudo pecl install xhprof-beta
すんなり入ればOK
graphvizのインストール
これがないと、XHProf最大のウリのグラフが表示されないので、入れておきます。
$sudo yum install graphviz
xhprof用の設定ファイルを定義
XHProf用の定義ファイルを作成
$sudo vi /etc/php.d/xhprof.ini
ファイル内にこちらを追記
[xhprof] extension=xhprof.so xhprof.output_dir=”/tmp/xhprof”
編集完了後後apacheを再起動
$sudo service httpd restart
phpinfo結果にXHProfが表示されていたらOK
$php -i | grep xhprof /etc/php.d/xhprof.ini, xhprof xhprof => 0.9.3 OLDPWD => /tmp/xhprof PWD => /tmp/xhprof _SERVER[“OLDPWD”] => /tmp/xhprof _SERVER[“PWD”] => /tmp/xhprof
プロファイラーの出力先ディレクトリ作成および権限設定
apachがプロファイラーを出力するディレクトリを作成し、権限を付与
$mkdir /tmp/xhprof $chmod 777 /tmp/xhprof
これで、XHProfの設定自体は終了でございます。
Drupal設定
自分の環境のDrupalのバージョンは7.21です。 XHProfで実際にプロファイルを取得するには、計測対象のコードにプロファイル取得開始と終了のスクリプトを埋め込む必要がある。やねんけど、そこはDrupal。それ用のモジュールも用意されているので使います。 XHProfをDrupalでみるためのモジュールは主に2つ ・Devel https://drupal.org/project/devel ・XHProf https://drupal.org/project/xhprofDevelモジュールは総合開発用モジュールらしく、XHProfの取得以外にもいろんな開発用の便利機能があるとの事。最初はこっちを使おうと思ったんだけど。 なんということでしょう。 自分の環境ではDevelモジュールを有効化している状態でViewsを編集しようとすると、軒並みAjaxエラーが発生して、編集できないという、悲しいことが発生しました。もう原因追求もめんどくさいので、機能が絞られていて名前もズバリなXHProfモジュールを導入することに。Develモジュールでの設定方法も簡単なので、お好きな方をお使い下さい。
XHProfモジュールのインストール
で、ここで一つ注意点が。このモジュール正式バージョンはCallgraph(プロファイル情報のグラフ表示)に対応していない(2013年8月4日時点)ので、Callgraph対応版のXHProfモジュールをインストールする必要があります。 ・Callgraph support https://drupal.org/node/1470740 対応版のソースはこちらから https://github.com/arthur24b6/Drupal-XHProf このモジュール自体、ある程度枯れているかなと勝手に判断して、この対応版のソースを使うことに。Drupalにインストールし、モジュール一覧から有効化設定。Adminメニューの[環境設定]→[開発]→[XHProf settings]。 ここで設定したら、あとは各画面(モジュールの権限設定による)の下部のXHProf outputリンクを押下で、無事プロファイルが確認可能。でた!!でましたよ!!
Call graphをクリックでグラフも確認OK。
ツカレタ。もう、とりあえず出ただけで満足。分析はまた今度・・・(´・ω・`) Drupal特有の着目点というか注意しなければならない点は、以下のリンクが参考になりそう。 ・Profiling Drupal with XHProf http://msonnabaum.github.io/xhprof-presentation/#1
というわけで
現在構築中のサイトで、コレを使うことにより、癌となっていたパフォーマンス問題がようやく解決したりして、その威力を感じています。また、実際の使い方については、別途記事にしたいなと思っています。
それでは、今日はこのへんで。
PC-記事下-サブ(Amazon)
programingの記事一覧
ブログ主について
関連記事
-
-
Linux初心者から抜け出すための最適本「シェルプログラミング実用テクニック」
しばらく、LinuxやらMacのターミナル触ってると、こんなことを感じる人も多いのでは。 「c
-
-
技術評論社の無料小冊子「電脳会議」がITエンジニアにおススメ
この、電脳時代!!音楽でも本でもなんでもかんでも電子化されている昨今だけど、技術評論社が発行してい
-
-
応答速度28.8倍。WordPressをApacheからNginxに移行して感じたブログ運営
昔からやろうやろうと思って出来ていなかった、このブログ(Wordpress)のWebサーバをAp
-
-
WordPressの任意の記事にだけ目次をつける方法(Table of Contents使用)
ブロガーの皆さん、記事に目次つけてますか? 「つけたい日もあれば、つけたくない日もある」
-
-
10分で設定完了。WordPressに監視サービスNewRelicを無料で導入してみた
アカウント登録からはじめて設定完了まで10分程度。恐ろしいほど手軽に導入できるくせに、情報量が半
-
-
日本初のDrupalイベントでスピーカー登壇してきました in Drupal Camp Japan Kyoto
春うららかな4月の京都。日本初のDrupalCampというイベントで、光栄にもスピーカー登壇して
-
-
サイトイメージががらりと変わるWebフォントを導入してみた。簡単で効果はでかい。使用前後のイメージを添えて。
元旦の朝、ガキ使の録画を見るという重大なミッションが残されているハマコー(@hamako9999
-
-
フラットデザインな配色やレイアウトを参考にする時におすすめのページ。CategoryやColorShemeでの分類が便利
最近ようやく、WordPressで自分が採用しているテーマStingerのデフォルト状態から、デ
-
-
オンラインプログラミング学習の雄、Codecademyのスマフォアプリが出た。その狙いは?
以前から激賞しまくっているCodecademy。 Codecademyがプログラミング学習に最
-
-
WordPressのStingerを自由自在にカスタマイズするための8つの修行
Stinger Advent Calendar 2013、19日目担当のハマコー(@hamako9
a8.net DMMmobile
- PREV
- 素敵な科学本「素数ゼミの謎」
- NEXT
- 京都一周トレイル北山西部(二ノ瀬~嵐山)酷暑でわっしょい