Drupalのパフォーマンスを丸裸にするツール(XHProfの導入)

公開日: : 最終更新日:2016/03/30 programing

ここ1ヶ月ほどオープンソースCMSのDrupalをあれこれ触っているのですが、まぁびっくりするぐらい日本語の情報が無い!!ので、自分がやってきた足跡を少しでも残しておこうかと書いてみます。 今回はDrupalが入っているサーバにXHProfを導入して、処理結果のプロファイルをDrupalの画面から参照するところまでです。処理結果の確認方法やパフォーマンス・チューニングについては、別途書いてみたいですね。

 

なんで、DrupalでXHProf?

パフォーマンスを追求しないとイカンのです。 現在、絶賛Drupalで自社サービスの開発中なのですが、本番相当のテストデータを入れてみると、とんでもなく遅い処理が散見される現状。手作業であれこれ見ててもいいんだけれど、なんか効率的にできないかといろいろ探した結果、グラフが素敵そうなXHProfを導入してみることに。  

XHProfとは

XHProfの画像検索結果 a06e700659f5cd7a01b94c50f847c18bこのグラフィカルな感じだけでもいれてもええんやないやろか。という妙な期待感が沸き立ちますね。はい。 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]。 13227c270780cc998856ffd39629a4bb   ここで設定したら、あとは各画面(モジュールの権限設定による)の下部のXHProf outputリンクを押下で、無事プロファイルが確認可能。でた!!でましたよ!!   WS000048   Call graphをクリックでグラフも確認OK。   callgraph ツカレタ。もう、とりあえず出ただけで満足。分析はまた今度・・・(´・ω・`) Drupal特有の着目点というか注意しなければならない点は、以下のリンクが参考になりそう。 ・Profiling Drupal with XHProf http://msonnabaum.github.io/xhprof-presentation/#1 

 

というわけで

現在構築中のサイトで、コレを使うことにより、癌となっていたパフォーマンス問題がようやく解決したりして、その威力を感じています。また、実際の使い方については、別途記事にしたいなと思っています。

それでは、今日はこのへんで。

PC-記事下-サブ(Amazon)


  • このエントリーをはてなブックマークに追加
  • Pocket
  • 653
    follow us in feedly

ブログ主について

ハマコー(@hamako9999
hamako9999
ブログとtwitterはAndroid成分多め。WordPressやガジェット少々。たまに子育てやランニングが混ざります。お問い合わせはhamako9999.netについてよりお願いします。

関連記事

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

adsense

ハマコー(@hamako9999
hamako9999

SIerでコンシューマ向けサービスの開発してます。ブログはAndroid成分多め。WordPressやガジェット少々。たまに子育てやランニングが混ざります。

お問い合わせはhamako9999.netについてよりお願いします。

  • まだデータがありません。

PAGE TOP ↑