WWW を検索 NOGNOG.COM を検索

WWW.NOGNOG.COM

Last modified: Sat, 29 Dec 2007 15:23:30 +0900
Home   うにっくすさんの覚え書き   プリングルズ   MIDI   ユーザー車検   「小沢昭一の小沢昭一的こころ」のススメ   Blog  

FreeBSD - 私的システムチューニング

  • はじめに

    • FreeBSDの私的システムチューニング

  • システムチューニング

      現在のカーネルでは、maxusresのパラメータがデフォルト0の実装になっています。
      これによって、カーネルはリソースに応じてシステムを動的に最適化します。
      動的に割り当てられた値を変更したい場合は「/boot/loader.conf」に追加します。

        # -- sysinstall generated deltas -- #
        userconfig_script_load="YES"
        kern.maxusers=512
        kern.ipc.nmbclusters=65536
        net.inet.tcp.inflight_enable=1

  • ファイルディスクリプタ変更

      # vi /usr/include/sys/types.h

      FD_SETSIZE 256

  • 最大接続数変更

      # vi /usr/include/sys/socket.h

      SOMAXCONN 128

  • mbuf変更

      # vi /usr/include/machine/param.h

      MSIZE 256

  • 以下man tuningより抜粋

      ※ファイルディスクリプタ
      kernelが開いたファイルを識別するためにメモリ上に取っておく領域

      ※somaxconn
      新しい TCP コネクションを受け付けるためのlisten キューのサイズを制限します。
      高負荷の web サーバ環境では、デフォルト値の 128 は新しいコネクションを余裕をもって扱うには低すぎます。
      そのような環境では、この値を 1024 以上に増やすことが推奨されます。

      ※nmbclusters
      この値を変更することで、システムが割り当てようとしているネットワーク mbuf の数を増やすことができます。
      それぞれのクラスタは約 2Kのメモリに相当するので、 1024 は 2M のカーネルメモリをネットワークバッファに予約することを示します。簡単な計算でどれだけ必要なのかがわかります。
      web サーバが同時に最大 1000 本のコネクションを扱い、各コネクションが16K の受信バッファと 16K の送信バッファを消費する場合、約 32MB に相当するネットワークバッファを扱う必要があります。
      経験から得た方法によると、2 倍すると良いとされています。つまり 32MBx2 = 64MB/2K = 32768 です。
      従って、この場合は kern.ipc.nmbclusters を 32768 に設定します。中くらいの量の メモリが搭載されたマシンでは 1024 から 4096、さらに大量のメモリが搭載されているなら 4096 から 32768 の値を推奨します。決して大きい値を指定すべきではありません。
      ブート時にクラッシュを引き起こす可能性があります。
      netstat(1) に -m オプションを与えることで、ネットワーククラスタの使用状況が分かります。古い FreeBSD ではこのチューナブルを持ちませんので、代りにカーネルの config(8) オプションの NMBCLUSTERS を設定する必要があります。

      # vi /etc/sysctl.conf

        vfs.vmiodirenable=1
        kern.ipc.maxsockbuf=2097152
        kern.ipc.somaxconn=8192
        kern.ipc.maxsockets=16424
        kern.maxfiles=65536
        kern.maxfilesperproc=32768
        net.inet.tcp.rfc1323=1
        net.inet.tcp.delayed_ack=0
        net.inet.tcp.sendspace=65535
        net.inet.tcp.recvspace=65535
        net.inet.udp.recvspace=65535
        net.inet.udp.maxdgram=57344
        net.local.stream.recvspace=65535
        net.local.stream.sendspace=65535
        			

うにっくすさんの覚え書きについて

Home >> うにっくすさんの覚え書き >> FreeBSD - 私的システムチューニング