「nginx実践ガイド」を読んだ

Kindle Unlimitedのメンバーシップに含まれていたので読んでみた、面白かった。

client_max_body_size 300M;ってなってるのに300Mのファイルアップロードするとエラーで落ちる現象が起きててnginxの理解が足りていない、体系的、網羅的に知識を吸収したいとおもって読み始めたんだけど結局nginxの問題ではなかったっていう笑

nginx documentation https://nginx.org/en/docs/

nginxの公式ドキュメントもひととおり読んだんだけどこの本は実際に試してみないとわからないようなかゆいところまで説明されていた印象。

目次は以下のサイトで見れます。

nginx実践ガイド【委託】 - 達人出版会 https://tatsu-zine.com/books/nginx-jissen-guide

勉強になったところ

  • 第6章 HTTPSへの対応
    • 6-6 HTTPSの性能を上げる設定
      • 重いSSL/TLSハンドシェイクをキャッシュできる
  • 第7章 リバースプロキシ
    • 7-3 分散方式
      • upstreamのip_hash
    • 7-5 キャッシュ処理とバッファ
      • proxy_cache
      • proxy_buffer
  • 第8章 性能向上
    • 8-2 性能に影響する設定項目
      • 最大同時接続数 = worker_processes x worker_connections
      • worker_rlimit_nofile # (/proc/sys/fs/file-max) / worker_processes(ex. 65535 / 2)
      • sysctl fs.file-max

nginx、なんとなくわかったつもりになった、わからないときに頼りになる本が手元にあるのは精神的によい。

この本を読んでRails用の基本的な設定ファイルを作ったので今後はこれをベースにするつもり。

1台でまるっとnginx, rails, mysqlが動いてる仮想4コアサーバーがあったときにworker_proecees auto;だと4コア使い切ってrailsのpumaと取り合いになるからそういう場合は2:2とか明示的に指定したほうがいいのか?コアを使い切れてるかどうかとかそもそもの負荷状況によるんだろうけど、abなどでテストしてみて自分が思ってる最大同時接続数に対してRequest Per Secondの数値がどうなってるかなどアプリによるし結局の所は計測しないとなにもわからないんだろうけど。

このあいだのISUCONのレポート記事みてると3台サーバが使える状態だったから結局はどう割り振るのが正解だったとかそういうのちょこちょこ試してノウハウ蓄積できてるといざというときにいろいろ試せる引き出しを増やせるし役に立ちそう。