Blog主に技術系の学習メモに使っていきます。)m大事なこと思い込みを捨てるボトルネック、発生箇所を場所を測定し特定するシステムのパフォーマンスを測定する起動中のプロセスを確認する現在のメモリの空き容量を確認するシステム全体の負荷状況を確認するdockerの各コンテナの負荷状況を確認するマシンの性能を測るコードのパフォーマンスを測定する標準出力で見るrubyのbenchmark機能を使う条件を合わせるおわりに大事なこと思い込みを捨てるあたりをつけてそこから測定するのは大事だが、迷ったときにはここでは起きないはずといった思い込みは捨てて、ちゃんと網羅的に測定する。ボトルネック、発生箇所を場所を測定し特定するどこで発生しているのか、ボトルネックはどこなのかをパフォーマンス等を定量的に測り特定する。条件を合わせるローカルで同様の処理を実行して試す等を行う際は、実際に発生した状況との乖離をなるべく少なくする。複数の対策を比較するときは検証方法や前提を揃えて測定する。思い込みを捨てる例えばどこかしらの処理でパフォーマンスの起きてる場合には、根拠を持ってあたりを付けて着手する(N+1が発生してそうな処理なので、そこがパフォーマンス劣化の原因になっていそう等)のは時間短縮的にも望ましいと思いますが、道に迷ったときには、全体像を思い浮かべて網羅的・定量的に測定してボトルネックを探すことが大事。URL解決から結果が生成されるまで(Rails)ボトルネック、発生箇所を場所を測定し特定するコードを見てもパフォーマンスが遅くなっていそうな場所が見当たらない等の場合はシステムのパフォーマンスを測定して、どのような場所に負荷がかかっているのかを測定すると、どのような処理が影響してそうか判断するヒントになります。(コードではなく他のプロセスがサーバー上の負荷を上げてただけ等の事象にも気づけそうです。)迷ったときはシステムで大まかに測定し、その結果をもとにコードを見ていくと答えが見つかるかもしれません。システムのパフォーマンスを測定するシステムのパフォーマンスを測るために使えそうなcommand等のtipsを記載しておきます。auxコマンドを使うと起動中のすべてのプロセスのCPU使用率やメモリの使用率を確認することが出来ます。これを使うと他のサービスによる影響等が確認できそうです。-tコマンドを使うと現在のメモリの空き容量をスワップ領域を含めて確認することが出来ます。これを見るとメモリの逼迫によるスワップ領域を使用した事によりパフォーマンスが劣化した可能性があるかどうか確認できそうです。4420244システム全体の負荷状況を確認するtopコマンドを使うとシステム全体の負荷状況をリアルタイムに確認することが出来ます。%MEMを指定するとメモリの使用量の降順に並び替えることも出来ます。topコマンドを確認しながら該当処理を実行すると、どのような影響が出ているかを確認できそうです。statsコマンドを使います。コンテナで運用している場合は、リクエストからレスポンスまで時間がかかった際にどのコンテナの負荷が上がっているか測定すると、ボトルネックが特定できそうです。コンテナ名マシンの性能を測る実際のマシンのパフォーマンスがどの程度か測るにはベンチマークを取るライブラリが便利です。実際に使っているマシンの性能がそもそも足りてないや、環境で差分が出た際にマシンスペックの差かどうかを判断することが出来ます。テックブログコードのパフォーマンスを測定する実際にどこで発生したかわかってきたら実際にコードのパフォーマンスを測るとより具体的になります。printを使った手法、またrubyやrailsには標準でベンチマークを測定出来る機能があります。標準出力で情報を見ることによって、コードのどの部分がボトルネックになっているのか特定することが出来ます。今回は下記のようなコードを例に見ていきます。processend標準出力で見る上記のコードを解析するには下記のような標準出力を仕込めば下記処理について、おおよその実行時間を把握することが出来ます。Time.nowendrubyのbenchmark機能を使うrubyの標準のベンチマーク機能を使うと下記のようにBenchmark.bmのブロックに渡した処理のベンチマークを取得出来ます。endendこれはサンプルですが下記のような結果を得られます。5.020090)ちなみに見方は下記の通りです。Qiita条件を合わせるここは言わずもがなですが、なるべくパフォーマンスが劣化した環境と測定時は揃えた方が良いです。劣化時と状況が違ってしまうと何が原因かわからなくなってしまうので。処理の呼び出し方(引数等)config周りの設定などなど...おわりに今回はパフォーマンス測定の心構えやTipsをまとめてみました。Puzzlesを解いてみたので自...みなさん、こんにちは。今回は、MeCabを使って形態素解析を行ってみたので、やり方とか...2018-11-11railsの勉強のためのTwitterBotをリリースしました📢みなさん、こんばんは。»プロフィールid:madogiwa0124プログラミングの学習メモや書籍の感想等を公開していきます。ActivitiesMadogiwa0124はてなブログをはじめよう!madogiwa0124さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。