Ruby
 Computer >> コンピューター >  >> プログラミング >> Ruby

Railsアプリのパフォーマンスを理解するための新しい方法

Railsアプリは遅いですか?

単純なビューであるはずのものをロードするのに数秒かかる場合、掘り下げる価値のある問題があります。

データベース呼び出しが多すぎるか、メソッドが遅い可能性があります。あるいは、誰かがあなたのコードに入れて忘れてしまったスピードアップループかもしれません。

アプリの速度を低下させている原因を見つけるのに役立つツールがたくさんあります。数週間前、私はrbtraceについて話しました 。 NewRelicのrpm gemは、アプリの高速化にも役立ちました。

しかし、パフォーマンスの問題を調査するための私のお気に入りのツールは、さらに多くのことを行います。 箱から出して、それはあなたのコードが何をしているかをあなたに示します。しかし、プラグインを追加すると、さらに強力になります。 見るのに役立ちます 視覚的にアプリのパフォーマンスの問題。そして、それはあなたが遅いアプリをより速く見つけて修正するのを助けることができます。

私のお気に入りのRailsプロファイラー

私のお気に入りのRailsパフォーマンスツールはrack-mini-profilerと呼ばれています 。その宝石をアプリに追加すると、各ページに小さなインジケーターが表示されます。次のようになります:

Railsアプリのパフォーマンスを理解するための新しい方法

そのボックスをクリックすると、それが展開され、あらゆる種類の素晴らしいものを見ることができます。実行されたSQLステートメント、パーシャルのレンダリングにかかった時間など:

Railsアプリのパフォーマンスを理解するための新しい方法

MiniProfilerは、各ページの読み込みにかかる時間を常に通知します。 これは、アプリのパフォーマンスについて詳しく知るのに役立ちます。どのページが遅いか、どのページが速いかを直感的に理解できます。ページのレンダリングに驚くほど時間がかかることに気付くでしょう。そして、それがまだ頭の中にある間に、すぐに修正を開始できます。

MiniProfilerはさらに多くのことを実行できます。ただし、最初に、flamegraphをインストールする必要があります 宝石。

これを行うと、アプリのパフォーマンスを確認するための新しい方法のロックが解除されます。

​​フレームグラフ:聞こえるのとまったく同じくらい楽しい

フレームグラフは次のようになります:

Railsアプリのパフォーマンスを理解するための新しい方法

名前の由来はかなり明確ですよね?

rack-mini-profilerをインストールした後 宝石とflamegraph 宝石、あなたはあなたの要求のいずれかのフレームグラフを見ることができます。 pp=flamegraphを追加するだけです HTTPパラメータとして、次のようになります:

https://www.example.com/restaurants?pp=flamegraph

フレームグラフがポップアップ表示され、ズームインおよびズームアウトしたり、スクロールしたり、探索する興味深いものを見つけたりすることができます。

フレームグラフの各「レイヤー」は、スタックトレースの1行です:

Railsアプリのパフォーマンスを理解するための新しい方法

横軸は時間です。 したがって、グラフの左端はリクエストの開始時であり、右端はリクエストの終了時です。

だから、それは確かにクールに見えます。しかし、フレームグラフで何ができるでしょうか?

フレームグラフの使用方法

X軸は時間を表すため、アプリがどこで行き詰まっているのかを明確に把握できます。 最も幅の広いレイヤーは、実行に最も時間がかかります。 それらを高速化すると最大の影響を与える可能性があるため、これらは最初に検討する必要のある領域です。

アプリがビューのレンダリングにどのくらいの時間を費やしていますか?コントローラーアクションでは?データベースにアクセスしますか?パーシャルをレンダリングしますか?

これらはすべて、視覚的に非常に見やすいです:

Railsアプリのパフォーマンスを理解するための新しい方法

フレームグラフでわかるもう1つの便利な点があります:

このように、すべて同じ高さのスパイクがたくさんありますか?

Railsアプリのパフォーマンスを理解するための新しい方法

これは、ある種のN+1クエリがあることを意味します。 includesがありません どこかで、またはAPIへの一連の呼び出しを行います。 includesを追加した場合 、次のようなフレームグラフが表示されます:

Railsアプリのパフォーマンスを理解するための新しい方法

N + 1 SQLクエリは、ほとんどのパフォーマンスツールで非常に簡単に確認できます。似たようなSQL呼び出しを探すだけです。 ただし、APIを何度もヒットするなど、SQL以外のN + 1の問題は、気付くのが非常に困難です。 特に ロギングがそれほど良くない場合。

ただし、フレームグラフを使用すると、これらの問題がより明確になります。

注意を払わないこと

フレームグラフは圧倒される可能性があります。彼らはあなたにたくさんの情報を見せてくれます、そしてあなたはそれを一度に全部取り入れることをかなり強制されます。では、何を無視できますか?

通常、グラフの最下層と最上層をスキップできます。 代わりに、グラフの中央付近、または上部までの3/4程度を探索し始めます。それが私のコードがたむろする傾向がある場所です。

グラフの上部は通常ActiveRecordまたはIOに関連しており、下部はRailsフレームワークコードであるため、コードが中央に向かっていることは理にかなっています。

フレームグラフを使用したことがありますか?最適化するのに最適な場所を見つけるのに最適な方法です。ぜひお試しください。 rack-mini-profilerを追加します およびflamegraph Gemfileへのgem 。コードについてさらに多くの洞察が得られることに驚かれることでしょう。


  1. 新しい Windows PC にインストールするアプリのトップ 10

    PC 用の個人用またはビジネス用のフォーマットの設計は、利用可能なさまざまなソフトウェアとアプリケーションによって簡単になりました。しかし、Windows 向けに提供される多数の選択肢に圧倒されることもあります。コンピューターで実行したいタスクごとに何百もの利用可能なソフトウェアがあるため、ユーザーは最適なものを探すときに少し混乱するかもしれません. したがって、ユーザーが Windows で利用可能なソフトウェアとアプリの現存するリストをどうにかして絞り込むことができれば賢明です。そうは言っても、さまざまなタスクを実行するために Windows にインストールできる最高のアプリのリストをま

  2. 新しい Windows 11 PC で使用すべき最高の無料アプリ

    Microsoft Windows OS の最新バージョンがついに登場し、多くのユーザーが Windows 11 バージョン 22H2 にアップグレードして、新しい機能と改善を体験しています。 Windows 11 にも、サードパーティ アプリの必要性を最小限に抑える多くの新機能が付属していますが、サードパーティ アプリを使用して Windows 11 を改善する方法はたくさんあります。この投稿では、最もダウンロードされた、または最高の Windows 11 アプリをいくつか集めました。 2022 年に使用する必要があります。 Windows 11 での写真やビデオの編集に最適なアプリ Wi