#バックエンド
6 件の記事
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 を見るべき理由まで扱います。