LoginSignup
0
2

More than 3 years have passed since last update.

よく修正するカーネルパラメータ

Last updated at Posted at 2020-03-24

個人的に良く修正しているもの

ファイルディスクリプタが足りないとき

SocketもFDに含まれるのだがつい見過ごされる。大体最初にこの手のエラーが発生する。
NginxのToo many open filesエラーなど。
ulimit -nで確認するが、当該エラーが発生したユーザで実施することに注意。rootだと異なる設定の場合がある。

[anyuser]$ ulimit -n
1024

この場合は、1024個しかFDが利用できない。

対応策

limits.confを修正する。場合にもよるが、rootだけFDが設定されていることも多く、何も設定されていない場合、デフォルトが1024になることに注意すること。
ソフトリミットもハードリミットも変更しておく。
値は、適宜決める。
以下は、anyuserのFDを変更する場合。

/etc/security/limits.conf
*                soft    core            unlimited
*                hard    core            unlimited
root             soft    nofile          65536
root             hard    nofile          65536
anyuser          soft    nofile          65536 ←ここを追加
anyuser          hard    nofile          65536 ←ここを追加

確認方法

/etc/security/limits.confに記述しても反映されていないことがある。
サーバへSSHして、当該プロセスのプロセスIDを確認し、cat /proc//limitsで確認すること。

port枯渇やらなんやら

リソースネックになっていないにもかかわらず、スループットが出ないような場合、any port枯渇に陥っている場合がある。

だいたいこういう場合当該サーバをnetstatで調べてみるとTIME_WAITが大量発生し、any portを使い切っている可能性がある。

割とよくある。
https://qiita.com/kuni-nakaji/items/c07004c7d9e5bb683bc2
これは以下のコマンドで確認することができる。

[root@]# netstat -antp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:111             0.0.0.0:               LISTEN      1/systemd
tcp        0      0 127.0.0.1:25            0.0.0.0:               LISTEN      1211/master
tcp        0      0 0.0.0.0:12127           0.0.0.0:               LISTEN      8689/sshd
tcp        0      0 10.140.180.223:12127    10.140.50.217:61738     ESTABLISHED 14604/sshd: appladm 
tcp6       0      0 :::40042                :::                    LISTEN      12232/java
tcp6       0      0 :::111                  :::                    LISTEN      1/systemd
tcp6       0      0 :::8080                 :::                    LISTEN      12232/java
tcp6       0      0 :::34710                :::                    LISTEN      12232/java
tcp6       0      0 :::12120                :::                    LISTEN      12232/java
tcp6       0      0 ::1:25                  :::                    LISTEN      1211/master
tcp6       0      0 :::12127                :::                    LISTEN      8689/sshd
tcp6       0      0 10.140.180.223:42881    10.140.197.150:3306     ESTABLISHED 12232/java 

対応策

以下のip_local_port_rangeを修正し、tcp_tw_reuseを1に修正すること。(tcp_tw_reuseのエントリがない場合は追記すること。)他パラメータの修正はあまりお勧めしない。

/etc/sysctl.conf
net.ipv4.ip_local_port_range = 30000 65500
net.ipv4.tcp_tw_reuse = 0

完了したらsysctl -pで反映。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2