nginx Reverse Proxy
プロキシキャッシュの RAMディスク化
free:全く利用されていないメモリ
buff/cache:キャッシュとして利用されているが、解放の可能性があるメモリ
used: = total - free - buff/cache
available:スワップせずに利用可能と見積もられたメモリ
shared:物理メモリのうち、共有メモリの使用量
→ このメモリを有効活用して、サイトの高速化を図る方法はないか?。
プロセス数を増やすことが出来るのではないか?
php-fpmの調節
WordPress などの動的サイトは、Webサーバーがクライアントからリクエストを受けると、サーバー上でPHPを実行して動的にページを生成し、生成したページをレスポンスとしてクライアントに返します。
この、サーバー上でPHPを実行する仕組みがphp-fpmです。
php-fpmでは、リクエストのたびにプロセスを生成していたのでは非効率なので、原則あらかじめ1つないし複数のワーカープロセス(以下、「プロセス」と書きます)を起動しておき、サーバーに届いたリクエストの処理に割り当てます。このプロセスの集まりのことを、プールと言います。
起動しているプロセスの数によって、サーバーの同時接続可能数やリソース使用量(CPU、メモリ、ディスク等)が変動します。多くのプロセスが起動していれば、それだけ多くの接続を一度に捌くことができますが、リソース消費は増大します。
Slabとは
Slab キャッシュは、ディレクトリのメタデータ情報を格納する dentry やファイルのメタデータ情報を格納する inode 構造体などをキャッシュしているカーネル内のメモリ領域です。 ... Linux において、ページサイズ未満のメモリは SLAB (スラブ)という仕組みで管理されています。
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
;pm.process_idle_timeout = 10s;
;pm.max_requests = 500
pm.max_children = 5:最大のプロセス数
pm.start_servers = 2:起動時のプロセス数
pm.min_spare_servers = 1:暇なときに残っているプロセスの最小値 pm.max_spare_servers = 3:暇なときに残っているプロセスの最大値 ;pm.process_idle_timeout = 10s;
;pm.max_requests = 500:一つのプロセスがこの数値分リクエストを受けたら終了すると言う設定
pm.max_children
CPUのコア数を超えるプロセス数を起動しても同時に実行することはできません。 また、メモリ消費量が多すぎるとswap領域を使うようになり、かえって逆効果になります。
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 30
;pm.process_idle_timeout = 10s;
pm.max_requests = 500 ・・・コメントアウトを外す
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 3
;pm.process_idle_timeout = 10s;
;pm.max_requests = 500
RAMディスクとは
コンピュータのメインメモリ(RAM)の一部の領域をストレージ(外部記憶装置)のように利用するシステム。 超高速なファイルシステムとして使用できるが、電源を落とすと内容は失われる。
# proxy cache on arakan60.com
proxy_cache_path /var/cache/nginx/arakan60 levels=2:2 keys_zone=arakan60:30m inactive=2h max_size=512m;
# proxy cache on arakoki70.com
proxy_cache_path /var/cache/nginx/arakoki70 levels=2:2 keys_zone=arakoki70:30m inactive=2h max_size=512m;
# proxy cache on luxsite arakan60.site
proxy_cache_path /var/cache/nginx/luxsite levels=2:2 keys_zone=luxsite:30m inactive=2h max_size=512m;
# Proxy Cache の RAM Disk 化
tmpfs /var/cache/nginx/arakan60 tmpfs size=512m,mode=775,uid=nginx,gid=nginx 0 0
tmpfs /var/cache/nginx/arakoki70 tmpfs size=512m,mode=775,uid=nginx,gid=nginx 0 0
tmpfs /var/cache/nginx/luxsite tmpfs size=512m,mode=775,uid=nginx,gid=nginx 0 0
一つのサイトは、割り当てた「512MB」に対して、すぐに【69%】の使用率になった。
shared:+518Mi と、大幅に増えた。
buff/cache:+225Mi と、少し増えた。
(2020.08.25)