まだトライアル期間中で色々と機能を試しているところですが、導入にあたっての疑問点などをまとめておきます。
特徴
プロファイラとしての主だった特徴は、この辺りです
- SaaS 型のサービスなので管理コストが不要
- 本番環境に導入できる
代替サービスとして blackfire がありますが、こちらは年間プランしかないので試用期間後の有料版契約のハードルが重く、まずは tideways を試してみることにしました。
SaaS 型のサービスなので管理コストが不要
管理コストを考えたときに、月数千円~2万円の範囲であれば、メンテナンス工数よりも安上がりだと判断しました。もちろんこの辺りはプロジェクトの規模・メンバ構成・ビジネス的なキャッシュフローの質によって変わるところではあります。
本番環境に導入できる
また、「事件は開発環境で起きているんじゃない、本番環境で起きているんだ!」ということで今回は本番環境に導入できることを重要視しました。
(選択肢から Xdebug 等が除外されます)
導入方法
びっくりするぐらいに簡単です。
まずは、ユーザ登録をするとダッシュボードから組織をアプリを作成することができるので、作成します。
インストール
Create Application すると、このような導入手順が表示されるので、素直に yum install するだけです。
OS を切り替えると、OS 毎に異なるコマンドを表示してくれます。
設定
同じように設定内容が API KEY と共に表示されているので、素直に設定します。
php.ini で設定する例
framework は指定してもしなくても問題ありません。
指定することのメリットは、トランザクション名を自動的に生成してくれることです。
指定しない/指定したのに働かない 場合は、このように手動で設定します。
<?php class Dispatcher { public function dispatch($controllerClass, $actionName) { // Add this four lines to set the transaction name $transactionName = $controllerClass . '::' . $actionName; if (class_exists('Tideways\Profiler')) { \Tideways\Profiler::setTransactionName($transactionName); } $controller = new $controllerClass(); return $controller->$actionName(); } }
※https://tideways.io/profiler/article/40-transactions より
成功すると、こんな感じでログが表示されます。
パフォーマンスが悪い箇所が分かっている場合は、"HTTP" などと表示してくれています。
で、特定のトランザクション名を選択すると、取得した Trace が表示されます。
取得できる Trace 数には制限があるので、全ての処理を Trace しているわけではないので、無い時もあります。(どういう基準で Trace しているのかはわかりません。。)
ここまで見れれば、大抵の問題は解決できるでしょう。
以上。
成功すると、こんな感じでログが表示されます。
パフォーマンスが悪い箇所が分かっている場合は、"HTTP" などと表示してくれています。
で、特定のトランザクション名を選択すると、取得した Trace が表示されます。
取得できる Trace 数には制限があるので、全ての処理を Trace しているわけではないので、無い時もあります。(どういう基準で Trace しているのかはわかりません。。)
Trace があれば、選択するとこのようにタイムラインを表示してくれます。
ここまで見れれば、大抵の問題は解決できるでしょう。
以上。