チューニング, Linux

カーネルチューニング ファイルディスクプリタ, TIME_WAIT CentOS7

 

ファイルディスクリプタ

 

# vi /etc/security/limits.conf


#<domain> <type> <item> <value>
#

#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4

※以下を追加

root soft nofile 65536
root hard nofile 65536
* soft nofile 65536
* hard nofile 65536

 

設定の反映

# sysctl -p

 

 

# ulimit -n -u -s

open files                      (-n) 1024
max user processes              (-u) 31860
stack size              (kbytes, -s) 8192

 

設定反映

# ulimit -n 65536 -u 16384 -s 32768

 

起動時に設定反映

# echo "ulimit -n 65536 -u 16384 -s 32768" >> /etc/sysconfig/init

# reboot now

 

# ulimit -n -u -s

open files                      (-n) 65536
max user processes              (-u) 16384
stack size              (kbytes, -s) 32768

 

 

TIME_WAIT

デフォルト60秒を30秒に変更します。

 

 

# vi /etc/sysctl.conf

net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30

net.core.somaxconn = 2048
net.ipv4.tcp_max_syn_backlog = 2048

net.ipv4.tcp_tw_recycle = 1にするhackはsoftbank端末などで障害が起こる可能性があり危険、無効にする。

 

 

設定の反映

# sysctl -p

 

 

 

 

Too many openfiles対策

 

 

システムが扱える最大のファイルディスクリプタを確認

# cat /proc/sys/fs/file-max
3199348

今回は初期値で320万程、十分なのでこのままにします。

 

 

※変更する場合

# vi /etc/sysctl.conf

fs.file-max=3200000

 

 

 

Apache

# mkdir -p /etc/systemd/system/httpd.service.d

# vi /etc/systemd/system/httpd.service.d/limits.conf

[Service]
LimitNOFILE=65535

 

 

Nginx

worker_rlimit_nofile  4096;

(略)

events {
      worker_connections  1024;
}

worker_connectionsの4倍程にworker_rlimit_nofileを設定します。

 

# mkdir -p /etc/systemd/system/nginx.service.d

# vi /etc/systemd/system/nginx.service.d/limits.conf

[Service]
LimitNOFILE=65535

 

 

MySQL

# mkdir -p /etc/systemd/system/mysqld.service.d

# vi /etc/systemd/system/mysqld.service.d/limits.conf

[Service]
LimitNOFILE=65535

 

 

 

# systemctl daemon-reload
# systemctl restart mysqld
# systemctl restart httpd

 

# cat /proc/`pgrep httpd | head -1`/limits | grep 'open files'
Max open files            65535                65535                files


# cat /proc/`pgrep mysqld | head -1`/limits | grep 'open files'
Max open files            65535                65535                files


# cat /proc/`pgrep nginx | head -1`/limits | grep 'open files'
Max open files            65535                65535                files

ファイルが扱えるようになった。

 

 

再起動して確認する

# reboot now

# ulimit -n
65536


設定値確認
# sysctl -n net.ipv4.tcp_fin_timeout
30

 

 

 

Tuned

# tuned-adm profile throughput-performance

 

 

 

ベンチマーク

 

ベンチマークもすると良い

# ab -c 10000 -n 10000 http://192.168.1.xxx/app/

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)