Apache conf
プロのサーバ管理者がApacheのStartServers, (Min|Max)SpareServers, MaxClientsを同じにする理由 - blog.nomadscafe.jp
FreeBSD Accept Filter
カーネルモジュール
- accf_http.ko HTTP通信のパフォーマンスを向上させるモジュール
- accf_data.ko HTTPS通信のパフォーマンスを向上させるモジュール
# kldload accf_data # kldload accf_http # vi /boot/loader.conf ==== accf_data_load="YES" accf_http_load="YES" ====
Listen しているソケットに対して、OS が固有に持っているプロトコルについての最適化を 有効にするディレクティブです。大前提となる条件は、データが受信されるか HTTP リクエスト全体がバッファされるかするまで、カーネルがサーバプロセスに ソケットを送らないようになっている、ということです。現在サポートされているのは、 FreeBSD の Accept Filter と Linux のプリミティブな TCP_DEFER_ACCEPT のみです。
FreeBSD のデフォルト値は :
AcceptFilter http httpready
AcceptFilter https datareadyhttpready Accept Filter は HTTP リクエスト全体を、 カーネルレベルでバッファリングします。リクエスト全体を受信し終わると、 その後サーバプロセスにそれを送ります。詳細については accf_http(9) を参照してください。HTTPS のリクエストは暗号化されているので accf_data(9) フィルタのみが使用されます。
pkg、portsのインストールの場合は
apache24_http_accept_enable
で accf_http が有効
カーネルのパラメータ Kernel
sysctl -w kern.ipc.somaxconn=4096sysctl -w net.inet.icmp.icmplim=3000# vi /etc/sysctl.conf ==== kern.ipc.somaxconn=4096net.inet.icmp.icmplim=3000====
icmplimを増やすのではなくnet.inet.tcp.blackhole=2にしたほうがよさそう?
デフォルト値
kernel parameter | 12.3 | 11.0 | 10.1 | 9.0 | 8.2 | 7.3 |
kern.ipc.maxsockbuf | 2097152 (2MB) | 2097152 (2MB) | 2097152 (2MB) | 262144 | 262144 | |
kern.ipc.nmbclusters | 1018408 | 126184 | 25600 | 25600 | ||
kern.ipc.somaxconn | 128 | 128 | 128 | 128 | 128 | |
net.inet.icmp.icmplim | 200 | 200 | 200 | 200 | 200 | 200 |
net.inet.tcp.recvbuf_max | 2097152 (2MB) | 2097152 (2MB) | 2097152 (2MB) | 262144 | 262144 | |
net.inet.tcp.sendbuf_max | 2097152 (2MB) | 2097152 (2MB) | 2097152 (2MB) | 262144 | 262144 | |
net.inet.tcp.fast_finwait2_recycle | 0 | 0 | 0 | |||
net.inet.tcp.finwait2_timeout | 60000 | 60000 | 60000 | |||
net.inet.tcp.msl | 30000 | 30000 | 30000 |
kern.ipc.somaxconn は kern.ipc.soacceptqueue に名前が変わった。
2ch特化型サーバ・ロケーション構築作戦 Part32
644 : root▲▲ ★ : 2009/08/07(金) 11:53:24 ID:???0 BE:5746379-DIA(102777) [141/184回発言]
どくおさんへ:kern.ipc.maxsockbuf はこのスレでも幾度となく出てきたパラメータです。
kern.ipc.maxsockbuf で Google するといっぱい出てきます。FreeBSD のデフォルト値は忙しいサーバ向けではないので、
増やしたほうがいいかと。今の root 権限ありサーバでは、/etc/sysctl.conf にこんな設定を入れています。
何度も痛い目にあって設定したこの値には実績があるです。
このスレの過去ログにも書いてあるはず。ちなみに # でコメントしてある値は旧 tiger (2G mem)の値です。
---
# increase listen queue
#kern.ipc.somaxconn=8192
kern.ipc.somaxconn=32768
#kern.ipc.maxsockbuf=2097152
kern.ipc.maxsockbuf=20480000http://logsoku.com/thread/qb5.2ch.net/operate/1249070920/644
TIME_WAIT net.inet.tcp.msl
1. sysctl で TIME_WAIT を短く(60秒 -> 20秒)
# sysctl -w net.inet.tcp.msl=10000
10秒でも問題ない気がする
Scratching My Needs: FreeBSD - How to reduce TIME_WAIT connections
参考
Chapter 12. Configuration and Tuning | FreeBSD Documentation Portal
はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
http://www.wowtutorial.org/node/351
http://unix.derkeiler.com/Mailing-Lists/FreeBSD/performance/2007-12/msg00029.html
FreeBSD performance tuning: Sysctl parameter, loader.conf, kernel - Server Fault
http://shell.peach.ne.jp/aoyama/archives/1276
http://www.green.miki.hyogo.jp/~hiro/wiki/wiki.cgi?page=FB-tips