12-LPIC「level1」

LPIC|level 1【カーネルパラメータ】

目標

  • Linuxカーネルパラメータについて概要を理解する

カーネルパラメータの概要

カーネルパラメータとは、Linuxカーネルの動作を制御するための設定値のことです。
カーネルはOSの中核を担うソフトウェアであり、プロセス管理・メモリ管理・ネットワーク・ファイルシステムなどを制御します。
カーネルパラメータを調整することで、以下のような動作をチューニングできます。

  • ネットワークのパフォーマンス調整
  • メモリ利用方法の最適化
  • セキュリティ設定(IPフォワーディング、パケットフィルタリングなど)
  • デバッグや開発時の挙動制御

たとえば、大規模なWebサーバーでは接続数を増やすために net.core.somaxconn を変更し、セキュリティ強化のために kernel.randomize_va_space を調整するといった利用方法があります。

確認方法

  • 現在のカーネルパラメータは /proc/sys/ ディレクトリで確認できます。この例では、IPv4のパケットフォワーディング機能が有効(1)か無効(0)かを確認できます。
cat /proc/sys/net/ipv4/ip_forward

一時的な変更

  • sysctl コマンドを利用することで、即座にパラメータを変更可能です。(-w オプションを使うと、設定を一時的に反映できます。ただし再起動すると元に戻ります。)
# IPv4フォワーディングを有効化
sudo sysctl -w net.ipv4.ip_forward=1

永続的な設定

再起動後も設定を維持したい場合は、以下のファイルに追記します。

  • /etc/sysctl.conf
  • /etc/sysctl.d/*.conf
# /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.core.somaxconn = 1024

設定を反映するには以下を実行します。

sudo sysctl -p

よく使われるカーネルパラメータの例

パラメータ説明用途例
net.ipv4.ip_forwardIPv4パケット転送の有効化ルーター用途
net.core.somaxconn接続待ちキューの最大長Webサーバーの同時接続増加
vm.swappinessスワップ使用のしやすさ(0〜100)メモリ管理調整
fs.file-maxシステム全体の最大ファイルディスクリプタ数大量接続アプリ対応
kernel.randomize_va_spaceアドレス空間配置のランダム化セキュリティ強化

実運用での注意点

  • 設定変更はシステム全体に影響を与えるため、テスト環境で事前に検証することが重要です。
  • 適切なパラメータ値は、利用するアプリケーションやサーバーの役割によって異なります。
  • sysctl -a で一覧を確認し、必要な部分だけを調整するのが安全です。

Webサーバー向けカーネルパラメータチューニング例

Webサーバーは、多数のクライアントから同時にリクエストを受け付けるため、ネットワーク処理性能 がボトルネックになりやすいです。Linuxのデフォルト設定は汎用用途向けなので、Webサーバーとして使う際には適切なチューニングが必要です。

1.同時接続数の増加(最大同時接続待ちキュー)

net.core.somaxconn = 1024
  • デフォルトは128程度と小さいため、大量のアクセスを捌くには増加が必要です。
  • Nginxでは listen backlog に依存するが、その上限をここで決定します。

2.ファイルディスクリプタ数

システム全体の最大ファイルディスクリプタ

fs.file-max = 2097152

プロセス単位の上限(/etc/security/limits.conf)

* soft nofile 65535
* hard nofile 65535

※Webサーバーは「1接続=1ファイルディスクリプタ」を消費するため、大規模環境では不足しやすいです。

3.TCP接続の効率化

TIME_WAITソケットの再利用

net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0   # 廃止済みカーネルも多いので注意
  • 大量の短時間接続があるWebサーバーでは TIME_WAIT 状態が溜まりやすい。
  • tcp_tw_reuse を有効化することで、クライアント接続の再利用が可能です。

SYN待ち接続数の拡張

net.ipv4.tcp_max_syn_backlog = 4096
  • SYN flood攻撃対策、または大量の同時接続処理に有効。

4.ネットワークバッファの拡張

送受信バッファの最大値

net.core.rmem_max = 16777216
net.core.wmem_max = 16777216

自動調整の範囲

net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
  • 高トラフィック環境でスループットを安定させるための調整。

5.カーネルパラメータ設定例(/etc/sysctl.d/99-webserver.conf)

# Webサーバー向けチューニング
net.core.somaxconn = 1024
fs.file-max = 2097152
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

反映コマンド

sudo sysctl -p /etc/sysctl.d/99-webserver.conf

6.運用上の注意点

  • 値を大きくしすぎると、逆にリソースを消費しすぎる場合があります。
  • サーバーのCPU・メモリ・NIC性能に応じて調整が必要です。
  • テスト環境で十分に検証してから本番に適用します。
  • 負荷試験ツール(ab, wrk, siege など)を使って効果を測定するのがおすすめです。

今回は以上になります。

「Linux」おすすめ書籍6選【初心者・脱初心者用】| 現役エンジニア&プログラミングスクール講師「Linux」初心者の方がLinuxの操作や仕組みを理解するためのお勧めの書籍について取り上げています。また中級者として更に進んだ学習ができる書籍についても1冊取り上げています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST