Railsアプリのパフォーマンスを理解するための新しい方法
Railsアプリは遅いですか?
単純なビューであるはずのものをロードするのに数秒かかる場合、掘り下げる価値のある問題があります。
データベース呼び出しが多すぎるか、メソッドが遅い可能性があります。あるいは、誰かがあなたのコードに入れて忘れてしまったスピードアップループかもしれません。
アプリの速度を低下させている原因を見つけるのに役立つツールがたくさんあります。数週間前、私はrbtrace
について話しました 。 NewRelicのrpm
gemは、アプリの高速化にも役立ちました。
しかし、パフォーマンスの問題を調査するための私のお気に入りのツールは、さらに多くのことを行います。 箱から出して、それはあなたのコードが何をしているかをあなたに示します。しかし、プラグインを追加すると、さらに強力になります。 見るのに役立ちます 視覚的にアプリのパフォーマンスの問題。そして、それはあなたが遅いアプリをより速く見つけて修正するのを助けることができます。
私のお気に入りのRailsパフォーマンスツールはrack-mini-profiler
と呼ばれています 。その宝石をアプリに追加すると、各ページに小さなインジケーターが表示されます。次のようになります:
そのボックスをクリックすると、それが展開され、あらゆる種類の素晴らしいものを見ることができます。実行されたSQLステートメント、パーシャルのレンダリングにかかった時間など:
MiniProfilerは、各ページの読み込みにかかる時間を常に通知します。 これは、アプリのパフォーマンスについて詳しく知るのに役立ちます。どのページが遅いか、どのページが速いかを直感的に理解できます。ページのレンダリングに驚くほど時間がかかることに気付くでしょう。そして、それがまだ頭の中にある間に、すぐに修正を開始できます。
MiniProfilerはさらに多くのことを実行できます。ただし、最初に、flamegraph
をインストールする必要があります 宝石。
これを行うと、アプリのパフォーマンスを確認するための新しい方法のロックが解除されます。
フレームグラフ:聞こえるのとまったく同じくらい楽しい
フレームグラフは次のようになります:
名前の由来はかなり明確ですよね?
rack-mini-profiler
をインストールした後 宝石とflamegraph
宝石、あなたはあなたの要求のいずれかのフレームグラフを見ることができます。 pp=flamegraph
を追加するだけです HTTPパラメータとして、次のようになります:
https://www.example.com/restaurants?pp=flamegraph
フレームグラフがポップアップ表示され、ズームインおよびズームアウトしたり、スクロールしたり、探索する興味深いものを見つけたりすることができます。
フレームグラフの各「レイヤー」は、スタックトレースの1行です:
横軸は時間です。 したがって、グラフの左端はリクエストの開始時であり、右端はリクエストの終了時です。
だから、それは確かにクールに見えます。しかし、フレームグラフで何ができるでしょうか?
X軸は時間を表すため、アプリがどこで行き詰まっているのかを明確に把握できます。 最も幅の広いレイヤーは、実行に最も時間がかかります。 それらを高速化すると最大の影響を与える可能性があるため、これらは最初に検討する必要のある領域です。
アプリがビューのレンダリングにどのくらいの時間を費やしていますか?コントローラーアクションでは?データベースにアクセスしますか?パーシャルをレンダリングしますか?
これらはすべて、視覚的に非常に見やすいです:
フレームグラフでわかるもう1つの便利な点があります:
このように、すべて同じ高さのスパイクがたくさんありますか?
これは、ある種のN+1クエリがあることを意味します。 includes
がありません どこかで、またはAPIへの一連の呼び出しを行います。 includes
を追加した場合 、次のようなフレームグラフが表示されます:
N + 1 SQLクエリは、ほとんどのパフォーマンスツールで非常に簡単に確認できます。似たようなSQL呼び出しを探すだけです。 ただし、APIを何度もヒットするなど、SQL以外のN + 1の問題は、気付くのが非常に困難です。 特に ロギングがそれほど良くない場合。
ただし、フレームグラフを使用すると、これらの問題がより明確になります。
フレームグラフは圧倒される可能性があります。彼らはあなたにたくさんの情報を見せてくれます、そしてあなたはそれを一度に全部取り入れることをかなり強制されます。では、何を無視できますか?
通常、グラフの最下層と最上層をスキップできます。 代わりに、グラフの中央付近、または上部までの3/4程度を探索し始めます。それが私のコードがたむろする傾向がある場所です。
グラフの上部は通常ActiveRecordまたはIOに関連しており、下部はRailsフレームワークコードであるため、コードが中央に向かっていることは理にかなっています。
フレームグラフを使用したことがありますか?最適化するのに最適な場所を見つけるのに最適な方法です。ぜひお試しください。 rack-mini-profiler
を追加します およびflamegraph
Gemfile
へのgem 。コードについてさらに多くの洞察が得られることに驚かれることでしょう。
-
新しい Windows PC にインストールするアプリのトップ 10
PC 用の個人用またはビジネス用のフォーマットの設計は、利用可能なさまざまなソフトウェアとアプリケーションによって簡単になりました。しかし、Windows 向けに提供される多数の選択肢に圧倒されることもあります。コンピューターで実行したいタスクごとに何百もの利用可能なソフトウェアがあるため、ユーザーは最適なものを探すときに少し混乱するかもしれません. したがって、ユーザーが Windows で利用可能なソフトウェアとアプリの現存するリストをどうにかして絞り込むことができれば賢明です。そうは言っても、さまざまなタスクを実行するために Windows にインストールできる最高のアプリのリストをま
-
新しい Windows 11 PC で使用すべき最高の無料アプリ
Microsoft Windows OS の最新バージョンがついに登場し、多くのユーザーが Windows 11 バージョン 22H2 にアップグレードして、新しい機能と改善を体験しています。 Windows 11 にも、サードパーティ アプリの必要性を最小限に抑える多くの新機能が付属していますが、サードパーティ アプリを使用して Windows 11 を改善する方法はたくさんあります。この投稿では、最もダウンロードされた、または最高の Windows 11 アプリをいくつか集めました。 2022 年に使用する必要があります。 Windows 11 での写真やビデオの編集に最適なアプリ Wi