はじめに:AWSって遅くない?
AWSのEC2インスタンス、スペックの割に「なんか遅い」って感じたことない? 特にI/Oまわりとか、TCPの接続がもっさりとか。あれ、実はデフォルトのカーネル設定がボトルネックになってる可能性が大やねん。
AWSって便利やけど、実際のカーネルチューニングまではやってくれん。
だから、「自分で速くする」しかないよな!!!!!
AWSでsysctlってどうやって使うん?
sysctlはLinuxカーネルのパラメータを操作するコマンドだぜ。サーバのパフォーマンスにガッツリ効いてくる。
基本的な使い方:
sudo vim /etc/sysctl.d/99-custom.conf
sudo sysctl -p /etc/sysctl.d/99-custom.conf
再起動しても設定が消えんように:
/etc/sysctl.confに書く- または
cloud-initやrc.localにsysctl -pを追記しとく
インスタンスタイプ(t系、m系など)によっても効き方が違うので、微調整は必要。
3. 現場叩き上げのsysctlテンプレ(十円玉式)
# ファイルシステム設定
fs.inotify.max_user_watches = 524288
fs.file-max = 2097152
# 仮想メモリ設定
vm.swappiness = 10
vm.vfs_cache_pressure = 50
vm.dirty_ratio = 20
vm.dirty_background_ratio = 5
# ネットワーク設定 - 一般
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096
# ネットワーク設定 - 特定キューイング規律と輻輳制御
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
# ネットワーク設定 - TCP
net.ipv4.tcp_rmem = 4096 262144 33554432
net.ipv4.tcp_wmem = 4096 262144 33554432
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_rfc1337 = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_fin_timeout = 15
net.ipv4.tcp_mtu_probing = 2
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_max_tw_buckets = 360000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_abort_on_overflow = 0
4. Before/After:チューニングの効果を実測
ネットワーク速度:
iperf3 -c サーバIP
- Before: 300Mbps
- After: 880Mbps
ディスクI/O:
dd if=/dev/zero of=test bs=1M count=1024 oflag=dsync
- Before: 80MB/s
- After: 150MB/s
体感でも「あ、はやっ」てなる。
5. なぜシニアでもやってないの??
- 既存のナレッジがない
- クラウド=使い捨て前提で最適化されない
- 誰も責任を持ちたくない(「触らぬカーネルに祟りなし」)
でも、sysctlは最も簡単で効果が出るSREテクやで!
6. まとめ:AWSでも「職人芸」は生きている
クラウド時代やからって、全部マネージド任せにしたらアカン。
たった数行のsysctlで、
- ネット高速化
- I/O高速化
- レイテンシちっこくなる
こんなん、やらな損やろ?
今すぐ sudo nano /etc/sysctl.d/aws.conf や!



コメント