kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

PPP3: パフォーマンス改善

Chapter 12 Webアプリケーションのパフォーマンス改善

まずは読む

  • リクエスト数が増えるとCPU負荷が上がったりメモリーを消費したりしてアプリケーションサーバーが高負荷状態になる
  • 負荷の種類(CPU・ディスク・メモリ)によって適切な対策を取る
  • 効果が大きく用意に実行できることから試す
  • 対策前後でパフォーマンスを計測する
  • アプリケーションのパフォーマンスには、スループット・メモリ消費量・画面表示速度・通信時の応答速度などいろいろな指標がある
  • 注目すべきは秒間リクエスト数と応答時間
  • ApacheBench(ab)コマンドで計測する
    • インストール sudo apt install apache2-utils
    • 計測 ab -n 1000 -c 100 http://127.0.0.1:8000/ (100並列で1000リクエスト)
  • gunicornを使う
    • gunicornはWSGIアプリのためのHTTPサーバーで、高速に動作する
    • インストール pip install gunicorn
    • 実行 gunicorn -w 1 -b 127.0.0.1:8000 norilog
    • -wはワーカープロセス数 コア数に応じて設定する
  • nginxを使う
    • インストール sudo apt install nginx
    • 起動/停止/再起動/リロード sudo service nginx start/stop/restart/reload
    • 静的ファイルの配信は圧倒的に速い
  • nginxとgunicornを組み合わせて使う
    • nginxをリバースプロキシにして、静的ファイルはnginxから配信することによってアプリケーションサーバーの負荷を下げる
    • gunicornをデーモン化して実行 gunicorn -w 2 -b 127.0.0.1 -D norilog

読むだけにしておこう