Kindle Unlimitedのメンバーシップに含まれていたので読んでみた、面白かった。
client_max_body_size 300M;
client_max_body_sizeが300MBになっているのに、300MBのファイルアップロードするとエラーになってしまうという現象が起きていた。
この問題は301MBにして解決したんだけど、そもそも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
この本を読んでRails用の基本的な設定ファイルを作ったので今後はこれをベースにするつもり。
1台でまるっとnginx, rails, mysqlが動いてる仮想4コアサーバーがあったときにworker_proecees auto;だと4コア使い切ってrailsのpumaと取り合いになるからそういう場合は2:2とか明示的に指定したほうがいいのか?コアを使い切れてるかどうかとかそもそもの負荷状況によるんだろうけど、abなどでテストしてみて自分が思ってる最大同時接続数に対してRequest Per Secondの数値がどうなってるかなどアプリによるし結局の所は計測しないとなにもわからないんだろうけど。
このあいだのISUCONのレポート記事みてると3台サーバが使える状態だったから結局はどう割り振るのが正解だったとかそういうのちょこちょこ試してノウハウ蓄積できてるといざというときにいろいろ試せる引き出しを増やせるし役に立ちそう。