
もくじ
環境
- Ubuntu
- AWS EC2
worker_connections are not enough while connecting to upstream
JMeterで負荷をかけたら、エラーがでた。確認したところほぼデフォルトのサーバであった。
チューニングしていく
接続ソケット数を増やす
# sysctl net.core.somaxconn net.core.somaxconn = 128
# cd /etc/ # cp sysctl.conf sysctl.conf.`date +%Y%m%d`
# vi sysctl.conf net.core.somaxconn = 2048
反映 # sysctl -p 確認 # sysctl net.core.somaxconn net.core.somaxconn = 2048
PHP-FPM設定
実行時間の設定
# vi /etc/php/7.3/cli/php.ini ;max_execution_time = 30 max_execution_time = 120
1プロセスあたりのメモリを確認
# ps alx | grep php | awk '{printf ("%d\t%s\n", $8,$13)}'
34080 php-fpm:
41744 php-fpm:
37780 php-fpm:
34660 php-fpm:
・・・
だいたい40MBとなる。
2GBほどPHP-FPMに振り分けることにする。
プロセス数を増やす
# vi /etc/php/7.3/fpm/pool.d/www.conf pm = dynamic ↓ ;pm = dynamic pm = static pm.max_children = 5 ↓ ;pm.max_children = 5 pm.max_children = 100
100 * 40MB = 4,000MB = 4GB
Nginxが扱えるファイル数を増やす
OSが扱えるファイル数を確認
# cat /proc/sys/fs/file-max 1617562
このEC2は8CPUなので
1617562 / 8 = 202195.25
$ vi /etc/nginx/nginx.conf
worker_rlimit_nofile 198000; ←●worker_connetions * 2.2
events {
worker_connections 90000; // ●200000 / 2 = 100000 ... バッファを取って90000
# multi_accept on;
}
fastcgi_read_timeout 120;
fastcgi_send_timeout 120;
反映
$ sudo nginx -t $ sudo systemctl restart nginx $ sudo systemctl restart php7.3-fpm

![[Solved] Nginx 空のファイルがダウンロードされる nginx empty file download](https://www.yuulinux.tokyo/contents/wp-content/uploads/2022/04/Nginx_logo.svg_-150x150.png)
![【Soved】Nginx [crit] 20655#20655: *56 open() “/var/log/nginx/xxxx.access.log” failed (13: Permission denied) while logging request](https://www.yuulinux.tokyo/contents/wp-content/uploads/2020/06/linux_2021_2-150x150.jpg)