#パフォーマンス
17 件の記事
Python のサーバーが遅いとき — py-spy で 5 分以内にボトルネックを探す
稼働中の Python プロセスに、コードの修正・再起動なしで取り付くサンプリングプロファイラ py-spy の使い方を整理します。dump で止まったプロセスの正体の確認、top でリアルタイムのボトルネック観察、record とフレームグラフ、--idle で見る off-CPU の待ち、GIL 観点の解釈、コンテナでの使い方まで扱います。
CDN が速度を上げる方法 — キャッシュヒットから動的コンテンツまで
実務者の観点で CDN の動作を整理します。距離(RTT)を縮めるエッジの構造、キャッシュヒット率を決める Cache-Control とキャッシュキー、無効化とデプロイの戦略、キャッシュできない動的コンテンツまで CDN が助ける仕組み(TLS 終端・コネクション再利用)、そしてヒット率を削るよくある間違いを扱います。
Redis が速い理由 — メモリ、シングルスレッド、データ構造
Redis が毎秒数十万リクエストを処理する構造的な理由を整理します。ディスクのないメモリアクセス、ロックの要らないシングルスレッドのイベントループ、目的に合わせて実装されたデータ構造という三本の柱と、シングルスレッドの罠(遅いコマンド一つが全体を止める構造)、そして Redis が遅くなるケースまで扱います。
データベースのインデックスがやっていること — B-tree、検索コスト、書き込みのコスト
インデックスが検索を速くする原理を B-tree の構造から解きほぐします。フルスキャンとのコストの差、複合インデックスとカラムの順序、インデックスがただではない理由(書き込みコスト・保存領域)、どのカラムにインデックスを作り、どのカラムには作らないかの実務基準まで整理します。
REST API が遅いとき — ボトルネックを探す順序
API の応答が遅いとき、勘ではなく順序でボトルネックを探す方法を整理します。どこが遅いのか区間から割る計測、データベース・シリアライズ・外部呼び出し・N+1 という常連のボトルネック 4 か所、キャッシングやページネーションといった処方の優先順位、p50 ではなく p99 を見るべき理由まで扱います。
ロードアベレージの正体 — CPU 使用率と違う点
Linux の指標の中で最も誤読されるロードアベレージを正確に読む方法を整理します。実行中+実行待ち+ディスク待ち(D 状態)を合わせた数字という定義、コア数で割って読む基準、CPU 使用率と食い違う四つの典型例、1・5・15 分の三つの値のトレンドの読み方まで扱います。
サーバーが遅い理由 #5 データベースが遅くなるとき — インデックス・ロック・コネクションプール
問題なく動いていたデータベースが遅くなる原因を追跡します。データの成長がしきい値を超えた瞬間に崩れるフルスキャン、インデックスがあるのに使われない条件、長いトランザクションが作るロック待ちのチェーン、プール枯渇と DB 飽和の見分け方、EXPLAIN と統計ビューによる診断手順を扱います。
サーバーが遅い理由 #4 帯域は足りているのに遅いとき — レイテンシ・RTT・再送
回線の帯域は余っているのにネットワークが遅い状況の原因を追跡します。RTT と往復回数が体感速度を決める構造、TCP ハンドシェイクと TLS の往復コスト、BDP とウィンドウの限界、パケットロスと再送の確認方法、コネクション再利用まで扱います。
サーバーが遅い理由 #3 SSD なのに遅いとき — 書き込み増幅・fsync・キュー深度
SSD を使っているのにディスクがボトルネックになる状況の原因を追跡します。スペックシートの IOPS の前提条件、fsync が生む耐久性書き込みのコスト、SLC キャッシュの枯渇と書き込み増幅、キュー深度 1 の物理的な限界、クラウドボリュームの IOPS 上限まで扱います。
サーバーが遅い理由 #2 メモリを増やしても速くならないとき — ページキャッシュ・スワップ・ワーキングセット
メモリを増設したのに性能が変わらない状況の原因を追跡します。available の意味とページキャッシュ、余ったメモリがすでにキャッシュとして働いている構造、スワップは使用量ではなく出入りで判定すること、ワーキングセットの見極め、コンテナのメモリ上限とアプリケーションのヒープ設定まで扱います。
サーバーが遅い理由 #1 CPU 使用率は低いのに遅いとき — run queue・I/O wait・ロック競合
CPU 使用率が低いのにサーバーが遅い状況の原因を追跡します。run queue とスケジューリング遅延、iowait の落とし穴、ロック競合と off-CPU の待ち、クラウドのスチールタイムまで、使用率グラフが見落とす待ち時間を見つける診断手順を扱います。
Angular上級 #7 パフォーマンスチューニング — Virtual Scroll、Image、Profiler
Angular アプリのパフォーマンスをビルド、ランタイム変更検知、リソースの 3 つの layer に分けて整理します。Virtual Scroll と NgOptimizedImage、Angular DevTools Profiler、Defer block まで、大きなアプリで実際に効果を出すツールを一箇所にまとめて見ていきます。