2026年10月21日
2026年10月21日
Linuxのkernelパラメータをsysctlで設定する方法
はじめに
sysctlはLinuxカーネルの動作パラメータを実行時に変更できるコマンドで、ネットワーク・メモリ・ファイルシステム・セキュリティなど数百個のチューニング項目を扱えます。サーバーのパフォーマンス最適化やセキュリティ強化には欠かせない機能です。
本記事では、sysctlの基本操作と、よく使うチューニング項目、永続化の手順を実例で紹介します。
症状・背景
- TCP接続数の上限を増やしたい
- スワップの使用頻度を抑えたい
- IPフォワードを有効化したい
- セキュリティ関連のカーネル設定を強化したい
手順・設定方法
ステップ1: sysctlの基本操作
# 現在の値を表示
sysctl net.ipv4.ip_forward
# 一覧表示
sysctl -a | less
# 特定カテゴリだけ表示
sysctl -a 2>/dev/null | grep ^net.ipv4
# 動的に値を変更(再起動で消える)
sudo sysctl -w net.ipv4.ip_forward=1
ステップ2: 永続化(設定ファイル)
# メイン設定ファイル: /etc/sysctl.conf
# 推奨は個別ファイル: /etc/sysctl.d/99-custom.conf
sudo tee /etc/sysctl.d/99-custom.conf <<EOF
# IPフォワード有効化
net.ipv4.ip_forward = 1
# スワップ抑制
vm.swappiness = 10
# ファイル監視の上限拡大
fs.inotify.max_user_watches = 524288
EOF
# 設定を読み込み
sudo sysctl --system
# 特定ファイルだけ読み込み
sudo sysctl -p /etc/sysctl.d/99-custom.conf
ステップ3: よく使うネットワークパラメータ
# TIME_WAITソケットの再利用
sudo sysctl -w net.ipv4.tcp_tw_reuse=1
# バックログキューの拡大
sudo sysctl -w net.core.somaxconn=4096
sudo sysctl -w net.core.netdev_max_backlog=16384
# TCPバッファサイズの調整
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
# SYNフラッド対策
sudo sysctl -w net.ipv4.tcp_syncookies=1
ステップ4: メモリ・FS関連のチューニング
# スワップ使用頻度の調整(0-100)
sudo sysctl -w vm.swappiness=10
# ダーティページの書き出し
sudo sysctl -w vm.dirty_ratio=20
sudo sysctl -w vm.dirty_background_ratio=10
# OOM Killer挙動
sudo sysctl -w vm.overcommit_memory=1
# ファイルディスクリプタの最大数
sudo sysctl -w fs.file-max=2097152
注意事項
- 一部のパラメータはネットワーク名前空間ごとに独立しており、コンテナ環境では別途設定が必要です
- 不適切な値を設定するとシステムが不安定になるので、変更前に値をメモしておきます
/etc/sysctl.confより/etc/sysctl.d/配下の数字付きファイルが推奨されます- 設定ファイルの読み込み順は数字の若い順なので命名に注意します
まとめ
1. 動的変更: sysctl -wで即時反映、再起動で消える
2. 永続化: /etc/sysctl.d/に追加しsysctl --system
3. ネットワーク: somaxconn・tcp_syncookies等が頻出
4. メモリ: swappiness・dirty_ratioで挙動制御
5. 慎重に: 元値を控えてから変更し、検証で確認
関連記事: