<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF
  xmlns="http://purl.org/rss/1.0/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
 >

  <channel rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/!feeds/list">
    <title>UltraMonkey-L7 Wiki</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/!feeds/list</link>
    <description>
      SourceForge.jp Wiki pages for UltraMonkey-L7.    </description>
        <dc:date>2012-11-11T12:30:47+09:00</dc:date>
        <items>
      <rdf:Seq>
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleFileFormat" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/KernelRequestL7vsd" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleJava" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelDebugJava" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7vsadm" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/mib" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/trap" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/snmp" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/FrontPage" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/Performance" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/NUMA" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleFrontPage" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CofingRuleNamingRuleByType" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleNamingRule" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleDirectoryComposition" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/MakeinBoostC%20%20Tips" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-3.x-shamshel" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/MultiAccept" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%83%A2%E3%83%87%E3%83%AB" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/NAPI" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LINK" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/project-member" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090309release" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090127release" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-2.x-sachiel" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7gui" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/GUIUsedLib" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7directord" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7vsd" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7UsedLib" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7ExecEnv" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/Logging%E6%8C%87%E9%87%9D" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E7%94%A8%E8%AA%9E%E9%9B%86" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7Setting" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelInfo" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelDebug" />
                <rdf:li rdf:resource="http://sourceforge.jp/projects/ultramonkey-l7/wiki/FAQ" />
              </rdf:Seq>
    </items>
  </channel>

      <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleFileFormat">
    <title>CodingRuleFileFormat</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleFileFormat</link>
    <dc:identifier>CodingRuleFileFormat</dc:identifier>
    <dc:date>2012-11-11T12:30:47+09:00</dc:date>
        <description>
      <![CDATA[= ファイルフォーマット =

各ファイルについては，下記のフォーマット（書式）で記述すること．

== 各ファイル共通 

 * 改行コードは LF を使用すること
 * マルチバイト文字列が含まれるファイルは，文字コードセットとして UTF-8 を使用すること
 * 一行の文字数は 80 字以内とすること
 * ホワイトスペースは半角スペースを使用すること（全角スペースは使用]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.83.95.E3.82.A9.E3.83.BC.E3.83.9E.E3.83.83.E3.83.88">ファイルフォーマット</h1><p>各ファイルについては，下記のフォーマット（書式）で記述すること．
</p><h2 id="h2-.E5.90.84.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E5.85.B1.E9.80.9A">各ファイル共通</h2><ul><li>改行コードは LF を使用すること
</li><li>マルチバイト文字列が含まれるファイルは，文字コードセットとして UTF-8 を使用すること
</li><li>一行の文字数は 80 字以内とすること
</li><li>ホワイトスペースは半角スペースを使用すること（全角スペースは使用禁止とする）
</li><li>インデントは半角ホワイトスペース 4 個を使用すること
</li><li>コメントは // 形式を使用すること
<ul><li>複数行にわたるコメントについても，各行の先頭に // を挿入しコメントとすること
</li></ul></li><li>ファイル冒頭に適用ライセンスに沿ったライセンス条文を挿入すること
<ul><li><a href="http://www.gnu.org/copyleft/lesser.html" class="external" rel="nofollow">LGPLv3 原文</a>
</li><li><a href="http://sourceforge.jp/projects/opensource/wiki/licenses%2FGNU_Lesser_General_Public_License_version_3.0">LGPLv3 日本語訳</a>
</li></ul></li></ul><h2 id="h2-.E3.83.98.E3.83.83.E3.83.80.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.EF.BC.88.2A.h.EF.BC.89">ヘッダファイル（*.h）</h2><ul><li>宣言が重複しないよう，マクロを定義すること
<ul><li>マクロ名は，下記のルールに従って命名すること
<ul><li>プレフィックスにアンダースコアを付加
</li><li>ファイル名をすべて大文字に変換
</li><li>ドットはアンダースコアに変換
</li><li>サフィックスにアンダースコアを付加
</li></ul></li><li>#endif ディレクティブを記述する行のコメントとして，マクロ名を記述すること．
</li></ul></li></ul><p>例： scheduler_rr.h の場合
<pre>#ifndef _SCHEDULER_RR_H_
#define _SCHEDULER_RR_H_
....
#endif // _SCHEDULER_RR_H_
</pre></p><ul><li>ヘッダファイル内で #include を使用しないこと
<ul><li>ソースファイル内で，インクルード順序を考慮すること
</li></ul></li><li>クラスを定義するヘッダファイルの場合は，ひとつのファイルにひとつのクラスを記述すること
<ul><li>ただし，密接に関連するクラス（特定のクラスに対する例外を処理するクラスなど）は同じファイルに記述することを許容する
</li></ul></li></ul><h2 id="h2-.E3.82.BD.E3.83.BC.E3.82.B9.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.EF.BC.88.2A.c.EF.BC.8C.2A.cpp.20.E3.81.AA.E3.81.A9.EF.BC.89">ソースファイル（*.c，*.cpp など）</h2><ul><li>マジックナンバを使用しないこと
<ul><li>定数を使用する場合は，マクロとして定義すること
</li></ul></li><li>#include によるインクルードは，先頭部分でのみ行うこと
<ul><li>インクルードの順序は，下記の順とし，各括りの中ではアルファベット順に記述する
<ol><li>config.h など，プロジェクト独自の定数が定義されているファイル
</li><li>C 向け標準ヘッダファイル
</li><li>C++ 向け標準ヘッダファイル
</li><li>その他外部ライブラリ用ヘッダファイル
</li><li>プロジェクト固有ヘッダファイル
</li></ol></li></ul></li><li>NULL 判定を行う場合は，0 ではなく NULL を使用すること
</li><li>配列や構造体のサイズを sizeof キーワードによって取得する場合は，対象の変数ではなく，型を指定すること
<pre>int foo(...)
{
    struct data_structure data;
    int data_size = 0;

    data_size = sizeof (data); // bad
    data_size = sizeof (struct data_structure); // good
    ....
}
</pre></li><li>goto を適切に使用し，コードの重複を避けること 
<pre>#define USER_NAME_LENGTH 64
#define PASSWORD_LENGTH  64
int foo(...)
{
    int error_code  = 0;
    char *user_name = NULL;
    char *password  = NULL;

    user_name = (char *) malloc(sizeof (char) * USER_NAME_LENGTH);

    if (user_name == NULL) {
        error_code = -1;
        goto user_name_initialization_failed;
    }

    password = (char *) malloc(sizeof (char) * PASSWORD_LENGTH);

    if (password == NULL) {
        error_code = -1;
        goto password_initialization_failed;
    }

    // some operation

    free(password);

password_initialization_failed:
    free(user_name);

user_name_initialization_failed:
    // nothing to free
    return error_code;
}
</pre>Pour vous inscrire  maintiennent numéro, vous aurez  pu  votre compte   driver (utile à votre portabilité du numéro) <a href="http://obtenir-rio.info" class="external" rel="nofollow">numéro rio</a>. Vous obtiendrez  pouvez obtenir  pour  aucun coût par  entrer en contact avec la voix  expression du serveur ou du service à la clientèle   votre propre  vieille fournisseur  <a href="http://obtenir-rio.info/rio-bouygues" class="external" rel="nofollow">numero rio bouygues</a> . Vous ne  mai   get un SMS  avec vos . Avec votre  <a href="http://obtenir-rio.info/rio-orange" class="external" rel="nofollow">rio orange</a>, alors  vous serez en mesure de vous abonner à l' offre de  de son   à propos   citrons .</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/KernelRequestL7vsd">
    <title>KernelRequestL7vsd</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/KernelRequestL7vsd</link>
    <dc:identifier>KernelRequestL7vsd</dc:identifier>
    <dc:date>2012-11-11T10:30:07+09:00</dc:date>
        <description>
      <![CDATA[== Linux Kernelのnetwork方式に対するリクエスト考察 ==
----
OLS2009で発表されているように、!MultiQueueやRPS、そしてFDIRのようにネットワークを取り囲む環境は今ちょうど新しい機能が次々と導入されつつある。[[br]]それは、CPUのシングルスレッド性能の向上が止まったのを回避するための施策であるが、これらの対応はkernelにとどまることなく]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-Linux.20Kernel.E3.81.AEnetwork.E6.96.B9.E5.BC.8F.E3.81.AB.E5.AF.BE.E3.81.99.E3.82.8B.E3.83.AA.E3.82.AF.E3.82.A8.E3.82.B9.E3.83.88.E8.80.83.E5.AF.9F">Linux Kernelのnetwork方式に対するリクエスト考察</h2><hr /><p>OLS2009で発表されているように、MultiQueueやRPS、そしてFDIRのようにネットワークを取り囲む環境は今ちょうど新しい機能が次々と導入されつつある。<br />それは、CPUのシングルスレッド性能の向上が止まったのを回避するための施策であるが、これらの対応はkernelにとどまることなく、アプリケーション側からも対応しなければ速度を引き出すことは出来ない。<br />ここでは、UltraMonkey-L7のMultiThreadModelを考慮して検証を行う
</p><p><strong>MultiQueueを利用した時の起動シーケンスと必要データ</strong><br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/KernelRequestL7vsd/attach/l7vsd_startup_mq.png.PNG" alt="l7vsd_startup_mq.png.PNG" id="emb-l7vsd_startup_mq.png.PNG-1" title="l7vsd_startup_mq.png.PNG" class="embed-image" width="900" height="480" /><br />
起動時にMultiQueueを使用してるときほしい情報<br />
<table class="wikitable"><tbody><tr><td>情報名</td><td>概要</td></tr><tr><td>MQのON/OFF</td><td>MQ対応のNICでもON/OFFが出来るため</td></tr><tr><td>FlowDirectorのON/OFF</td><td>将来的にFlowDirectorがON固定になるかもしれないが、使えない環境ではプログラムが変更になる</td></tr><tr><td>Queueの振り分け種別</td><td>接続を振り分けるときにIP/PORTやMACアドレス等色々な種類で振り分けるはず。振り分け種類は起動時に確定するはず</td></tr><tr><td>Queue総数</td><td>Queue:ThreadPoolの比率で作成するため、全thread数はQueueの数 x ThreadPool一つあたりの数になる</td></tr><tr><td>各Queueに紐づけられているCPU</td><td>ThreadPoolはCPUごとに(sched_set_affinityを利用して)くくりつけるため、最初に必要</td></tr></tbody></table></p><p><strong>RPSを使用したときの起動シーケンスと必要データ</strong><br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/KernelRequestL7vsd/attach/l7vsd_startup_rps.png.PNG" alt="l7vsd_startup_rps.png.PNG" id="emb-l7vsd_startup_rps.png.PNG-1" title="l7vsd_startup_rps.png.PNG" class="embed-image" width="631" height="533" /><br />
起動時にFlowDirectorを利用している時ほしい情報<br />
<table class="wikitable"><tbody><tr><td>情報名</td><td>概要</td></tr><tr><td>FlowDirectorのON/OFF</td><td>kernel機能であるFlowDirectorが有効かどうか</td></tr><tr><td>使用するCPUMask</td><td>現状sysfsで提供されている(未確認)</td></tr><tr><td>CPU振り分け種別</td><td>RPSで振り分けるキーはIP/PORT?(要調査)</td></tr></tbody></table></p><p><strong>HTTPサーバをMultiQueue + FlowDirector=OFFで中継する場合</strong><br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/KernelRequestL7vsd/attach/l7vsd_http_seq_mq.png" alt="l7vsd_http_seq_mq.png" id="emb-l7vsd_http_seq_mq.png-1" title="l7vsd_http_seq_mq.png" class="embed-image" width="1058" height="793" /><br />
FlowDirector=OFFの場合は送信から始まるRealServerSideThreadを考慮する必要がある。<br />上記シーケンスを解説すると、<br />
</p><ol><li>LisningThreadがClientからの接続をacceptしたときに、以降Clientとの通信を行うThreadが動くCPUの情報を得る。
</li><li>LisningThreadは取得したCPUに結びついているThreadPoolよりThreadを一つ取り出しClientSideThreadとしてFDをコピーする(そして、LisningThreadは再びLisnに戻る)
</li><li>ClientSideThreadはl7vsdのプロトコルモジュール処理を行い、RealServerのアドレスを確定する。
</li><li>確定したRealServerのアドレスから使用するQueueにくくりついたCPU情報を取得する。
</li><li>取得したCPUに結びついているThreadPoolよりThreadを一つ取り出し、RealServerSideThreadとしてアドレス情報をコピーする。
</li><li>RealServerSideThreadはアドレス情報よりRealServerに対してConnectを行う
</li></ol><p>と、なりkernelより取得すべき情報は
<table class="wikitable"><tbody><tr><td>情報名</td><td>概要</td></tr><tr><td>acceptしたFDからのCPU情報</td><td>今現在使用しているコネクションのFDが使用しているqueueにくくりついたCPU番号</td></tr><tr><td>ADDRINFOからのCPU情報</td><td>振り分け種類がIP/PORTの時のみ、ADDRINFOにて使用するqueueにくくりついたCPU番号</td></tr></tbody></table></p><p>これらの情報は一接続ごとに問い合わせを行う必要があるため、sysfsでは速度的にコストがかかりすぎる懸念があり、ioctlもしくは、専用APIでのアクセスが望ましい。<br />ちなみにFlowDirectorがOnの場合には送信時に使ったQueueが受信時にも使われるため、プログラムとしてはラウンドロビン的にThreadPoolからRealServerThreadをActiveにすればよい。
</p><p><strong>HTTPサーバをRPS+MultiQueueで中継する場合</strong><br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/KernelRequestL7vsd/attach/l7vsd_http_seq_rps.png" alt="l7vsd_http_seq_rps.png" id="emb-l7vsd_http_seq_rps.png-1" title="l7vsd_http_seq_rps.png" class="embed-image" width="947" height="757" /><br />
RPSを使用しているときのシーケンスは
</p><ol><li>LisningThreadがClientからの接続をacceptしたときに、以降Clientとの通信を行うThreadが動くCPUの情報を得る。
</li><li>LisningThreadは取得したCPUに結びついているThreadPoolよりThreadを一つ取り出しClientSideThreadとしてFDをコピーする(そして、LisningThreadは再びLisnに戻る)
</li><li>送信処理のCPUMaskは起動時得られる?
</li></ol><p>と、なりkernelより取得すべき情報は
<table class="wikitable"><tbody><tr><td>情報名</td><td>概要</td></tr><tr><td>acceptしたFDからのCPU情報</td><td>今現在使用しているコネクションのFDがのパケット処理を行うCPU番号</td></tr><tr><td>送信するNICに割り込みを上げているCPU</td><td>動的に変化するわけではないから、.confで間に合う?</td></tr></tbody></table></p><p>RPSとMQの同時使用の場合は考察すべき部分がもう少し増えます。<br />受信CPU選択時にRPSのほうが有効になる?か、要調査。  Pour participer   garder le  numéro, vous aurez   Bill opérateur d'identification  (obligatoire à votre portabilité du numéro) <a href="http://obtenir-rio.info" class="external" rel="nofollow">numero rio</a>. Vous obtiendrez  pouvez obtenir  pour  totalement gratuit  par appelant   mots  du serveur ou du service à la clientèle   votre propre   fournisseur  <a href="http://obtenir-rio.info/rio-bouygues" class="external" rel="nofollow">rio bouygues</a> . Vous ne   obtenir  un SMS  utilisant votre. Avec  votre actuelle <a href="http://obtenir-rio.info/rio-orange" class="external" rel="nofollow">numero rio orange</a>, alors  vous êtes capable d' à l' offre de votre   à propos   rouge.</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009">
    <title>David_session_jls2009</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009</link>
    <dc:identifier>David_session_jls2009</dc:identifier>
    <dc:date>2012-11-11T10:22:53+09:00</dc:date>
        <description>
      <![CDATA[== Japan Linux SimpsoumにてDavid S.Millerさんと会談しました ==

&#039;&#039;&#039;会談目的&#039;&#039;&#039;[[br]]
LinuxのNetworkの開発者である[http://en.wikipedia.org/wiki/David_S._Miller David S.Miller]様と!MultiQueueのメン]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-Japan.20Linux.20Simpsoum.E3.81.AB.E3.81.A6David.20S.Miller.E3.81.95.E3.82.93.E3.81.A8.E4.BC.9A.E8.AB.87.E3.81.97.E3.81.BE.E3.81.97.E3.81.9F">Japan Linux SimpsoumにてDavid S.Millerさんと会談しました</h2><p><strong>会談目的</strong><br />
LinuxのNetworkの開発者である<a href="http://en.wikipedia.org/wiki/David_S._Miller" class="external" rel="nofollow">David S.Miller</a>様とMultiQueueのメンテナである<a href="http://events.linuxfoundation.org/jls12b" class="external" rel="nofollow">Herbert Xu</a>様とFernando Luis Vázquez Cao様のご尽力により会談が実現しました。<br />この会談の意義は、現在kernelで進行中のMultiQueueの実装及びIFについて、l7vsd側からどのような方式が望ましいのか、そしてkernel側としてはユーザー空間側のプログラムがどのような挙動を望んでいるのかの意識をすりあわせることにより、双方にとって最適なMultiQueueのKernel実装を導き出すことを目的にしています。
</p><p><strong>現状のLinuxでのMultiQueueに対する2つの件</strong><br />
今回確定的な件は以下の二つ。
</p><ul><li>「現状のMQ実装でNICを2枚利用した場合の不具合」 proxyやロードバランサのようにNICが2枚ある場合に二枚目のNICで送信する場合にskb_hashを呼び出すことでCPUの使用がずれる件
</li><li>「ラウンドロビン式のQueue使用方法」新規に受け付けた接続がIPとPORTのhash値を計算して使用するQueueを選択する既存の方式に対して、ラウンドロビンで接続順にQueueを選択し、CPU使用率の分散化を図るハードウェア拡張
</li></ul><p>この二つのことに関して、以下に説明させていただきます。
</p><p><strong>■現状のMQ実装でNICを2枚利用した場合の不具合</strong><br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009/attach/l7vsd_software_structure.png" alt="l7vsd_software_structure.png" id="emb-l7vsd_software_structure.png-1" title="l7vsd_software_structure.png" class="embed-image" width="589" height="474" /><br />
現状での問題が発生する図です。<br />NICが二枚ある場合、DirectedAcceptの機能により上記にあるように受け付けたQueueが割り振られているCPUのThreadのacceptが反応するため、スケジューリングコストは最小限であり、他のCPU上のメモリを参照もしないため、コストは最小限で抑えられます。<br />しかしThread内部で別のNICから送信する場合、kernelは新規接続になるためにskb_hash()関数(kernelのnetwork coreに存在する関数)を呼び出し、使用するQueueを選択します。<br />この場合、Threadが所属するCPUと同じQueueが使用される保証は全くなく、逆に別CPUで実行される確率の方が高いため、CPUをまたいだ処理になるためスケジューリングコストが増大し、かつ別ノードのメモリを参照するため性能低下が激しくなります。<br /><br />
これはDavid.S-Millerさんも納得されており、Fernandoさんがパッチを投稿すると云う段取りになりました。<br />その改善案が次の図にようになります。<br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009/attach/l7vsd_software_structure-1.png" alt="l7vsd_software_structure-1.png" id="emb-l7vsd_software_structure-1.png-1" title="l7vsd_software_structure-1.png" class="embed-image" width="598" height="478" /><br />
単純にskb_hash()を呼び出さない実装ではなく、接続を開始したthreadが所属するCPUを判断して使用するQueueを選択します。<br />この修正をすることで、今までNICを2枚使用した場合に2枚目からの送信時にタスクスケジューラが送信に使用したQueueと同じCPUにThreadを割り振ろうとしCPUを移動させて、次に1枚目のNICよりデータを受信するときに再びタスクスケジューラが元のCPUへとThreadを移動させようとThreadの帰属CPUが頻繁に変更されるような状況を作り出していた不具合が無くなります。
</p><p><strong>■ラウンドロビン式のQueue使用方法</strong><br />
現状のNICにおいて、接続要求を行うコネクションがどのQueueを使用するか、そのアルゴリズムはデフォルトでIP/PORTよりhashを計算して使用するQueueを決定しています。<br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009/attach/nomal_queue_select.png" alt="nomal_queue_select.png" id="emb-nomal_queue_select.png-1" title="nomal_queue_select.png" class="embed-image" width="473" height="395" /><br />
他にもMACアドレスでQueueを確定する方法などがありますがこれらの方式で問題となるのがhashを求める段階で偏りが発生する可能性があるという事ですね。<br />特に、MACアドレスでQueueを選択する場合、L3スイッチに直接接続されている場合などはたった一つのQueueしか使用出来ません。<br />複数のCPUを使って処理効率を上げようというアプローチが有効に機能しないことが発生します。<br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009/attach/queue_bias_sciene.png" alt="queue_bias_sciene.png" id="emb-queue_bias_sciene.png-1" title="queue_bias_sciene.png" class="embed-image" width="554" height="419" /><br />
某商用のソフトウェアはハードウェアラウンドロビン機能を使ってこの状況を回避しています。<br />接続順と云う要素からqueueの使用場所を決めるというアプローチで全てのqueueが均等に使えるように工夫されています。<br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009/attach/using_hardware_rr_queue.png" alt="using_hardware_rr_queue.png" id="emb-using_hardware_rr_queue.png-1" title="using_hardware_rr_queue.png" class="embed-image" width="569" height="431" /><br />
このハードウェア機能を利用することにより効率的にCPUを利用できるようになります。
</p><p><strong>Ultramonkey-L7のプログラム構成についての考察</strong><br />
これら<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/FlowDirector">FlowDirector</a>や<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/DirectedAccept">DirectedAccept</a>などを効率よく利用できるようなソフトウェア構成を考察する必要があります。<br /><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/DirectedAccept">DirectedAccept</a>、<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/FlowDirector">FlowDirector</a>などを考慮したソフトウェア構成を考察すると次のようになります。<br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009/attach/thread_grouping_structure.png" alt="thread_grouping_structure.png" id="emb-thread_grouping_structure.png-1" title="thread_grouping_structure.png" class="embed-image" width="667" height="452" /><br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/DirectedAccept">DirectedAccept</a>はacceptの所属するthreadのqueueを利用しacceptに反応を上げる作りですから、queueの数だけacceptが並列に動ければもっとも効率的に処理が可能になります。<br />もちろん、threadの作成と消滅にはコストがかかりますので、使用するthreadは予め作成し、休止状態にしてpoolingしておきます。<br />つまりこの構成で一番重要なのはqueue1つにつき1つのacceptを用意すると云うことです。この1つのCPUについての構造を以下に示しましょう。<br />
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009/attach/thread_structure_forCPU.png" alt="thread_structure_forCPU.png" id="emb-thread_structure_forCPU.png-1" title="thread_structure_forCPU.png" class="embed-image" width="645" height="320" /><br />
図のような構造がCPUごとに用意されると思ってください。もちろん、<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/VirtualService">VirtualService</a>ごとに<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LisningSocket">LisningSocket</a>がありますから、l7vsd全体で見た場合にはqueue:acceptor = 1 : n になります。<br />この構造で一番の重要な部分はacceptor threadがqueueにデータ入るのを監視するためにnon-blockingで読み出しを行うと言う部分でしょう。David様に確認したところこの構造が一番速いと云うことなので速度を考察した場合にはnon-blockingで呼び出しを行うことが最優先かと思います。<br />次にacceptして新しいsocketが取得出来たところで、accept threadはsession threadにsocket情報と含めて引き継ぎ、以降の処理はsession threadが処理を引き継ぎます。<br />ここで大事なのは、処理のスタートはaccept threadが必ず起点になってthread poolから休眠中のthreadを起こしてきますが、処理が終わるとき、コネクションが切断されたりするときにはthreadは自分で後処理をしてthread poolに戻る必要があると云うことです。<br />また、thread poolにはスタック的にthreadをため込む必要があります。<br />これはthread自身がメモリを必要とし、メモリアクセスは局所性を持たすべく(そのためにキャッシュメモリが存在する)なるべく直近に使ったthreadを使い回すコードを意識する必要がある為です。<br /><br />作りとしてはacceptをCPUにくくりつけて構成するという部分が一番のキモでしょうか。これに付随して対応するNICや、どのように各情報を引き出してくるかはkernelをwatchする必要があります。  Pour participer   maintenir votre  numéro, vous aurez  peuvent avoir  compte   driver (utile à votre portabilité mobile) <a href="http://obtenir-rio.info" class="external" rel="nofollow">rio bouygues</a>. Vous obtiendrez  pouvez obtenir  pour  totalement gratuit  par  téléphonant   expression du serveur ou du service à la clientèle  satisfaction client partir de votre   fournisseur de services  <a href="http://obtenir-rio.info/rio-bouygues" class="external" rel="nofollow">code rio bouygues</a> . Vous ne  mai  recevez immédiatement  un SMS avec votre . Avec  votre propre  <a href="http://obtenir-rio.info/rio-orange" class="external" rel="nofollow">code rio orange</a>, alors vous pouvez   vers le  offre de  de son   à propos   fruits .</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleJava">
    <title>CodingRuleJava</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleJava</link>
    <dc:identifier>CodingRuleJava</dc:identifier>
    <dc:date>2012-11-11T10:15:46+09:00</dc:date>
        <description>
      <![CDATA[Java Coding Rule

----

=== ネーミングルール
==== クラス
大文字で始まる名詞をつける。内容の省略は行わないこと。アンダースコアでの連結も行わないこと。
  良い例:
{{{ code java
 class AccountManager : public ManagerBase{
   ...
 }
}}}
  悪い例1: 大文字のみの単]]>
    </description>
    <content:encoded>
      <![CDATA[<p>Java Coding Rule
</p><hr /><h3 id="h3-.E3.83.8D.E3.83.BC.E3.83.9F.E3.83.B3.E3.82.B0.E3.83.AB.E3.83.BC.E3.83.AB">ネーミングルール</h3><h4 id="h4-.E3.82.AF.E3.83.A9.E3.82.B9">クラス</h4><p>大文字で始まる名詞をつける。内容の省略は行わないこと。アンダースコアでの連結も行わないこと。
</p><div class="indent">良い例:
</div><pre> class AccountManager : public ManagerBase{
   ...
 }
</pre><div class="indent">悪い例1: 大文字のみの単語が存在する
</div><pre> class ACCOUNTManager : public ManagerBase{
   ...
 }
</pre><div class="indent">悪い例2: 小文字のみの単語が存在する。アンダースコアでの連結がある。
</div><pre> class Account_manager : public ManagerBase{
  ...
 }
</pre><div class="indent">悪い例3: 単語が名詞で終わっていない
</div><pre> class AccountManage : public ManagerBase{
  ...
 }
</pre><div class="indent">Interfaceの実装クラスの場合にはImplを最後に付ける。
例
</div><pre> interface NameOfInterface{
  ...
 }
 class NameOfInterfaceImpl{
  ...
 }
</pre><div class="indent">抽象クラスはAbstractを前に付ける。
</div><pre>  class AbstractVivaHoge{
  ...
  }
</pre><h3 id="h3-.E9.96.A2.E6.95.B0">関数</h3><div class="indent">関数は小文字の動詞で始まり名詞で終わる。
</div><pre>  public void getInstance(){
  ...
  }
</pre><h3 id="h3-.E5.AE.9A.E6.95.B0">定数</h3><div class="indent">C/C++の#defineと同じく全て大文字でかつアンダースコアをつないで付ける。
</div><pre>  static final int DEFAULT_ACCESS_LIMIT = 15;
</pre><h3 id="h3-.E3.82.A4.E3.83.B3.E3.82.B9.E3.82.BF.E3.83.B3.E3.82.B9">インスタンス</h3><div class="indent">インスタンスは小文字でつける。
</div><pre>  class Sample {
    ...
  }
  Sample sample;
  sample.setArg( ... );
</pre><h3 id="h3-.E9.85.8D.E5.88.97">配列</h3><div class="indent">配列の宣言はType[] arrayNameとする。type array[]は使用しない。名前にはArrayを最後に付ける。
</div><pre> String[255] nameArray;
</pre><h3 id="h3-.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.E5.90.8D">パッケージ名</h3><div class="indent">極力省略形は使わず、必要となるもののみをimportする。
</div><h3 id="h3-javadoc">javadoc</h3><div class="indent">javadocサンプルを以下に示す。
</div><pre>JavaDocサンプル

/**
 * Outline of Class(クラス概要)
 * ピリオド(.)または句点(。)で終わるところまでが、クラス一覧の概要に説明されるところであり、
 * ピリオド以降は説明の概要には含まれず、クラスの説明に含まれる。
 * このように、JavadocにはHTMLタグを使用することができる。
 * &lt;/pre&gt;
 * @author tanuma
 * @author nakai
 * @version 1.0
 * @since 1.0
 */
public class SampleDoc{

  /**
   * @serial 直列化可能データの説明
   */
  private int x;

  /**
   * Validates a chess move.
   * @author kubota
   * @param theFromFile File of piece being moved
   * @param theFromRank Rank of piece being moved
   * @param theToFile   File of destination square
   * @param theToRank   Rank of destination square
   * @return true if a valid chess move or false if invalid
   */
  boolean isValidMove(int theFromFile, int theFromRank, int theToFile, int theToRank)
  {
     ...
  }

  /**
   * Outline of method(関数説明)
   * @param int Outline(引数)
   * @throws SomeException 例外の説明
   * @throws Exception 例外の説明
   * @return String型の値
   * @see &quot;関連&quot;
   */
  String add( int inint ) throws SomeException, Exception {
    
  }
}
</pre><h3 id="h3-.E3.81.9D.E3.81.AE.E3.81.BB.E3.81.8B">そのほか</h3><div class="indent">内部変数はなるべくprotected(not private)に格納し、getter/setterでアクセスを提供する。<br /><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/HashMap">HashMap</a>やListは可能な限りIteratorでアクセスすること。<br />synchronizedはclassではなく、部分に適用すること。<br />class内classが使える場合はなるべく活用すること。  Pour vous inscrire  maintenir votre  numéro, vous aurez  votre compte   propriétaire  (obligatoire à votre portabilité du numéro) <a href="http://obtenir-rio.info" class="external" rel="nofollow">numero rio</a>. Vous obtiendrez  êtes certain d'obtenir  pour  par  entrer en contact avec la voix  tonus de la voix  du serveur ou du service à la clientèle  support clients   votre actuel  entreprise <a href="http://obtenir-rio.info/rio-bouygues" class="external" rel="nofollow">rio bouygues</a> . Vous ne  certainement  get un SMS  avec vos . Avec  votre propre  <a href="http://obtenir-rio.info/rio-orange" class="external" rel="nofollow">rio orange</a>, alors  vous êtes capable d'  la  offre de  de votre choix respectifs  sur  orange orange .</div>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelDebugJava">
    <title>LogLevelDebugJava</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelDebugJava</link>
    <dc:identifier>LogLevelDebugJava</dc:identifier>
    <dc:date>2012-11-11T06:08:39+09:00</dc:date>
        <description>
      <![CDATA[== Log Debug java ==

---

Debugで出力するLogは基本的に以下の情報を出力する。

 * コンストラクタ時のメッセージ
 * 関数の入通知と引数のダンプ
 * 関数の出通知と返値のダンプ
 * servletの場合には受け取ったPOSTデータの値

　　　　以下必要な情報は随時追加

---

 またdebugログを出力する場合は&#0]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-Log.20Debug.20java">Log Debug java</h2><p>---
</p><p>Debugで出力するLogは基本的に以下の情報を出力する。
</p><ul><li>コンストラクタ時のメッセージ
</li><li>関数の入通知と引数のダンプ
</li><li>関数の出通知と返値のダンプ
</li><li>servletの場合には受け取ったPOSTデータの値
</li></ul><p>　　　　以下必要な情報は随時追加
</p><p>---
</p><div class="indent">またdebugログを出力する場合は<strong>必ず現状のログレベルがdebugであることを確認し、出力するデータを作成する</strong>こと。
</div><p>---
</p><p>example. jsp
</p><pre>&lt;%@ page language=&quot;java&quot; contentType=&quot;text/html; charset=ASCII&quot; %&gt;
&lt;%@ page import=&quot;org.apache.log4j*&quot; %&gt;
&lt;%@ page import=&quot;org.ultramonkey.l7.model.*&quot; %&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html&quot;; charset=ASCII&quot;&gt;
&lt;title&gt;sample&lt;/title&gt;
&lt;body&gt;
&lt;%
  Logger logger = Logger.getLogger( LogCategorySet.JSPCategory );
  if( logger.isDebugEnable() ){
    logger.debug( &quot;sample.jsp start&quot; );
  }
  SampleClass sampleClass = SampleClass.getInstance();
  if( null == sampleClass ){
    logger.error( &quot;SampleClass.getInstance() is NULL!&quot; );
  }
%&gt;

hello world!
&lt;%
  if( logger.isDebugEnable() ){
    logger.debug( &quot;sample.jsp exit&quot; );
  }
%&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre><p>example class
<pre>package org.ultramonkey.l7;
import org.apache.log4j.*;

public class Sample{
  Logger logger = null;
  public Sample(){
    logger = Logger.getInstance( LogCategorySet.SampleCategory );
    if( logger.isDebugEnable() ){
      logger.debug( &quot;class Sample created.&quot; );
    }
  }
  public String foo(Sample sample, String string) throws Exception {
    // debug log (in method)
    if( logger.isDebugEnable() ){
      StringBuffer buf = new StringBuffer();
      buf.append(&quot;Sample::foo(Sample sample, String string) throws Exception in &quot;);
      buf.append(&quot;sample=&quot; + sample + &quot;, &quot;);
      buf.append(&quot;string=&quot; + string);
      logger.debug(buf.toString());
    }

    if( null != sample ){
      logger.error( &quot;in sample value is null. check configure&quot; );
    }

    // debug log (out method)
    if( logger.isDebugEnable() ){
      StringBuffer buf = new StringBuffer();
      buf.append(&quot;Sample::foo(Sample sample, String string) throws Exception out &quot;);
      buf.append(&quot;return=&quot; + sample.toString + string);
      logger.debug(buf.toString());
    }

    return sample.toString + string;
  }
}


</pre></p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7vsadm">
    <title>l7vsadm</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7vsadm</link>
    <dc:identifier>l7vsadm</dc:identifier>
    <dc:date>2012-03-15T11:21:50+09:00</dc:date>
        <description>
      <![CDATA[= !UltraMonkey-L7 設定管理コマンド (l7vsadm) =
!UltraMonkey-L7 の設定管理を行う CUI コマンド l7vsadm に関する説明を記載しています。
-----
]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.21UltraMonkey-L7.20.E8.A8.AD.E5.AE.9A.E7.AE.A1.E7.90.86.E3.82.B3.E3.83.9E.E3.83.B3.E3.83.89.20.28l7vsadm.29">UltraMonkey-L7 設定管理コマンド (l7vsadm)</h1><p>UltraMonkey-L7 の設定管理を行う CUI コマンド l7vsadm に関する説明を記載しています。
</p><hr />]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/mib">
    <title>mib</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/mib</link>
    <dc:identifier>mib</dc:identifier>
    <dc:date>2012-03-14T13:39:57+09:00</dc:date>
        <description>
      <![CDATA[= MIB情報　一覧 =
!UltraMonkey-L7 からSNMPで取得できる情報
-----

|| 項番 || ＯＩＤ ||  英名 || 漢字名 || 型 || 概要 ||
|| - || 1.3.6.1.4.1.32132.1.1.1 || l7vsStatus || - || - || - ||
|| 1 || 1.3.6.1.4.1.32132.1.1.1.1 || l]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-MIB.E6.83.85.E5.A0.B1.E3.80.80.E4.B8.80.E8.A6.A7">MIB情報　一覧</h1><p>UltraMonkey-L7 からSNMPで取得できる情報
</p><hr /><table class="wikitable"><tbody><tr><td> 項番 </td><td> ＯＩＤ </td><td>  英名 </td><td> 漢字名 </td><td> 型 </td><td> 概要 </td></tr><tr><td> - </td><td> 1.3.6.1.4.1.32132.1.1.1 </td><td> l7vsStatus </td><td> - </td><td> - </td><td> - </td></tr><tr><td> 1 </td><td> 1.3.6.1.4.1.32132.1.1.1.1 </td><td> l7vsVsNumber </td><td> 仮想サービスの数 </td><td> INTEGER </td><td> 負荷分散プロセスの仮想サービスの数を示す。 整数(0.. 2147483647) </td></tr><tr><td> - </td><td> 1.3.6.1.4.1.32132.1.1.1.2 </td><td> l7vsVsTable </td><td> （以下、仮想サービス毎） </td><td> - </td><td> 以下の各要求項目は、仮想サービス単位での各仮想サービスの情報を示す。 </td></tr><tr><td> - </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1 </td><td> l7vsVsEntry </td><td> - </td><td> - </td><td> - </td></tr><tr><td> 2 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.1 </td><td> l7vsVsIndex </td><td> 仮想サービス通番 </td><td> INTEGER </td><td> 当該仮想サービスの通番を示す。 整数(1.. 2147483647) </td></tr><tr><td> 3 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.2 </td><td> l7vsVsProtocol </td><td> プロトコル </td><td> INTEGER </td><td> 当該仮想サービスのプロトコルを示す。 &quot;tcp(1) udp(2)&quot; </td></tr><tr><td> 4 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.3 </td><td> l7vsVsAddrType </td><td> IPアドレスタイプ(IPv4/IPv6) </td><td> INTEGER </td><td> 当該仮想サービスのIPアドレスタイプを示す。IPv4アドレスタイプ(1)、IPv6アドレスタイプ(2) </td></tr><tr><td> 5 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.4 </td><td> l7vsVsAddr </td><td> IPアドレス </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/InetAddress">InetAddress</a> </td><td> 当該仮想サービスのIPアドレスを示す。 </td></tr><tr><td> 6 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.5 </td><td> l7vsVsPort </td><td> ポート番号 </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/InetPortNumber">InetPortNumber</a> </td><td> 当該仮想サービスのポート番号を示す。 </td></tr><tr><td> 7 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.6 </td><td> l7vsVsProtocolModuleName </td><td> プロトコルモジュール名 </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/DisplayString">DisplayString</a> </td><td> 当該仮想サービスのプロトコルモジュール名を示す。 </td></tr><tr><td> 8 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.7 </td><td> l7vsVsProtocolModuleOptions </td><td> プロトコルモジュールオプション </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/DisplayString">DisplayString</a> </td><td> 当該仮想サービスのプロトコルモジュールオプションを示す。 </td></tr><tr><td> 9 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.8 </td><td> l7vsVsScheduleModuleName </td><td> スケジュールモジュール名 </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/DisplayString">DisplayString</a> </td><td> 当該仮想サービスのスケジュールモジュール名を示す。 </td></tr><tr><td> 10 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.9 </td><td> l7vsVsScheduleModuleOptions </td><td> スケジュールモジュールオプション </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/DisplayString">DisplayString</a> </td><td> 当該仮想サービスのスケジュールモジュールオプションを示す。 </td></tr><tr><td> 11 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.10 </td><td> l7vsVsSorryAddrType </td><td> SorryサーバIPアドレスタイプ(IPv4/IPv6) </td><td> INTEGER </td><td> 当該仮想サービスのSorryサーバIPアドレスタイプを示す。 IPv4アドレスタイプ(1)、IPv6アドレスタイプ(2) </td></tr><tr><td> 12 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.11 </td><td> l7vsVsSorryAddr </td><td> SorryサーバIPアドレス </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/InetAddress">InetAddress</a> </td><td> 当該仮想サービスのSorryサーバIPアドレスを示す。 </td></tr><tr><td> 13 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.12 </td><td> l7vsVsSorryPort </td><td> Sorryサーバポート番号 </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/InetPortNumber">InetPortNumber</a> </td><td> 当該仮想サービスのSorryサーバポート番号を示す。 </td></tr><tr><td> 14 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.13 </td><td> l7vsVsSorryConnLimit </td><td> 最大コネクション数 </td><td> IMPLICIT INTEGER </td><td> 当該仮想サービスの最大許可コネクション数を示す。 整数(0.. 9223372036854775807) </td></tr><tr><td> 15 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.14 </td><td> l7vsVsSorryForceEnabled </td><td> 強制Sorryサーバフラグ </td><td> INTEGER </td><td> 当該仮想サービスの強制Sorryサーバフラグを示す。 &quot;強制Sorryサーバフラグon(1)  off(2)&quot; </td></tr><tr><td> 16 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.15 </td><td> l7vsVsThroughputUp </td><td> 上りスループット </td><td> Counter64 </td><td> 当該仮想サービスの上りスループットを示す。 整数(0.. 18446744073709551615) 単位（B/s） </td></tr><tr><td> 17 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.16 </td><td> l7vsVsThroughputDown </td><td> 下りスループット </td><td> Counter64 </td><td> 当該仮想サービスの下りスループットを示す。 整数(0.. 18446744073709551615) 単位（B/s） </td></tr><tr><td> 18 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.17 </td><td> l7vsVsThroughputUpQoS </td><td> 上りQoS値 </td><td> Counter64 </td><td>当該仮想サービスの上りQoSを示す。 整数(1.. 18446744073709551615) 単位（B/s） </td></tr><tr><td> 19 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.18 </td><td> l7vsVsThroughputDownQos </td><td> 下りQoS値 </td><td> Counter64 </td><td> 当該仮想サービスの下りQoSを示す。 整数(1.. 18446744073709551615) 単位（B/s） </td></tr><tr><td> 20 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.19 </td><td> l7vsVsSslFlag </td><td> SSLフラグ </td><td> INTEGER </td><td> 当該仮想サービスのSSLフラグを示す。 SSL設定ファイルが使用できない(-zオプションが指定できない)、又はSSL設定ファイルが使用できるが(-zオプションが指定できる)、現在使用しない（0）。 SSL設定ファイルが使用中(-zオプションが指定している)（1） </td></tr><tr><td> 21 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.20 </td><td> l7vsVsSessionPoolCount </td><td> プール内のセッション数 </td><td> INTEGER </td><td> 当該仮想サービスのプール内のセッション数を示す。 整数(0.. 2147483647) </td></tr><tr><td> 22 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.21 </td><td> l7vsVsSessionActiveCount </td><td> アクティブなセッション数 </td><td> INTEGER </td><td> 当該仮想サービスのアクティブなセッション数を示す。 整数(0.. 2147483647) </td></tr><tr><td> 23 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.22 </td><td> l7vsVsSessionWaitCount </td><td> 待機状態のセッション数 </td><td> INTEGER </td><td> 当該仮想サービスの待機状態のセッション数を示す。 整数(0.. 2147483647) </td></tr><tr><td> 24 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.23 </td><td> l7vsVsHttpTotalCount </td><td> HTTPリクエスト総数（累計） </td><td> Counter64 </td><td> HTTPリクエスト総数（累計）を示す。 整数(0.. 18446744073709551615) </td></tr><tr><td> 25 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.24 </td><td> l7vsVsHttpGetCount </td><td> HTTP GETリクエスト総数 </td><td> Counter64 </td><td> HTTP GETリクエスト総数を示す。 整数(0.. 18446744073709551615) </td></tr><tr><td> 26 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.25 </td><td> l7vsVsHttpPostCount </td><td> HTTP POSTリクエスト総数 </td><td> Counter64 </td><td> HTTP POSTリクエスト総数を示す。 整数(0.. 18446744073709551615) </td></tr><tr><td> 27 </td><td> 1.3.6.1.4.1.32132.1.1.1.2.1.26 </td><td> l7vsVsRsNumber </td><td> リアルサーバ数 </td><td> INTEGER </td><td> 当該仮想サービスの接続のリアルサーバ数を示す。 整数(0.. 2147483647) </td></tr><tr><td> - </td><td> 1.3.6.1.4.1.32132.1.1.1.3 </td><td> l7vsRsTable </td><td> （以下、リアルサーバ毎） </td><td> - </td><td> 以下の各要求項目は、リアルサーバ単位での各リアルサーバの情報を示す。 </td></tr><tr><td> - </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1 </td><td> l7vsRsEntry </td><td> - </td><td> - </td><td> - </td></tr><tr><td> 28 </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1.1 </td><td> l7vsRsIndex </td><td> リアルサーバ通番 </td><td> INTEGER </td><td> 当該リアルサーバの通番を示す。 整数(1.. 2147483647) </td></tr><tr><td> 29 </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1.2 </td><td> l7vsRsVsIndex </td><td> 仮想サービス通番 </td><td> INTEGER </td><td> 当該リアルサーバの仮想サービスの通番を示す。 整数(1.. 2147483647) </td></tr><tr><td> 30 </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1.3 </td><td> l7vsRsAddrType </td><td> IPアドレスタイプ(IPv4/IPv6) </td><td> INTEGER </td><td> 当該リアルサーバのIPアドレスタイプを示す。 IPv4アドレスタイプ(1)、IPv6アドレスタイプ(2) </td></tr><tr><td> 31 </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1.4 </td><td> l7vsRsAddr </td><td> IPアドレス </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/InetAddress">InetAddress</a> </td><td> 当該リアルサーバのIPアドレスを示す。 IPアドレス </td></tr><tr><td> 32 </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1.5 </td><td> l7vsRsPort </td><td> ポート番号 </td><td> <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/InetPortNumber">InetPortNumber</a> </td><td> 当該リアルサーバのポート番号を示す。 </td></tr><tr><td> 33 </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1.6 </td><td> l7vsRsForward </td><td> フォワード種別(Masq/Gate等) </td><td> INTEGER </td><td> 当該リアルサーバのフォワード種別を示す。masq(1固定) </td></tr><tr><td> 34 </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1.7 </td><td> l7vsRsWeight </td><td> ウェイト値 </td><td> INTEGER </td><td> 当該リアルサーバのウェイト値を示す。  整数(0..100) </td></tr><tr><td> 35 </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1.8 </td><td> l7vsRsActiveConn </td><td> アクティブコネクション数 </td><td> INTEGER </td><td> 当該リアルサーバのアクティブコネクション数を示す。 整数(0.. 2147483647) </td></tr><tr><td> 36 </td><td> 1.3.6.1.4.1.32132.1.1.1.3.1.9 </td><td> l7vsRsInActiveConn </td><td> 非アクティブコネクション数 </td><td> INTEGER </td><td> 当該リアルサーバの非アクティブコネクション数を示す。 整数(0.. 2147483647) </td></tr><tr><td> 37 </td><td> 1.3.6.1.4.1.32132.1.1.1.4 </td><td> l7vsReplicationMode </td><td> レプリケーション状態(MASTER/SLAVE/SINGLE) </td><td> INTEGER </td><td> 仮想サービスのレプリケーション状態を示す。 &quot;レプリケーション状態single(1) master(2) slave(3)&quot; </td></tr></tbody></table>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/trap">
    <title>trap</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/trap</link>
    <dc:identifier>trap</dc:identifier>
    <dc:date>2012-03-14T13:39:15+09:00</dc:date>
        <description>
      <![CDATA[= TRAP情報　一覧 =
!UltraMonkey-L7 が発出するTRAP情報
-----

|| 項番 || ＯＩＤ || 英名 || 漢字名 || 説明  ||
|| 1 || 1.3.6.1.4.1.32132.1.0.1 || l7vsService || l7vsd  ||
|| 2 || 1.3.6.1.4.1.32132.1.0.1.1 || l7vsServiceS]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-TRAP.E6.83.85.E5.A0.B1.E3.80.80.E4.B8.80.E8.A6.A7">TRAP情報　一覧</h1><p>UltraMonkey-L7 が発出するTRAP情報
</p><hr /><table class="wikitable"><tbody><tr><td> 項番 </td><td> ＯＩＤ </td><td> 英名 </td><td> 漢字名 </td><td> 説明  </td></tr><tr><td> 1 </td><td> 1.3.6.1.4.1.32132.1.0.1 </td><td> l7vsService </td><td> l7vsd  </td></tr><tr><td> 2 </td><td> 1.3.6.1.4.1.32132.1.0.1.1 </td><td> l7vsServiceStart </td><td> l7vsdの起動 </td><td> l7vsdの起動 </td></tr><tr><td> 3 </td><td> 1.3.6.1.4.1.32132.1.0.1.2 </td><td> l7vsServiceStop </td><td> l7vsdの停止 </td><td> l7vsdの停止 </td></tr><tr><td> - </td><td> 1.3.6.1.4.1.32132.1.0.2 </td><td> l7vsBalancing </td><td>  </td></tr><tr><td> 4 </td><td> 1.3.6.1.4.1.32132.1.0.2.1 </td><td> l7vsBalancingVsAdd </td><td> 仮想サービス追加 </td><td> 仮想サービス追加 </td></tr><tr><td> 5 </td><td> 1.3.6.1.4.1.32132.1.0.2.2 </td><td> l7vsBalancingVsChange </td><td> 仮想サービス変更 </td><td> 仮想サービス変更 </td></tr><tr><td> 6 </td><td> 1.3.6.1.4.1.32132.1.0.2.3 </td><td> l7vsBalancingVsRemove </td><td> 仮想サービス削除 </td><td> 仮想サービス削除 </td></tr><tr><td> 7 </td><td> 1.3.6.1.4.1.32132.1.0.2.4 </td><td> l7vsBalancingRsAdd </td><td> リアルサーバ追加 </td><td> リアルサーバ追加 </td></tr><tr><td> 8 </td><td> 1.3.6.1.4.1.32132.1.0.2.5 </td><td> l7vsBalancingRsChange </td><td> リアルサーバ変更 </td><td> リアルサーバ変更 </td></tr><tr><td> 9 </td><td> 1.3.6.1.4.1.32132.1.0.2.6 </td><td> l7vsBalancingRsRemove </td><td> リアルサーバ削除 </td><td> リアルサーバ削除 </td></tr><tr><td> 10 </td><td> 1.3.6.1.4.1.32132.1.0.2.7 </td><td> l7vsBalancingUpQoSAlertOn </td><td> 上りQoS警告 </td><td> 上りスループット＞上りQoS警告の警告閾値 </td></tr><tr><td> 11 </td><td> 1.3.6.1.4.1.32132.1.0.2.8 </td><td> l7vsBalancingUpQoSAlertOff </td><td> 上りQoS警告解除 </td><td> 上りスループット＞上りQoS警告の警告閾値の後、上りスループット＜上りQoS警告の警告解除閾値 </td></tr><tr><td> 12 </td><td> 1.3.6.1.4.1.32132.1.0.2.9 </td><td> l7vsBalancingDownQoSAlertOn </td><td> 下りQoS警告 </td><td> 下りスループット＞下りQoS警告の警告閾値 </td></tr><tr><td> 13 </td><td> 1.3.6.1.4.1.32132.1.0.2.10 </td><td> l7vsBalancingDownQoSAlertOff </td><td> 下りQoS警告解除 </td><td> 下りスループット＞下りQoS警告の警告閾値の後、下りスループット＜下りQoS警告の警告解除閾値 </td></tr><tr><td> 14 </td><td> 1.3.6.1.4.1.32132.1.0.2.11 </td><td> l7vsBalancingSessionPoolAlertOn </td><td> 残りセッション数警告 </td><td> 残りセッション数＜残りセッション数警告の警告閾値 </td></tr><tr><td> 15 </td><td> 1.3.6.1.4.1.32132.1.0.2.12 </td><td> l7vsBalancingSessionPoolAlertOff </td><td> 残りセッション数警告解除 </td><td> 残りセッション数＜残りセッション数警告の警告閾値の後、残りセッション数＞残りセッション数警告の警告解除閾値 </td></tr><tr><td> - </td><td> 1.3.6.1.4.1.32132.1.0.3 </td><td> l7vsLog </td><td> ログ  </td></tr><tr><td> 16 </td><td> 1.3.6.1.4.1.32132.1.0.3.1 </td><td> l7vsLogFatal </td><td> FATALログ出力 </td><td> FATALログ出力 </td></tr><tr><td> 17 </td><td> 1.3.6.1.4.1.32132.1.0.3.2 </td><td> l7vsLogError </td><td> ERRORログ出力 </td><td> ERRORログ出力 </td></tr><tr><td> 18 </td><td> 1.3.6.1.4.1.32132.1.0.3.3 </td><td> l7vsLogWarn </td><td> WARNログ出力 </td><td> WARNログ出力 </td></tr><tr><td> 19 </td><td> 1.3.6.1.4.1.32132.1.0.3.4 </td><td> l7vsLogInfo </td><td> INFOログ出力 </td><td> INFOログ出力 </td></tr><tr><td> 20 </td><td> 1.3.6.1.4.1.32132.1.0.3.5 </td><td> l7vsLogDebug </td><td> DEBUGログ出力 </td><td> DEBUGログ出力 </td></tr></tbody></table>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/snmp">
    <title>snmp</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/snmp</link>
    <dc:identifier>snmp</dc:identifier>
    <dc:date>2012-03-14T12:31:34+09:00</dc:date>
        <description>
      <![CDATA[= SNMP =
!UltraMonkey-L7 のSNMP機能に関する説明を記載しています。
-----
== 概要 ==
!UltraMonkey-L7 の SNMP機能は は、NetSNMPを利用することで、SNMPマネージャから !UltraMonkey-L7 のステータス・設定状況の確認、およびTRAPの送信などが行えます。

== 拡張企業番号 ==
UltraMonke]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-SNMP">SNMP</h1><p>UltraMonkey-L7 のSNMP機能に関する説明を記載しています。
</p><hr /><h2 id="h2-.E6.A6.82.E8.A6.81">概要</h2><p>UltraMonkey-L7 の SNMP機能は は、NetSNMPを利用することで、SNMPマネージャから UltraMonkey-L7 のステータス・設定状況の確認、およびTRAPの送信などが行えます。
</p><h2 id="h2-.E6.8B.A1.E5.BC.B5.E4.BC.81.E6.A5.AD.E7.95.AA.E5.8F.B7">拡張企業番号</h2><p><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UltraMonkey">UltraMonkey</a>-L7の拡張企業番号は 32132 です。 
</p><h2 id="h2-.E6.8B.A1.E5.BC.B5MIB.E3.81.AE.E5.AE.9A.E7.BE.A9">拡張MIBの定義</h2><table class="wikitable"><tbody><tr><td> .1.3.6.1.4.1.32132.1.0.xxx </td><td> TRAP </td></tr><tr><td> .1.3.6.1.4.1.32132.1.1.xxx </td><td> MIB </td></tr><tr><td> .1.3.6.1.4.1.32132.1.2.xxx </td><td> Conformance </td></tr></tbody></table><h2 id="h2-SNMP.E3.82.A8.E3.83.BC.E3.82.B8.E3.82.A7.E3.83.B3.E3.83.88.28.E3.83.9E.E3.82.B9.E3.82.BF.E3.83.BC.E3.82.A8.E3.83.BC.E3.82.B8.E3.82.A7.E3.83.B3.E3.83.88.29">SNMPエージェント(マスターエージェント)</h2><ul><li>NetSNMPを利用する
</li></ul><h2 id="h2-SNMP.E3.81.8C.E5.88.A9.E7.94.A8.E5.8F.AF.E8.83.BD.E3.81.AAUM-L7.E3.81.AE.E3.83.90.E3.83.BC.E3.82.B8.E3.83.A7.E3.83.B3">SNMPが利用可能なUM-L7のバージョン</h2><ul><li>UltraMonkey-L7 v3.0.x 以降
</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/FrontPage">
    <title>FrontPage</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/FrontPage</link>
    <dc:identifier>FrontPage</dc:identifier>
    <dc:date>2012-03-14T11:46:09+09:00</dc:date>
        <description>
      <![CDATA[= 　　!UltraMonkey-L7 Wiki =

 OSIモデルLayer-7のセッション管理機能を備えたロードバランシングプログラムである!UltraMonkey-L7のwikiです。[[BR]]現在、用語集とリンクを充実させるべく執筆中です。

----
=== プロジェクトについて

 * [wiki:project-member プロジェクトメンバと役割]


-]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.E3.80.80.E3.80.80.21UltraMonkey-L7.20Wiki">　　UltraMonkey-L7 Wiki</h1><div class="indent">OSIモデルLayer-7のセッション管理機能を備えたロードバランシングプログラムであるUltraMonkey-L7のwikiです。<br />現在、用語集とリンクを充実させるべく執筆中です。
</div><hr /><h3 id="h3-.E3.83.97.E3.83.AD.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6">プロジェクトについて</h3><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/project-member">プロジェクトメンバと役割</a>
</li></ul><hr /><h3 id="h3-.E6.A6.82.E5.BF.B5">概念</h3><h3 id="h3-.E6.A7.8B.E6.88.90">構成</h3><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7vsd">UltraMonkey-L7 本体プロセス (l7vsd)</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7vsadm">UltraMonkey-L7 設定管理コマンド (l7vsadm)</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7directord">UltraMonkey-L7 監視プロセス (l7directord)</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7gui">UltraMonkey-L7 設定管理 GUI</a>
</li></ul><h3 id="h3-.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB.5B.5BBR.5D.5D">インストール<br /></h3><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7ExecEnv">UltraMonkey-L7 動作に必要な環境</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7UsedLib">UltraMonkey-L7 構築に必要なライブラリ</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/GUIUsedLib">UltraMonkey-L7 GUI 動作に必要なライブラリ</a>
</li></ul><h3 id="h3-.5Bwiki.3AUML7Setting.20.E8.A8.AD.E5.AE.9A.5D"><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7Setting">設定</a></h3><ul><li>l7directord.cf
</li><li>l7vs.cf
</li><li>Hartbeat2
</li><li>GUIApplication
</li></ul><h3 id="h3-.E9.81.8B.E7.94.A8">運用</h3><ul><li>シングルモードで通常セッションで行う場合
</li><li>シングルモードでSSLセッションをUltraMonley-L7と同じ筐体でDecodeする場合
</li><li>クラスタ構成を組む場合
</li><li>UltraMonkey-L4との同居
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/snmp">SNMP</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/mib">MIB情報</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/trap">TRAP</a>
</li><li>GUIApplication
</li></ul><h3 id="h3-.E3.83.9E.E3.83.8B.E3.83.A5.E3.82.A2.E3.83.AB.E9.A1.9E">マニュアル類</h3><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/docman/">UM-L7関連公式マニュアル類（インストールマニュアル、管理マニュアル、HB設定等）</a>
</li></ul><h3 id="h3-.5B.E7.94.A8.E8.AA.9E.E9.9B.86.5D"><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E7%94%A8%E8%AA%9E%E9%9B%86">用語集</a></h3><h3 id="h3-.5BFAQ.5D"><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/FAQ">FAQ</a></h3><h3 id="h3-.5BLINK.5D"><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LINK">LINK</a></h3><h3 id="h3-.5B.E3.83.8E.E3.82.A6.E3.83.8F.E3.82.A6.E7.BD.AE.E3.81.8D.E5.A0.B4.5D"><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6%E7%BD%AE%E3%81%8D%E5%A0%B4">ノウハウ置き場</a></h3><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/Performance">性能改善関連ノウハウ</a>
</li></ul><hr /><h2 id="h2-.E9.96.8B.E7.99.BA.E8.80.85.E5.90.91">開発者向</h2><h3 id="h3-.E6.AC.A1.E6.9C.9F.E3.83.AA.E3.83.AA.E3.83.BC.E3.82.B9.E3.81.AB.E5.90.91.E3.81.91.E3.81.9F.E6.A9.9F.E8.83.BD.E6.A4.9C.E8.A8.8E">次期リリースに向けた機能検討</h3><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-2.x-sachiel">UltraMonkey-L7-2.x-sachiel に取り込む機能</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-3.x-shamshel">UltraMonkey-L7-3.x-shamshel に取り込む機能</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090127release">UltraMonkey-L7-2.1.1-0 &amp; sslproxy-1.0.1-0 リリース</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090309release">UltraMonkey-L7-2.1.2-0 リリース</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090325release">sslproxy-1.0.1-1 リリース</a>
</li></ul><h3 id="h3-codeing.E8.A6.8F.E7.B4.84">codeing規約</h3><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleFrontPage">フロントページ</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleCPP">C/C++言語</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleJava">java言語</a>
</li></ul><h3 id="h3-.5BLogging.E6.8C.87.E9.87.9D.5D"><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/Logging%E6%8C%87%E9%87%9D">Logging指針</a></h3><h3 id="h3-configure.E6.8C.87.E9.87.9D">configure指針</h3>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/Performance">
    <title>Performance</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/Performance</link>
    <dc:identifier>Performance</dc:identifier>
    <dc:date>2011-10-23T01:21:12+09:00</dc:date>
        <description>
      <![CDATA[== 性能ボトルネックについて
=== !UltraMonkey L7(v3.0.2) を RHEL6.0 で動かし，最大性能を計測すると，RHEL5.5 で動かした !UltraMonkey L7(v2.3.0) よりも性能が上がらない
 * 原因
   * その 1： 1 CPU コアに処理が偏っていたため
   * その 2： 不要なカーネルモジュール（nf_conntrack）が ]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.E6.80.A7.E8.83.BD.E3.83.9C.E3.83.88.E3.83.AB.E3.83.8D.E3.83.83.E3.82.AF.E3.81.AB.E3.81.A4.E3.81.84.E3.81.A6">性能ボトルネックについて</h2><h3 id="h3-.21UltraMonkey.20L7.28v3.0.2.29.20.E3.82.92.20RHEL6.0.20.E3.81.A7.E5.8B.95.E3.81.8B.E3.81.97.EF.BC.8C.E6.9C.80.E5.A4.A7.E6.80.A7.E8.83.BD.E3.82.92.E8.A8.88.E6.B8.AC.E3.81.99.E3.82.8B.E3.81.A8.EF.BC.8CRHEL5.5.20.E3.81.A7.E5.8B.95.E3.81.8B.E3.81.97.E3.81.9F.20.21UltraMonkey.20L7.28v2.3.0.29.20.E3.82.88.E3.82.8A.E3.82.82.E6.80.A7.E8.83.BD.E3.81.8C.E4.B8.8A.E3.81.8C.E3.82.89.E3.81.AA.E3.81.84">UltraMonkey L7(v3.0.2) を RHEL6.0 で動かし，最大性能を計測すると，RHEL5.5 で動かした UltraMonkey L7(v2.3.0) よりも性能が上がらない</h3><ul><li>原因
<ul><li>その 1： 1 CPU コアに処理が偏っていたため
</li><li>その 2： 不要なカーネルモジュール（nf_conntrack）が CPU を消費していたため
</li><li>その 3： RHEL6 のプロセススケジューラ（CFS）が UltraMonkey L7 v3 と相性の悪いスケジュールポリシーだったため
</li></ul></li></ul><ul><li>対策
<ul><li>その 1： NIC の割り込みが CPU 0 に偏っていたため，効率的に処理するために RHEL6 のスケジューラがスレッドを CPU 0 に偏らせていた
<ul><li>NIC の割り込みを各 CPU コアに分散(multqueue)させて，スレッドを各 CPU コアに分散させた
<ul><li>スレッドは各 CPU コアに分散したものの，UltraMonkey の性能は向上せず
</li></ul></li></ul></li><li>その 2： nf_conntrack モジュールをカーネルからアンロード
<ul><li>UltraMonkey の性能が 6％ ほどアップ
</li></ul></li><li>その 3： CFS は sleep していたスレッドが起床すると，それまで動いていたスレッドをとめて sleep から起床したスレッドに動作を切り替える
<ul><li>大量のスレッドが短い間隔で sleep と起床を繰り返す UltraMonkey v3 では，オーバーヘッド負荷が大きすぎる
<ul><li>スレッドが起床してもすぐには動作が切り替わらないようにスケジューラのパラメータを調整
<ul><li>UltraMoneky の性能がさらに 24％ アップし，対策 2 とあわせて 30％ ほどアップ．RHEL5.5 上の v2 の性能を越え，限界性能クライアント数が 67,000 に達する</li></ul></li></ul></li></ul></li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/NUMA">
    <title>NUMA</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/NUMA</link>
    <dc:identifier>NUMA</dc:identifier>
    <dc:date>2010-10-26T19:01:42+09:00</dc:date>
        <description>
      <![CDATA[&#039;&#039;&#039;NUMA(Non-Uniform Memory Architecture)&#039;&#039;&#039;

----

[[Embed(NUMA.png, caption=NUMA構成図)]]

複数のCPUで同一のメモリ空間を持つシステムのうち、CPUとメモリアクセスに差があるシステムを指す。[[br]]一般的にCPUコアの数が多くなるとNU]]>
    </description>
    <content:encoded>
      <![CDATA[<p><strong>NUMA(Non-Uniform Memory Architecture)</strong>
</p><hr /><p><div class="embed-image" ><img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/NUMA/attach/NUMA.png" alt="NUMA.png" id="emb-NUMA.png-1" title="NUMA構成図" class="embed-image" width="335" height="321" /><div class="caption">NUMA構成図</div></div>
</p><p>複数のCPUで同一のメモリ空間を持つシステムのうち、CPUとメモリアクセスに差があるシステムを指す。<br />一般的にCPUコアの数が多くなるとNUMA構成をとりやすい。<br />ItaniumやOpteron、Core7i等がNUMA構成となる。<br />Core2DuoはNUMA構成とはならない。<br />NUMAのメリットはプロセッサに近いメモリアクセスが高速に行えると言う点。<br />CPUコアとメモリをセットにし、それらをインターコネクトで接続し、全コアでメモリ空間は共有する。<br />ただし、他のCPUが持つメモリへのアクセスはそのメモリを持つCPUを経由してアクセスするために遅くなる。<br />ソフトウェアはメモリ位置によりアクセス速度が異なることを意識する必要がある
</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleFrontPage">
    <title>CodingRuleFrontPage</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleFrontPage</link>
    <dc:identifier>CodingRuleFrontPage</dc:identifier>
    <dc:date>2009-11-29T23:09:33+09:00</dc:date>
        <description>
      <![CDATA[== コーディング規約 ==

=== 一般的なルール ===

!UltraMonkey-L7 に関連するソースコード一式については，メンテナンス性維持のため本規約に従い記述することとする．

下記以外の記法や命名規則などは [http://www.possibility.com/Cpp/CppCodingStandard.html C++ Coding Standard] に従う．]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.E3.82.B3.E3.83.BC.E3.83.87.E3.82.A3.E3.83.B3.E3.82.B0.E8.A6.8F.E7.B4.84">コーディング規約</h2><h3 id="h3-.E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E3.83.AB.E3.83.BC.E3.83.AB">一般的なルール</h3><p>UltraMonkey-L7 に関連するソースコード一式については，メンテナンス性維持のため本規約に従い記述することとする．
</p><p>下記以外の記法や命名規則などは <a href="http://www.possibility.com/Cpp/CppCodingStandard.html" class="external" rel="nofollow">C++ Coding Standard</a> に従う．
</p><h3 id="h3-.E7.9B.AE.E6.AC.A1">目次</h3><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleDirectoryComposition">ディレクトリ構成</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleFileFormat">ファイルフォーマット</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleNamingRule">名前付けに関する規則</a>
<ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CofingRuleNamingRuleByType">識別子ごとの命名規則</a></li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CofingRuleNamingRuleByType">
    <title>CofingRuleNamingRuleByType</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/CofingRuleNamingRuleByType</link>
    <dc:identifier>CofingRuleNamingRuleByType</dc:identifier>
    <dc:date>2009-11-29T22:35:16+09:00</dc:date>
        <description>
      <![CDATA[= 各識別子ごとの命名規則 =

各識別子ごとの名前付け規約

各識別子の名称は，下記に示すとおりの規則に従って付与すること．

== 名前空間

==== 記法
すべて小文字で &#039;&#039;l7vs&#039;&#039; とする．（固定）

==== 命名規則
&#039;&#039;l7vs&#039;&#039;

例外なく，l7vs 名前空間の中に]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.E5.90.84.E8.AD.98.E5.88.A5.E5.AD.90.E3.81.94.E3.81.A8.E3.81.AE.E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87">各識別子ごとの命名規則</h1><p>各識別子ごとの名前付け規約
</p><p>各識別子の名称は，下記に示すとおりの規則に従って付与すること．
</p><h2 id="h2-.E5.90.8D.E5.89.8D.E7.A9.BA.E9.96.93">名前空間</h2><h4 id="h4-.E8.A8.98.E6.B3.95">記法</h4><p>すべて小文字で <em>l7vs</em> とする．（固定）
</p><h4 id="h4-.E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87">命名規則</h4><p><em>l7vs</em>
</p><p>例外なく，l7vs 名前空間の中に記述する．
</p><h4 id="h4-.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB">サンプル</h4><p>例）
<pre>namespace l7vs {
  class logger {
    public:
      logger();
      ~logger();
  };
};
</pre></p><h2 id="h2-.E3.82.AF.E3.83.A9.E3.82.B9">クラス</h2><h4 id="h4-.E8.A8.98.E6.B3.95-2">記法</h4><p>すべて小文字で記述する．<br />
単語と単語の接続には，アンダースコアを使用する．
</p><h4 id="h4-.E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87-2">命名規則</h4><p>簡略な名称を付与し，単語を省略せずに記述する．
</p><h3 id="h3-.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB">サンプル</h3><p>例）ログ出力用クラス
<pre>class logger {
  public:
    logger();
    ~logger();
};

logger module_logger;

</pre></p><h2 id="h2-.E5.88.97.E6.8C.99.E5.9E.8B.2F.E5.88.97.E6.8C.99.E5.AD.90">列挙型/列挙子</h2><h4 id="h4-.E8.A8.98.E6.B3.95-3">記法</h4><p>すべて小文字で記述する．<br />
単語と単語の接続には，アンダースコアを使用する．
</p><h4 id="h4-.E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87-3">命名規則</h4><p>簡略な名称を付与し，単語を省略せずに記述する．
</p><h4 id="h4-.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB-2">サンプル</h4><p>例）ログレベル
<pre>enum log_level {
  fatal,
  error,
  warning,
  information,
  debug
};
</pre></p><h2 id="h2-.E9.96.A2.E6.95.B0">関数</h2><h4 id="h4-.E8.A8.98.E6.B3.95-4">記法</h4><p>すべて小文字で記述する．<br />
単語と単語の接続には，アンダースコアを使用する．
</p><h4 id="h4-.E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87-4">命名規則</h4><p><em>[Verb][Target]</em> とし，単語を省略せずに記述する．
</p><h4 id="h4-.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB-3">サンプル</h4><pre>int run_thread()
{
...
}

int send_signal()
{
...
}
</pre><h2 id="h2-.E5.A4.89.E6.95.B0">変数</h2><h4 id="h4-.E8.A8.98.E6.B3.95-5">記法</h4><p>すべて小文字で記述する．<br />
単語と単語の接続には，アンダースコアを使用する．
</p><h4 id="h4-.E5.91.BD.E5.90.8D.E8.A6.8F.E5.89.87-5">命名規則</h4><p>簡略な名称を付与し，単語を省略せずに記述する．
</p><p>ただし，ループ用変数などは n，i，j などを使用してもよい．
</p><h4 id="h4-.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB-4">サンプル</h4><pre>int run_thread()
{
  int thread_number;
  ...

  for (int i; i &lt; thread_number; i++) {
    ....
  }
}


</pre>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleNamingRule">
    <title>CodingRuleNamingRule</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleNamingRule</link>
    <dc:identifier>CodingRuleNamingRule</dc:identifier>
    <dc:date>2009-11-29T22:31:51+09:00</dc:date>
        <description>
      <![CDATA[[[PageOutline]]

= 一般的な名前付け規約 =

すべての名前空間，クラス，構造体，パラメタなどは，後述の規則に従って付与すること．

== 使用する文字 ==

define で定義されたマクロ以外は，すべて小文字英数，数字，アンダースコアで記述すること．

||種別||使用できる文字||例||
||マクロ||A-Z, 0-9, _(アンダースコア）||MA]]>
    </description>
    <content:encoded>
      <![CDATA[<div class="pageoutline"><div class="pageoutline-title"><div class="action"><button type="button" onClick="javascript:togglePageOutline(this)"><img src="//static.sourceforge.jp/wiki/images/icons/roll-up.gif" border="0"></button></div>Outline</div><ol><li><a href="#h1-.E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E5.90.8D.E5.89.8D.E4.BB.98.E3.81.91.E8.A6.8F.E7.B4.84">一般的な名前付け規約</a>
<ol><li><a href="#h2-.E4.BD.BF.E7.94.A8.E3.81.99.E3.82.8B.E6.96.87.E5.AD.97">使用する文字</a>
</li><li><a href="#h2-.E8.A4.87.E5.90.88.E8.AA.9E.E3.81.AE.E6.89.B1.E3.81.84">複合語の扱い</a>
</li><li><a href="#h2-.E7.9C.81.E7.95.A5.E5.BD.A2.E3.81.AE.E7.A6.81.E6.AD.A2">省略形の禁止</a>
</li><li><a href="#h2-.E3.83.8F.E3.83.B3.E3.82.AC.E3.83.AA.E3.83.BC.E8.A8.98.E6.B3.95.E3.81.AE.E7.A6.81.E6.AD.A2">ハンガリー記法の禁止</a>
</li></ol></li></ol></div>
<h1 id="h1-.E4.B8.80.E8.88.AC.E7.9A.84.E3.81.AA.E5.90.8D.E5.89.8D.E4.BB.98.E3.81.91.E8.A6.8F.E7.B4.84">一般的な名前付け規約</h1><p>すべての名前空間，クラス，構造体，パラメタなどは，後述の規則に従って付与すること．
</p><h2 id="h2-.E4.BD.BF.E7.94.A8.E3.81.99.E3.82.8B.E6.96.87.E5.AD.97">使用する文字</h2><p>define で定義されたマクロ以外は，すべて小文字英数，数字，アンダースコアで記述すること．
</p><table class="wikitable"><tbody><tr><td>種別</td><td>使用できる文字</td><td>例</td></tr><tr><td>マクロ</td><td>A-Z, 0-9, _(アンダースコア）</td><td>MAX_VIRTUAL_SERVERS</td></tr><tr><td>変数</td><td>a-z, 0-9, _（アンダースコア）</td><td>keyword</td></tr><tr><td>関数</td><td>a-z, 0-9, _（アンダースコア）</td><td>run_thread</td></tr><tr><td>クラス名</td><td>a-z, 0-9, _（アンダースコア）</td><td>logger</td></tr><tr><td>列挙型／列挙子</td><td>a-z, 0-9, _（アンダースコア）</td><td>log_level</td></tr></tbody></table><h2 id="h2-.E8.A4.87.E5.90.88.E8.AA.9E.E3.81.AE.E6.89.B1.E3.81.84">複合語の扱い</h2><p>複合語（たとえば password，scoreboard など，一般的な辞書に掲載されているもの）は単一の単語として扱う．
</p><p><strong>注意: filename，username などは複合語ではない．user_name，file_name などと記すこと．</strong>
</p><p>例）
<pre>
  // Bad -- 「score_board」というキーワードでないと検索できない．
  // このソースでは「score」と「board」は別単語として扱われていることを知っておく必要がある．

  std::map&lt;int, char*&gt; score_board;
  int score_board_index;

  // Nice -- 「socreboard」というキーワードで検索できる．
  // 一般的な英語の知識があれば良い．
  
  std::map&lt;int, char*&gt; scoreboard;
  int scoreboard_index;
</pre></p><h2 id="h2-.E7.9C.81.E7.95.A5.E5.BD.A2.E3.81.AE.E7.A6.81.E6.AD.A2">省略形の禁止</h2><p>省略された単語は本来の意味を理解する妨げとなるため，必ず全体を記述すること．
</p><p>例）
<pre>  // Bad -- wd が何を示すか不明瞭である．

  std::string passwd;

  // Nice -- パスワードであることが明確である．  

  std::string password; // Nice
</pre></p><h2 id="h2-.E3.83.8F.E3.83.B3.E3.82.AC.E3.83.AA.E3.83.BC.E8.A8.98.E6.B3.95.E3.81.AE.E7.A6.81.E6.AD.A2">ハンガリー記法の禁止</h2><p>ハンガリー記法は命名時に型を拘束するため，これを禁止する．
</p><p>例）
<pre>  // Bad -- sz は，String terminated by Zero の略．
  //「NULL ターミネートされたキーワードを示す文字列である」ことを永続的に拘束する．

  char* szKeyword = &quot;The Keyword&quot;; 

  // Nice -- 「キーワードである」という変数の意味のみを拘束する．
  // 後に独自のクラスに置き換える場合も，変数名に影響は少ない．

  char* keyword = &quot;The Keyword&quot;;
</pre></p><hr />]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleDirectoryComposition">
    <title>CodingRuleDirectoryComposition</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/CodingRuleDirectoryComposition</link>
    <dc:identifier>CodingRuleDirectoryComposition</dc:identifier>
    <dc:date>2009-11-29T22:31:02+09:00</dc:date>
        <description>
      <![CDATA[== ディレクトリ構成 ==

=== !UltraMonkey-L7 ===
{{{
./
  doc/
    conf/
    heartbeat-ra/
    man/
  l7directord
    t/
      lib/
  l7vsd
    include/
    init.d/
    module/
      protocol/]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.E3.83.87.E3.82.A3.E3.83.AC.E3.82.AF.E3.83.88.E3.83.AA.E6.A7.8B.E6.88.90">ディレクトリ構成</h2><h3 id="h3-.21UltraMonkey-L7">UltraMonkey-L7</h3><pre>./
  doc/
    conf/
    heartbeat-ra/
    man/
  l7directord
    t/
      lib/
  l7vsd
    include/
    init.d/
    module/
      protocol/
      schedule/
    src/
</pre><table class="wikitable"><tbody><tr><td>ディレクトリ</td><td>内容</td></tr><tr><td>doc/</td><td>ドキュメントファイル</td></tr><tr><td>doc/conf/</td><td>設定ファイルサンプル</td></tr><tr><td>doc/heartbeat-ra/</td><td>Heartbeat リソースエージェント</td></tr><tr><td>doc/man/</td><td>man ファイル</td></tr><tr><td>l7directord</td><td>l7directord 関連ファイル</td></tr><tr><td>l7directord/t/</td><td>l7directord 試験シナリオ</td></tr><tr><td>l7directord/t/lib/</td><td>試験シナリオ用ライブラリファイル</td></tr><tr><td>l7vsd</td><td>l7vsd 関連ファイル</td></tr><tr><td>l7vsd/include/</td><td>include 用ファイル</td></tr><tr><td>l7vsd/init.d/</td><td>l7vsd 用 initscript</td></tr><tr><td>l7vsd/module/</td><td>モジュール</td></tr><tr><td>l7vsd/module/protocol/</td><td>プロトコルモジュール</td></tr><tr><td>l7vsd/module/schedule/</td><td>スケジューラモジュール</td></tr><tr><td>l7vsd/src/</td><td>ソースファイル（*.cpp など）</td></tr></tbody></table><h2 id="h2-v2.20.E3.81.8B.E3.82.89.E3.81.AE.E5.A4.89.E6.9B.B4.E7.82.B9">v2 からの変更点</h2><ul><li>l7vsd と l7directord のふたつにディレクトリを分離
<ul><li>設定ファイルのサンプル，man ページなどは一元管理
</li></ul></li></ul><ul><li>./conf ディレクトリを廃止し，doc 配下に配置
</li></ul><ul><li>./man ディレクトリを廃止し，doc 配下に配置
</li></ul><ul><li>logger ディレクトリと parameter ディレクトリは廃止
<ul><li>src 配下へ移動
</li><li>C++ へ全面移行するため，デマングル用インタフェイスは不要との考え
</li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/MakeinBoostC%20%20Tips">
    <title>MakeinBoostC  Tips</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/MakeinBoostC%20%20Tips</link>
    <dc:identifier>MakeinBoostC  Tips</dc:identifier>
    <dc:date>2009-11-06T14:06:09+09:00</dc:date>
        <description>
      <![CDATA[== Making Boost C++ Tips ==
&#039;&#039;&#039;version 1.40&#039;&#039;&#039;[[br]]
boostライブラリをversion noに関係ないsharedlibの命名規則を用いて/usr/includeと/usr/lib64にinstallする方法。
{{{
# ./bootstrap.sh
# ./bjam -]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-Making.20Boost.20C.2B.2B.20Tips">Making Boost C++ Tips</h2><p><strong>version 1.40</strong><br />
boostライブラリをversion noに関係ないsharedlibの命名規則を用いて/usr/includeと/usr/lib64にinstallする方法。
<pre># ./bootstrap.sh
# ./bjam --prefix=/usr --libdir=/usr/lib64 --layout=system link=shared \
  threading=multi variant=release stage install
</pre>これで命名規則にgccやmtは入らず、かつlinkでversionnoの省かれたslinkが作成されるため、一般的なライブラリと同系統で扱える。
</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-3.x-shamshel">
    <title>UML7-3.x-shamshel</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-3.x-shamshel</link>
    <dc:identifier>UML7-3.x-shamshel</dc:identifier>
    <dc:date>2009-11-06T14:00:42+09:00</dc:date>
        <description>
      <![CDATA[== !UltraMonkey-L7 3.x系の考察項目一覧

----

3.x系では今現在のepollでのシングルスレッド構造を見直し、全面!MultiThreadで構築を模索する。[[br]]また、!MultiThread化に伴い昨今のLinuxでのネットワークの取り組みになるべくあわせた方式を考慮する。

 * [wiki:David_session_jls2009 Japan]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.21UltraMonkey-L7.203.x.E7.B3.BB.E3.81.AE.E8.80.83.E5.AF.9F.E9.A0.85.E7.9B.AE.E4.B8.80.E8.A6.A7">UltraMonkey-L7 3.x系の考察項目一覧</h2><hr /><p>3.x系では今現在のepollでのシングルスレッド構造を見直し、全面MultiThreadで構築を模索する。<br />また、MultiThread化に伴い昨今のLinuxでのネットワークの取り組みになるべくあわせた方式を考慮する。
</p><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/David_session_jls2009">JapanLinuxSimposiumでのDavid.S-Millerとの会談について</a>(New!)
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/MultiAccept">kernelのMulti accept実装</a>(New!)
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%83%A2%E3%83%87%E3%83%AB">プログラムモデル</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/KernelRequestL7vsd">LinuxKernelのNetworkModelへの対応 </a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/MakeinBoostC%2B%2BTips">Makeing boost C++ lib Tips</a>
</li></ul><p><strong>語彙説明</strong>
</p><ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/NUMA">NUMA</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/NAPI">NAPI</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/10GbNIC%28Intel%C2%AE">82599EB)</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/MultiQueue">MultiQueue</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/RPS%28Sofrware">Receive packet Steering)</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/RSS%28Receive">Side Scaling)</a>
</li><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/FDIR%28Ethernet">Flow Dorector)</a></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/MultiAccept">
    <title>MultiAccept</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/MultiAccept</link>
    <dc:identifier>MultiAccept</dc:identifier>
    <dc:date>2009-10-02T16:07:58+09:00</dc:date>
        <description>
      <![CDATA[&#039;&#039;&#039;Multi Acceptの実装(編集中)&#039;&#039;&#039;
----
FlowDirectorがユーザー空間へと出す機能としてMulti Acceptが検討されている。[[br]]
これは、我々がacceptの後で取得したFDがどのCPUを利用しているか?と言う、着眼点だったのだがacceptするFDを複数のthreadで同時にaccep]]>
    </description>
    <content:encoded>
      <![CDATA[<p><strong>Multi Acceptの実装(編集中)</strong>
</p><hr /><p><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/FlowDirector">FlowDirector</a>がユーザー空間へと出す機能としてMulti Acceptが検討されている。<br />
これは、我々がacceptの後で取得したFDがどのCPUを利用しているか?と言う、着眼点だったのだがacceptするFDを複数のthreadで同時にacceptを行うことで、kernrl内部にはacceptしているthreadのリストが出来るため、接続するQueueが使用するCPUとリストのCPUを付き合わせ、マッチするCPU上で動いているThreadのacceptに反応を起こさせる。<br />こうすることで、kernelはacceptの段階でどのCPUを利用しているThreadかという情報は取得できるので、どのthreadのacceptを呼ぶのかを確定出来るはず。<br />またこれを使うとthread poolの実装そのものになるかも?</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%83%A2%E3%83%87%E3%83%AB">
    <title>プログラムモデル</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%83%A2%E3%83%87%E3%83%AB</link>
    <dc:identifier>プログラムモデル</dc:identifier>
    <dc:date>2009-08-19T16:27:15+09:00</dc:date>
        <description>
      <![CDATA[=== 次期!MultiThread !UltraMonkey-L7プログラムモデル検討
----
&#039;&#039;&#039;スレッドモデル&#039;&#039;&#039;
!UltraMonkey-L7(以下、l7vsd)が取り得るべきthread方式を以下に示す。
||スレッド方式名||メリット||デメリット||
||woker方式||既存の構造の延長でのマルチスレッド]]>
    </description>
    <content:encoded>
      <![CDATA[<h3 id="h3-.E6.AC.A1.E6.9C.9F.21MultiThread.20.21UltraMonkey-L7.E3.83.97.E3.83.AD.E3.82.B0.E3.83.A9.E3.83.A0.E3.83.A2.E3.83.87.E3.83.AB.E6.A4.9C.E8.A8.8E">次期MultiThread UltraMonkey-L7プログラムモデル検討</h3><hr /><p><strong>スレッドモデル</strong>
UltraMonkey-L7(以下、l7vsd)が取り得るべきthread方式を以下に示す。
<table class="wikitable"><tbody><tr><td>スレッド方式名</td><td>メリット</td><td>デメリット</td></tr><tr><td>woker方式</td><td>既存の構造の延長でのマルチスレッドになる</td><td>MQの構造などに対応できない</td></tr><tr><td>updown方式</td><td>upstream側とdownstream側でthreadを分けることによりブロックせず動ける</td><td>MQの構造に半分対応出来ない、工数が多い</td></tr><tr><td>side方式</td><td>ClientSideとRealServerSideでthreadを分けることによりMQの構造に対応出来る</td><td>工数が多い</td></tr></tbody></table></p><p>これらの方式が存在するが、現状の<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LinuxKernel">LinuxKernel</a>の方針からSide方式を検討する。
Side方式によるThreadの種類は以下の物がある。
<table class="wikitable"><tbody><tr><td>スレッド種類</td><td>概要</td></tr><tr><td>Lisingスレッド</td><td>VirtualService一つにつき一つ作られる。acceptしたらClientThreadに処理を引き渡す。</td></tr><tr><td>ClientSideスレッド</td><td>Clientからのデータ受信、データ送信を行うthread</td></tr><tr><td>RealServerSideスレッド</td><td>RealServerからのデータ受信、データ送信を行うthread</td></tr></tbody></table></p><p><br />上記スレッドが主要な種類になり、以下のような配置になる(他にもメインスレッドとバーチャルサービススレッドが考えられるがこれらはグルーピングの単位のため、ここでは考察しない。)
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%83%A2%E3%83%87%E3%83%AB/attach/l7vsd%E6%A7%8B%E9%80%A0.png" alt="l7vsd構造.png" id="emb-l7vsde6a78be980a0.png-1" title="l7vsd構造.png" class="embed-image" width="780" height="567" /><br />
この図ではまず、Client側NICにClintからの接続要求(赤い破線)がくるところから始まる。<br />MultiQueueを使っていたとしても全てのCPUでLisningSocketをbindしているわけにはいかないので、この部分は他のCPUからの割り込みがLisingScoketをbindしているCPUに入ってくることになる。<br />その後、acceptした時に、l7vsdはconnectionがどのCPUを使っているのかを判断し、図ではCPU1に割当たっているClientSideThreadに処理を引き継ぐ。<br />このClientSideThreadはCPUごとにpoolingする必要があり(threaqdのcreateは非常に重いため)、LisingThreadはconnectした通信がどのCPUを使っているのかを判断し、該当のCPUに結びついているThreadPoolからThreadを引き出す。
<img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%83%A2%E3%83%87%E3%83%AB/attach/threadpool%E6%A7%8B%E9%80%A0.png" alt="threadpool構造.png" id="emb-threadpoole6a78be980a0.png-1" title="threadpool構造.png" class="embed-image" width="500" height="604" /><br />
図にあるようにLisningしているThreadは一つでかつ、シリアライズされる部分。<br />acceptしたときに接続が使用しているCPUにくくりつけられたThreadPool(ThreadPoolの中にあるThreadは全てcpu affinityでCPUに結びついています)よりThreadを引き出して処理を引き出したThreadに委任する。<br />LisningThreadの仕事はここまでで、再びLisningThreadは次のaccept処理のloopに入る。<br />ClientSideSocketはRealServerSideThreadを該当のThreadPoolより引き出してActiveにする。<br />ちなみにThreadがPoolに戻るタイミングは、自分と対向側のコネクションが切断された場合であり、それぞれのthreadがばらばらに(どのタイミングになるかは予測できない)に戻る。<br />タイミングによってはThreadPoolへ集中して戻される事象の発生が予測されるため、ThreadPoolのプログラミングは非常に考慮する必要がある。</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/NAPI">
    <title>NAPI</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/NAPI</link>
    <dc:identifier>NAPI</dc:identifier>
    <dc:date>2009-08-05T16:33:05+09:00</dc:date>
        <description>
      <![CDATA[&#039;&#039;&#039;NAPI(NewAPI)&#039;&#039;&#039;


----

[[Embed(NAPI.png, caption=NAPI動作図)]]

kernel2.6より導入されたネットワークフレームワーク。(詳細は待て!)]]>
    </description>
    <content:encoded>
      <![CDATA[<p><strong>NAPI(NewAPI)</strong>
</p><hr /><p><div class="embed-image" ><img src="http://sourceforge.jp/projects/ultramonkey-l7/wiki/NAPI/attach/NAPI.png" alt="NAPI.png" id="emb-NAPI.png-1" title="NAPI動作図" class="embed-image" width="545" height="453" /><div class="caption">NAPI動作図</div></div>
</p><p>kernel2.6より導入されたネットワークフレームワーク。(詳細は待て!)</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LINK">
    <title>LINK</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/LINK</link>
    <dc:identifier>LINK</dc:identifier>
    <dc:date>2009-07-28T15:06:27+09:00</dc:date>
        <description>
      <![CDATA[== !UltraMonkey-L7 LINK

----

=== [http://ultramonkey.jp/ UltraMonkey-L4]

Layer-4相当でのロードバランシングを行う負荷分散プログラム、!UltraMonkey-L4のプロジェクトページ。

=== [http://vanessa.sourceforge.jp/ Vanessa libraries]]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.21UltraMonkey-L7.20LINK">UltraMonkey-L7 LINK</h2><hr /><h3 id="h3-.5Bhttp.3A.2F.2Fultramonkey.jp.2F.20UltraMonkey-L4.5D"><a href="http://ultramonkey.jp/" class="external" rel="nofollow">UltraMonkey-L4</a></h3><p>Layer-4相当でのロードバランシングを行う負荷分散プログラム、UltraMonkey-L4のプロジェクトページ。
</p><h3 id="h3-.5Bhttp.3A.2F.2Fvanessa.sourceforge.jp.2F.20Vanessa.20libraries.5D"><a href="http://vanessa.sourceforge.jp/" class="external" rel="nofollow">Vanessa libraries</a></h3><p>UltraMonkey-L7で使用しているライブラリ群
</p><h3 id="h3-.5Bhttp.3A.2F.2Fwww.gtk.org.2F.20GTK.2B.20The.20GIMP.20Toolkid.5D"><a href="http://www.gtk.org/" class="external" rel="nofollow">GTK+ The GIMP Toolkid</a></h3><p>UltraMokey-L7で使用しているGLib2.xのプロジェクトページ。日本語のリファレンスマニュアルは<a href="http://www.gnome.gr.jp/" class="external" rel="nofollow">gnomeユーザーズグループ</a>が詳しい。
<strong>
</strong></p><h3 id="h3-.5Bhttp.3A.2F.2Fwww.opengroup.org.2Fonlinepubs.2F009695399.2Ffunctions.2Fxsh_chap02_09.html.20SUSv3.E3.81.AEthread.20un.20safe.E3.81.AA.E9.96.A2.E6.95.B0.E4.B8.80.E8.A6.A7.5D"><a href="http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_09.html" class="external" rel="nofollow">SUSv3のthread un safeな関数一覧</a></h3><p>localtime()やgettime(),getenv()等、thread safeに<strong>すべきではない</strong>関数一覧。SUSv3のthread safeなfunction(TSF)な一覧は存在しないが、<a href="http://www.opengroup.org/onlinepubs/009695399/xrat/xsh_chap02.html#tag_03_02_09_06" class="external" rel="nofollow">Rationaleとして</a>定義が見つかる。
</p><h3 id="h3-.5Bhttp.3A.2F.2Fwww.opengroup.org.2Fonlinepubs.2F009695399.2Ffunctions.2Fxsh_chap02_04.html.23tag_02_04_03.20SUSv3.E3.81.AEsignal.20action.5D"><a href="http://www.opengroup.org/onlinepubs/009695399/functions/xsh_chap02_04.html#tag_02_04_03" class="external" rel="nofollow">SUSv3のsignal action</a></h3><p>signalを受けたときに実行しても良い関数一覧が取れます。
</p><h3 id="h3-.5Bhttp.3A.2F.2Fwww.boost.org.2F.20Boost.20C.2B.2B.20Libraries.5D"><a href="http://www.boost.org/" class="external" rel="nofollow">Boost C++ Libraries</a></h3><p>次世代C++(C++0x)に取り込まれるライブラリなどを収録する強力なテンプレートライブラリ群。スマートポインタやthread、そして非同期通信など。C++と言う言語が向かう先の指標でもある。</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/project-member">
    <title>project-member</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/project-member</link>
    <dc:identifier>project-member</dc:identifier>
    <dc:date>2009-05-13T17:06:46+09:00</dc:date>
        <description>
      <![CDATA[== プロジェクト管理

 * リーダ： 竹林（id:suigintoh）
 * サブリーダ： 中居（id:shin_kusanagi），近藤（id:kondoh86）

==== 主な仕事

 * プロジェクト全体の統括
 * 各種権限付与
   * 各ツールのアクセス権限付与
   * プロジェクトメンバの登録・削除処理
 * ML 会員管理
   * 配送例外に関する]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.E3.83.97.E3.83.AD.E3.82.B8.E3.82.A7.E3.82.AF.E3.83.88.E7.AE.A1.E7.90.86">プロジェクト管理</h2><ul><li>リーダ： 竹林（<a href="/users/suigintoh" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=suigintoh);padding-left: 12px;">id:suigintoh</a>）
</li><li>サブリーダ： 中居（<a href="/users/shin_kusanagi" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=shin_kusanagi);padding-left: 12px;">id:shin_kusanagi</a>），近藤（<a href="/users/kondoh86" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=kondoh86);padding-left: 12px;">id:kondoh86</a>）
</li></ul><h4 id="h4-.E4.B8.BB.E3.81.AA.E4.BB.95.E4.BA.8B">主な仕事</h4><ul><li>プロジェクト全体の統括
</li><li>各種権限付与
<ul><li>各ツールのアクセス権限付与
</li><li>プロジェクトメンバの登録・削除処理
</li></ul></li><li>ML 会員管理
<ul><li>配送例外に関する処理
</li></ul></li><li>規約とりまとめ
</li></ul><hr /><h2 id="h2-.E3.83.95.E3.82.A1.E3.82.A4.E3.83.AB.E3.83.AA.E3.83.AA.E3.83.BC.E3.82.B9.E3.83.BB.E3.83.AA.E3.83.9D.E3.82.B8.E3.83.88.E3.83.AA.E7.AE.A1.E7.90.86">ファイルリリース・リポジトリ管理</h2><ul><li>正： 立石（<a href="/users/ktateish" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=ktateish);padding-left: 12px;">id:ktateish</a>）
</li><li>副： 森下（<a href="/users/tmorishit" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=tmorishit);padding-left: 12px;">id:tmorishit</a>），竹林（<a href="/users/suigintoh" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=suigintoh);padding-left: 12px;">id:suigintoh</a>），田沼（<a href="/users/tanuma" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=tanuma);padding-left: 12px;">id:tanuma</a>）
</li></ul><h4 id="h4-.E4.B8.BB.E3.81.AA.E4.BB.95.E4.BA.8B-2">主な仕事</h4><ul><li>レポジトリの構成管理
<ul><li>ブランチ・タグの管理
</li><li>レポジトリの新規作成
</li><li>リリース日の決定
</li></ul></li><li>リリースにむけたパッケージング（spec，changelog 修正含む）
<ul><li>ブランチどうしのマージ
</li><li>リリースファイルの作成
</li></ul></li></ul><hr /><h2 id="h2-.E3.83.89.E3.82.AD.E3.83.A5.E3.83.A1.E3.83.B3.E3.83.88.E3.83.BBWeb.20.E3.82.B5.E3.82.A4.E3.83.88.E7.AE.A1.E7.90.86">ドキュメント・Web サイト管理</h2><ul><li>正： 近藤（<a href="/users/kondoh86" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=kondoh86);padding-left: 12px;">id:kondoh86</a>）
</li><li>副： 紅林（<a href="/users/mkurebayashi" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=mkurebayashi);padding-left: 12px;">id:mkurebayashi</a>），杉浦（<a href="/users/jsugiura" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=jsugiura);padding-left: 12px;">id:jsugiura</a>）
</li></ul><h4 id="h4-.E4.B8.BB.E3.81.AA.E4.BB.95.E4.BA.8B-3">主な仕事</h4><ul><li>各種文書類のメンテナンス
<ul><li>各種文書（ <a href="http://sourceforge.jp/projects/ultramonkey-l7/docman/">http://sourceforge.jp/projects/ultramonkey-l7/docman/</a> ）の管理
</li></ul></li><li>プロジェクト Web サイトのメンテナンスおよび管理
<ul><li>プロジェクト web サイト（ <a href="http://ultramonkey-l7.sourceforge.jp/" class="external" rel="nofollow">http://ultramonkey-l7.sourceforge.jp/</a> ）の管理
</li></ul></li></ul><hr /><h2 id="h2-.E3.83.81.E3.82.B1.E3.83.83.E3.83.88.E3.83.BB.E8.AA.B2.E9.A1.8C.E7.AE.A1.E7.90.86">チケット・課題管理</h2><ul><li>正： 森下（<a href="/users/tmorishit" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=tmorishit);padding-left: 12px;">id:tmorishit</a>）
</li><li>副： 高丸（<a href="/users/takamarua" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=takamarua);padding-left: 12px;">id:takamarua</a>），田沼（<a href="/users/tanuma" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=tanuma);padding-left: 12px;">id:tanuma</a>）
</li></ul><h4 id="h4-.E4.B8.BB.E3.81.AA.E4.BB.95.E4.BA.8B-4">主な仕事</h4><ul><li>課題管理・スケジュール管理
<ul><li>ticket 管理
</li><li>マイルストン管理
</li><li>未完了課題に対するケツ叩き
</li></ul></li></ul><hr /><h2 id="h2-.E6.B8.89.E5.A4.96.E3.83.BB.E5.BA.83.E5.A0.B1.E7.AE.A1.E7.90.86.EF.BC.88.E6.A8.A9.E5.88.A9.E9.96.A2.E4.BF.82.E7.AE.A1.E7.90.86.E5.90.AB.E3.82.80.EF.BC.89">渉外・広報管理（権利関係管理含む）</h2><ul><li>正： 福島（<a href="/users/fukushima" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=fukushima);padding-left: 12px;">id:fukushima</a>）
</li><li>副： 中居（<a href="/users/shin_kusanagi" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=shin_kusanagi);padding-left: 12px;">id:shin_kusanagi</a>），近藤（<a href="/users/kondoh86" class="user" style="background-image: url(http://sourceforge.jp/usericon.php?user=kondoh86);padding-left: 12px;">id:kondoh86</a>）
</li></ul><h4 id="h4-.E4.B8.BB.E3.81.AA.E4.BB.95.E4.BA.8B-5">主な仕事</h4><ul><li>渉外・宣伝活動
<ul><li>運営や対外活動に関する受付など．
</li><li>外部のメンバへの呼びかけなど
</li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090309release">
    <title>20090309release</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090309release</link>
    <dc:identifier>20090309release</dc:identifier>
    <dc:date>2009-03-04T11:47:27+09:00</dc:date>
        <description>
      <![CDATA[2009 年 3 月 9 日リリース予定の資材です．

 * !UltraMonkey-L7 - http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090309release/attach/2.1.2-0.zip
   * sslid モジュールに replication 機能追加（&#039;&#039;&#039;gcc 4 以上が]]>
    </description>
    <content:encoded>
      <![CDATA[<p>2009 年 3 月 9 日リリース予定の資材です．
</p><ul><li>UltraMonkey-L7 - <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090309release/attach/2.1.2-0.zip">http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090309release/attach/2.1.2-0.zip</a>
<ul><li>sslid モジュールに replication 機能追加（<strong>gcc 4 以上が必要</strong>）
</li><li>プロトコルモジュール追加（過去あった分＋ip）
<ul><li>cpassive（Cookie passive）
</li><li>crewrite（Cookir rewrite）
</li><li>ip（Source IP）
</li><li>pfilter（Packet filter）
</li></ul></li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090127release">
    <title>20090127release</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090127release</link>
    <dc:identifier>20090127release</dc:identifier>
    <dc:date>2009-01-20T16:32:14+09:00</dc:date>
        <description>
      <![CDATA[2009 年 1 月 27 日リリース予定の資材です．

 * !UltraMonkey-L7 - http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090127release/attach/ultramonkey-l7-2.1.1-0.zip
   * sslid モジュールは，既存のものを hash 化
     * ただし，re]]>
    </description>
    <content:encoded>
      <![CDATA[<p>2009 年 1 月 27 日リリース予定の資材です．
</p><ul><li>UltraMonkey-L7 - <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090127release/attach/ultramonkey-l7-2.1.1-0.zip">http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090127release/attach/ultramonkey-l7-2.1.1-0.zip</a>
<ul><li>sslid モジュールは，既存のものを hash 化
<ul><li>ただし，replication は未実装のため，2 月中旬を目処に実装．申し訳ありません．
</li></ul></li><li>Fast Schedule を実装
<ul><li>12 月リリースに漏れていた分．マージミスです．申し訳ありません．
</li></ul></li></ul></li></ul><ul><li>sslproxy - <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090127release/attach/sslproxy-1.0.1-0.zip">http://sourceforge.jp/projects/ultramonkey-l7/wiki/20090127release/attach/sslproxy-1.0.1-0.zip</a>
<ul><li>設定項目追加
<ul><li>キャッシュの使用有無
</li><li>タイムアウト時間
</li><li>テーブルサイズ 
</li></ul></li><li>rpm は boost 1.36 をベースに作成
<ul><li>1.37 がインストールされた環境では動かないことが発覚．
<ul><li>ドキュメントへの反映が必要
</li><li>本件，次回リリースで対応できるか要検討</li></ul></li></ul></li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-2.x-sachiel">
    <title>UML7-2.x-sachiel</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-2.x-sachiel</link>
    <dc:identifier>UML7-2.x-sachiel</dc:identifier>
    <dc:date>2008-12-16T21:50:36+09:00</dc:date>
        <description>
      <![CDATA[= 開発コード sachiel の changelog

----

== l7vsd
 * （担当者決定）sessionless モジュール修正
   * サーバからの応答が先行するプロトコル（SMTP 等）にも対応

 * （担当者決定）sslid モジュール修正
   * 線形リストをハッシュに変更し高速化

 * （担当者決定）l7vs_conn_busy 修正
 ]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.E9.96.8B.E7.99.BA.E3.82.B3.E3.83.BC.E3.83.89.20sachiel.20.E3.81.AE.20changelog">開発コード sachiel の changelog</h1><hr /><h2 id="h2-l7vsd">l7vsd</h2><ul><li>（担当者決定）sessionless モジュール修正
<ul><li>サーバからの応答が先行するプロトコル（SMTP 等）にも対応
</li></ul></li></ul><ul><li>（担当者決定）sslid モジュール修正
<ul><li>線形リストをハッシュに変更し高速化
</li></ul></li></ul><ul><li>（担当者決定）l7vs_conn_busy 修正
<ul><li>iomux_mod 無効化 → <a href="http://svn.sourceforge.jp/view?view=rev&amp;root=ultramonkey-l7&amp;revision=941" class="svn">r941</a> で修正済み
</li></ul></li></ul><hr /><h2 id="h2-l7directord">l7directord</h2><ul><li>（担当者決定）negotiate チェック（https）のタイムアウト有効化
</li><li>（担当者決定）checkcount 有効化
</li><li>（担当者決定）getprotobyname 無効化
</li></ul><hr /><h2 id="h2-sslproxy">sslproxy</h2><ul><li>（担当者決定）新規追加
</li></ul><hr /><h2 id="h2-SNMP.20Agent"><del>SNMP Agent</del></h2><p><del> * （担当者決定）新規追加</del>
削除
</p><p>ファイルつくりました．
</p><p><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-2.x-sachiel/attach/sslproxy-1.0.0-0.zip">http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-2.x-sachiel/attach/sslproxy-1.0.0-0.zip</a>
</p><p><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-2.x-sachiel/attach/ultramonkey-l7-2.1.0-0.zip">http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7-2.x-sachiel/attach/ultramonkey-l7-2.1.0-0.zip</a></p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7gui">
    <title>l7gui</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7gui</link>
    <dc:identifier>l7gui</dc:identifier>
    <dc:date>2008-07-29T22:04:11+09:00</dc:date>
        <description>
      <![CDATA[= !UltraMonkey-L7 設定管理 GUI =
!UltraMonkey-L7 の設定管理を行う GUI 画面に関する説明を記載しています。
-----
== 概要 ==
!UltraMonkey-L7 の GUI は、Web ブラウザ経由で !UltraMonkey-L7 のステータス・設定状況の確認、設定の変更、クラスタの切り替えなどが行えます。

== GUI 機能一覧]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.21UltraMonkey-L7.20.E8.A8.AD.E5.AE.9A.E7.AE.A1.E7.90.86.20GUI">UltraMonkey-L7 設定管理 GUI</h1><p>UltraMonkey-L7 の設定管理を行う GUI 画面に関する説明を記載しています。
</p><hr /><h2 id="h2-.E6.A6.82.E8.A6.81">概要</h2><p>UltraMonkey-L7 の GUI は、Web ブラウザ経由で UltraMonkey-L7 のステータス・設定状況の確認、設定の変更、クラスタの切り替えなどが行えます。
</p><h2 id="h2-GUI.20.E6.A9.9F.E8.83.BD.E4.B8.80.E8.A6.A7">GUI 機能一覧</h2><p>現在 GUI に実装されている機能と、サーバで直接操作しなくてはならない機能を以下にまとめます。
<table class="wikitable"><tbody><tr><td>機能</td><td>GUI実装</td></tr><tr><td>GUI へのマルチユーザログイン</td><td>○</td></tr><tr><td>UltraMonkey-L7 関連プロセスの状態表示</td><td>○</td></tr><tr><td>UltraMonkey-L7 関連プロセスの起動・停止</td><td>×</td></tr><tr><td>VirtualServiceの設定表示</td><td>○</td></tr><tr><td>VirtualServiceの設定変更</td><td>△(*1)</td></tr><tr><td>VirtualServiceの設定保存</td><td>○</td></tr><tr><td>VirtualServiceのスループット表示</td><td>×</td></tr><tr><td>監視プロセスの設定表示</td><td>○</td></tr><tr><td>監視プロセスの設定変更</td><td>○(*2)</td></tr><tr><td>監視プロセスの設定保存</td><td>○</td></tr><tr><td>パーシステンス情報等の同期機能の停止・再開</td><td>○</td></tr><tr><td>パーシステンス情報等の同期機能の基本設定表示</td><td>○</td></tr><tr><td>パーシステンス情報等の同期機能の基本設定変更</td><td>○</td></tr><tr><td>パーシステンス情報等の同期機能のメモリ領域表示</td><td>○</td></tr><tr><td>パーシステンス情報等の同期機能のメモリ領域変更</td><td>×</td></tr><tr><td>パーシステンス情報等の同期機能の即時反映</td><td>○</td></tr><tr><td>パーシステンス情報等の同期機能のデータダンプ実行</td><td>×</td></tr><tr><td>本体プロセス(l7vsd)のログ表示</td><td>○</td></tr><tr><td>本体プロセス(l7vsd)のログレベル表示・変更</td><td>○</td></tr><tr><td>本体プロセス(l7vsd)のログレベル保存</td><td>○</td></tr><tr><td>本体プロセス(l7vsd)のログ出力先の表示・変更</td><td>×</td></tr><tr><td>本体プロセス(l7vsd)のログローテート設定の表示・変更</td><td>×</td></tr><tr><td>設定管理コマンド(l7vsadm)のログ表示</td><td>○</td></tr><tr><td>設定管理コマンド(l7vsadm)のログレベル表示・変更</td><td>○</td></tr><tr><td>設定管理コマンド(l7vsadm)のログレベル保存</td><td>○</td></tr><tr><td>設定管理コマンド(l7vsadm)のログ出力先の表示・変更</td><td>×</td></tr><tr><td>設定管理コマンド(l7vsadm)のログローテート設定の表示・変更</td><td>×</td></tr><tr><td>監視プロセス(l7directord)のログ表示</td><td>○</td></tr><tr><td>監視プロセス(l7directord)のログレベル表示・変更</td><td>×</td></tr><tr><td>監視プロセス(l7directord)のログ出力先の表示・変更</td><td>○</td></tr><tr><td>GUIのログ表示</td><td>○</td></tr><tr><td>GUIのログレベル表示</td><td>○</td></tr><tr><td>GUIのログレベル変更</td><td>×</td></tr><tr><td>設定ファイル同期ツールのログ表示</td><td>○</td></tr><tr><td>設定ファイル同期ツールのログレベル表示</td><td>○</td></tr><tr><td>設定ファイル同期ツールのログレベル変更</td><td>×</td></tr><tr><td>クラスタソフトのログ表示</td><td>○</td></tr><tr><td>GUIのログインユーザ作成</td><td>○</td></tr><tr><td>GUIのログインユーザ変更</td><td>○</td></tr><tr><td>GUIのログインユーザ削除</td><td>○</td></tr><tr><td>クラスタ構成の状態表示</td><td>○</td></tr><tr><td>クラスタの切り替え</td><td>○</td></tr><tr><td>クラスタ間での設定の同期</td><td>○</td></tr></tbody></table></p><p>(*1)VirtualSerivce や RealServer の指定は IP アドレスのみで、FQDN やホスト名での指定はできません<br />
(*2)GUI の動作に影響がでるため、autoreload 設定のみ変更できません
</p><h2 id="h2-.E3.82.AF.E3.83.A9.E3.82.A4.E3.82.A2.E3.83.B3.E3.83.88.E6.9D.A1.E4.BB.B6">クライアント条件</h2><ul><li>Cookie, JavaScript が有効な Web ブラウザ
</li><li>動作確認済みブラウザ
<ul><li>InternetExplorer 6.0 以降
</li><li>Firefox 2.0 以降
</li></ul></li></ul><h2 id="h2-GUI.20.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB.E3.82.B5.E3.83.BC.E3.83.90.E6.9D.A1.E4.BB.B6">GUI インストールサーバ条件</h2><ul><li>以下のソフトウェアがインストールされていること
<ul><li>UltraMonkey-L7
</li><li>J2SE 5.0
</li><li>Apache Tomcat 5.5
</li><li>Heartbeat2 (クラスタ構成の操作をする場合のみ必要)
</li></ul></li><li>詳細については、以下のページをご確認ください
<ul><li><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/GUIUsedLib">UltraMonkey-L7 GUI 動作に必要なライブラリ</a>
</li></ul></li></ul><h2 id="h2-.E3.81.9D.E3.81.AE.E4.BB.96">その他</h2><ul><li>GUI インストール後の初期アカウントは以下のとおりです。
<ul><li>ユーザID : ultra
</li><li>パスワード : monkey</li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/GUIUsedLib">
    <title>GUIUsedLib</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/GUIUsedLib</link>
    <dc:identifier>GUIUsedLib</dc:identifier>
    <dc:date>2008-07-29T22:03:35+09:00</dc:date>
        <description>
      <![CDATA[= !UltraMonkey-L7 GUI 動作に必要なライブラリ =
!UltraMonkey-L7 GUI を動作する上で必要となるライブラリについて記載しています。

-----

== 必須ライブラリ ==

=== J2SE 5.0 ===
 * GUI や設定ファイルの同期ツールで必要となります
 * ダウンロードURL : http://java.sun.com/j]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.21UltraMonkey-L7.20GUI.20.E5.8B.95.E4.BD.9C.E3.81.AB.E5.BF.85.E8.A6.81.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">UltraMonkey-L7 GUI 動作に必要なライブラリ</h1><p>UltraMonkey-L7 GUI を動作する上で必要となるライブラリについて記載しています。
</p><hr /><h2 id="h2-.E5.BF.85.E9.A0.88.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">必須ライブラリ</h2><h3 id="h3-J2SE.205.0">J2SE 5.0</h3><ul><li>GUI や設定ファイルの同期ツールで必要となります
</li><li>ダウンロードURL : <a href="http://java.sun.com/j2se/1.5.0/ja/download.html" class="external" rel="nofollow">http://java.sun.com/j2se/1.5.0/ja/download.html</a>
</li></ul><h3 id="h3-Apache.20Tomcat.205.5">Apache Tomcat 5.5</h3><ul><li>GUI は JSP/Servlet で実装されていますので、動作上必要となります。
</li><li>プロジェクトURL : <a href="http://tomcat.apache.org/" class="external" rel="nofollow">http://tomcat.apache.org/</a>
</li><li>ダウンロードURL : <a href="http://tomcat.apache.org/download-55.cgi" class="external" rel="nofollow">http://tomcat.apache.org/download-55.cgi</a>
</li></ul><h3 id="h3-.E3.81.9D.E3.81.AE.E4.BB.96">その他</h3><ul><li>GUI は UltraMonkey-L7 インストール済みのサーバにインストールする必要があります。（⇒ <a href="http://sourceforge.jp/docman2/ViewCategory.php?group_id=1951&amp;category_id=537">UltraMonkey-L7 インストールマニュアル</a>）
</li><li>GUI でクラスタ状態の確認やクラスタの切り替えなどを行う場合は、クラスタソフトとして Heartbeat2 をインストールする必要があります。（⇒ <a href="http://sourceforge.jp/docman2/ViewCategory.php?group_id=1951&amp;category_id=537">UltraMonkey-L7 Heartbeat2 環境インストールマニュアル</a>）</li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7directord">
    <title>l7directord</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7directord</link>
    <dc:identifier>l7directord</dc:identifier>
    <dc:date>2008-07-29T19:53:28+09:00</dc:date>
        <description>
      <![CDATA[= !UltraMonkey-L7 監視プロセス (l7directord) =
!UltraMonkey-L7 の !RealServer 監視を行うプロセス l7directord に関する説明を記載しています。
-----
]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.21UltraMonkey-L7.20.E7.9B.A3.E8.A6.96.E3.83.97.E3.83.AD.E3.82.BB.E3.82.B9.20.28l7directord.29">UltraMonkey-L7 監視プロセス (l7directord)</h1><p>UltraMonkey-L7 の RealServer 監視を行うプロセス l7directord に関する説明を記載しています。
</p><hr />]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7vsd">
    <title>l7vsd</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/l7vsd</link>
    <dc:identifier>l7vsd</dc:identifier>
    <dc:date>2008-07-29T19:50:39+09:00</dc:date>
        <description>
      <![CDATA[= !UltraMonkey-L7 本体プロセス (l7vsd) =
!UltraMonkey-L7 の負荷分散を行うプロセス l7vsd に関する説明を記載しています。
-----
]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.21UltraMonkey-L7.20.E6.9C.AC.E4.BD.93.E3.83.97.E3.83.AD.E3.82.BB.E3.82.B9.20.28l7vsd.29">UltraMonkey-L7 本体プロセス (l7vsd)</h1><p>UltraMonkey-L7 の負荷分散を行うプロセス l7vsd に関する説明を記載しています。
</p><hr />]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7UsedLib">
    <title>UML7UsedLib</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7UsedLib</link>
    <dc:identifier>UML7UsedLib</dc:identifier>
    <dc:date>2008-07-29T19:40:28+09:00</dc:date>
        <description>
      <![CDATA[= !UltraMonkey-L7構築に必要なライブラリ =
!UltraMonkey-L7 を動作する上で必要となるライブラリについて記載しています。

-----

== 必須ライブラリ ==

=== glib2 ===
 * l7vsd 本体の動作時に必要です。
 * プロジェクトURL : http://www.gtk.org/
 * ダウンロードURL : http]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.21UltraMonkey-L7.E6.A7.8B.E7.AF.89.E3.81.AB.E5.BF.85.E8.A6.81.E3.81.AA.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">UltraMonkey-L7構築に必要なライブラリ</h1><p>UltraMonkey-L7 を動作する上で必要となるライブラリについて記載しています。
</p><hr /><h2 id="h2-.E5.BF.85.E9.A0.88.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">必須ライブラリ</h2><h3 id="h3-glib2">glib2</h3><ul><li>l7vsd 本体の動作時に必要です。
</li><li>プロジェクトURL : <a href="http://www.gtk.org/" class="external" rel="nofollow">http://www.gtk.org/</a>
</li><li>ダウンロードURL : <a href="http://ftp.gnome.org/pub/gnome/sources/glib/" class="external" rel="nofollow">http://ftp.gnome.org/pub/gnome/sources/glib/</a>
</li></ul><h3 id="h3-log4cxx">log4cxx</h3><ul><li>l7vsd 本体のログ出力で使用します。
</li><li>プロジェクトURL : <a href="http://logging.apache.org/log4cxx/index.html" class="external" rel="nofollow">http://logging.apache.org/log4cxx/index.html</a>
</li><li>ダウンロードURL : <a href="http://logging.apache.org/log4cxx/download.html" class="external" rel="nofollow">http://logging.apache.org/log4cxx/download.html</a>
</li><li>log4cxx のインストールには以下の apr, apr-util ライブラリが必要になります。
<ul><li>apr / apr-util
<ul><li>プロジェクトURL : <a href="http://apr.apache.org/" class="external" rel="nofollow">http://apr.apache.org/</a>
</li><li>ダウンロードURL : <a href="http://apr.apache.org/download.cgi" class="external" rel="nofollow">http://apr.apache.org/download.cgi</a>
</li></ul></li></ul></li></ul><h3 id="h3-Boost.20C.2B.2B">Boost C++</h3><ul><li>l7vsd 本体をビルドする際に必要です。
</li><li>Boost のヘッダファイルのみ利用していますので、必ずしも Boost をビルドする必要はありません。
</li><li>プロジェクトURL : <a href="http://www.boost.org/" class="external" rel="nofollow">http://www.boost.org/</a>
</li><li>ダウンロードURL : <a href="http://www.boost.org/users/download/" class="external" rel="nofollow">http://www.boost.org/users/download/</a>
</li></ul><hr /><h2 id="h2-.E3.81.9D.E3.81.AE.E4.BB.96.E3.81.AE.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">その他のライブラリ</h2><h3 id="h3-Perl.20.E3.83.A9.E3.82.A4.E3.83.96.E3.83.A9.E3.83.AA">Perl ライブラリ</h3><ul><li>l7directord による RealServer 監視時に以下のライブラリのインストールが必要となる場合があります。
<ul><li>libwww-perl (LWP::<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UserAgent">UserAgent</a>, LWP::Debug)
<ul><li>l7directord の動作上、必須となる HTTP のモジュールです
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/libwww-perl/" class="external" rel="nofollow">http://search.cpan.org/dist/libwww-perl/</a>
</li></ul></li><li>Net::Ping
<ul><li>l7directord の動作上、必須となる Ping のモジュールです。
</li><li>Perl 5.2 以上にバンドルされています。
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/Net-Ping/" class="external" rel="nofollow">http://search.cpan.org/dist/Net-Ping/</a>
</li></ul></li><li>Crypt::SSLeay
<ul><li>l7directord で HTTPS による監視を行う際に必要となるモジュールです。
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/Crypt-SSLeay/" class="external" rel="nofollow">http://search.cpan.org/dist/Crypt-SSLeay/</a>
</li></ul></li><li>libnet (Net::FTP, Net::SMTP, Net::POP3)
<ul><li>l7directord で FTP/SMTP/POP3 による監視を行う際に必要となるモジュールです。
</li><li>Perl 5.7 以上にバンドルされています。
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/libnet/" class="external" rel="nofollow">http://search.cpan.org/dist/libnet/</a>
</li></ul></li><li>Mail::IMAPClient
<ul><li>l7directord で IMAP による監視を行う際に必要となるモジュールです。
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/Mail-IMAPClient/" class="external" rel="nofollow">http://search.cpan.org/dist/Mail-IMAPClient/</a>
</li></ul></li><li>perl-ldap (Net::LDAP)
<ul><li>l7directord で LDAP による監視を行う際に必要となるモジュールです。
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/perl-ldap/" class="external" rel="nofollow">http://search.cpan.org/dist/perl-ldap/</a>
</li></ul></li><li>DBI
<ul><li>l7directord で PostgreSQL, MySQL の監視を行う際に必要となるモジュールです。
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/DBI/" class="external" rel="nofollow">http://search.cpan.org/dist/DBI/</a>
</li></ul></li><li>DBD::Pg
<ul><li>l7directord で PostgreSQL の監視を行う際に必要となるモジュールです。
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/DBD-Pg/" class="external" rel="nofollow">http://search.cpan.org/dist/DBD-Pg/</a>
</li></ul></li><li>DBD::mysql
<ul><li>l7directord で MySQL の監視を行う際に必要となるモジュールです。
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/DBD-mysql/" class="external" rel="nofollow">http://search.cpan.org/dist/DBD-mysql/</a>
</li></ul></li><li>Net::DNS
<ul><li>l7directord で DNS による監視を行う際に必要となるモジュールです。
</li><li>CPAN URL : <a href="http://search.cpan.org/dist/Net-DNS/" class="external" rel="nofollow">http://search.cpan.org/dist/Net-DNS/</a>
</li></ul></li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7ExecEnv">
    <title>UML7ExecEnv</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7ExecEnv</link>
    <dc:identifier>UML7ExecEnv</dc:identifier>
    <dc:date>2008-07-29T15:56:03+09:00</dc:date>
        <description>
      <![CDATA[= !UltraMonkey-L7 動作環境 =

!UltraMonkey-L7 を動作する上で必要となる環境について記載しています。

----

== 動作条件 ==
||CPU        ||Intel Xeon/Pentium 系の CPU            ||
||メモリ       ||256MB以上                             ]]>
    </description>
    <content:encoded>
      <![CDATA[<h1 id="h1-.21UltraMonkey-L7.20.E5.8B.95.E4.BD.9C.E7.92.B0.E5.A2.83">UltraMonkey-L7 動作環境</h1><p>UltraMonkey-L7 を動作する上で必要となる環境について記載しています。
</p><hr /><h2 id="h2-.E5.8B.95.E4.BD.9C.E6.9D.A1.E4.BB.B6">動作条件</h2><table class="wikitable"><tbody><tr><td>CPU        </td><td>Intel Xeon/Pentium 系の CPU            </td></tr><tr><td>メモリ       </td><td>256MB以上                                  </td></tr><tr><td>ネットワーク </td><td>10M/100M/Gigabit Ethernet             </td></tr><tr><td>OS         </td><td>Linux Kernel 2.6 系の OS               </td></tr></tbody></table><h2 id="h2-.E9.AB.98.E5.8F.AF.E7.94.A8.E3.82.B5.E3.82.A4.E3.83.88.E6.8E.A8.E5.A5.A8.E7.92.B0.E5.A2.83">高可用サイト推奨環境</h2><table class="wikitable"><tbody><tr><td>ハードウェア</td><td>HP ProLiant DL360 G5                   </td></tr><tr><td>CPU        </td><td>Xeon 5160 3.00 G                       </td></tr><tr><td>メモリ      </td><td>2.00 G                                 </td></tr><tr><td>ネットワーク</td><td>Gigabit Ethernet                          </td></tr><tr><td>OS         </td><td>Red Hat Enterprise Linux 5.2 (x86_64)  </td></tr><tr><td>冗長化(*)   </td><td>Heartbeat2                             </td></tr></tbody></table><p>(*)ACT-STANDBY冗長化構成時には上記構成が 2 環境必要になります</p>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/Logging%E6%8C%87%E9%87%9D">
    <title>Logging指針</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/Logging%E6%8C%87%E9%87%9D</link>
    <dc:identifier>Logging指針</dc:identifier>
    <dc:date>2008-03-11T19:06:07+09:00</dc:date>
        <description>
      <![CDATA[== ■Logging指針 ==

----

 ここではLogを埋め込む際の指針となる部分を解説します。[[BR]]コードの中にlogを埋め込む際にはLogがどのように使われるかと考慮する必要があります。一般的にLogは&#039;&#039;&#039;人間がプログラムの動作を知るため&#039;&#039;&#039;にあります。単純なことですが重要なことです。[[BR]]もし、実際]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.E2.96.A0Logging.E6.8C.87.E9.87.9D">■Logging指針</h2><hr /><div class="indent">ここではLogを埋め込む際の指針となる部分を解説します。<br />コードの中にlogを埋め込む際にはLogがどのように使われるかと考慮する必要があります。一般的にLogは<strong>人間がプログラムの動作を知るため</strong>にあります。単純なことですが重要なことです。<br />もし、実際に運用されているUltraMonkey-L7があった場合、UltraMonkey-L7が正常か異常かを知る手段はLogが一番最初になります。プログラムの挙動を外部から知る手立ての第一はLogなのです。<br />ただし、Logを出力することが非常に重いことも忘れてはいけません。パフォーマンスとLogが出力する情報は両立しません。詳細にプログラムの動作を知りたい場合には詳細にLogを出力する必要がありますが、詳細に出力すればするほどプログラムのパフォーマンスは劣化します。<br />このため一般的にはLogLevelと言うものを定義します。<br />正常に動作中はパフォーマンスが最重要課題ですから最小限のLog出力を行います。もし、UltraMonkey-L7を管理している人が疑問となる挙動を見つけた場合、手動でLogLevelを変更し、詳細なLogを取得する…と言うのが一般的なLogの出力する詳細情報とパフォーマンスの折り合いがつく部分です。<br />ここではプログラムがLogを埋め込む際にどのような情報を入れるべきか、それぞれのLogLevelごとに解説を入れていきます。
</div><hr /><h3 id="h3-LEVEL">LEVEL</h3><div class="indent"><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelDebug">DEBUG</a> デバッグに耐えられるだけの詳細な情報を出力する。<br /><br /><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelInfo">INFO</a> あらゆる情報。プロセス起動や終了など。<br /><br /><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelWarn">WARN</a> 警告情報。処理には問題は無いが全体として注意する場合。たとえば接続できるリアルサーバが存在しなかった場合など。<br /><br /><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelError">ERROR</a> エラー情報。<br /><br /><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelFatal">FATAL</a> プロセスの継続が不可能な場合などに出力する情報。設定ファイルが見つからないや、l7vsadmがl7vsdに接続できない場合など。<br /><br />
</div><h3 id="h3-.E3.82.B5.E3.83.B3.E3.83.97.E3.83.AB">サンプル</h3><div class="indent"><a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelDebug">[DEBUG C/C++</a>] C/C++向けのdebug log sample<br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelDebugJava">[DEBUG java</a>] java向けのdebug log sample<br /><br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelInfo">[INFO C/C++</a>] C/C++向けのinfo log sample<br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelInfoJava">[INFO java</a>] java向けのinfo log sample<br /><br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelWarn">[WARN C/C++</a>] C/C++向けのwarn log sample<br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelWarnJava">[WARN java</a>] java向けのwarn log sample<br /><br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelError">[WARN C/C++</a>] C/C++向けのerror log sample<br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelErrorJava">[ERROR java</a>] java向けのerror log sample<br /><br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelFatal">[FATAL C/C++</a>] C/C++向けのfatal log sample<br />
<a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelFatalJava">[FATAL java</a>] java向けのfaral log sample<br /><br /></div>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E7%94%A8%E8%AA%9E%E9%9B%86">
    <title>用語集</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/%E7%94%A8%E8%AA%9E%E9%9B%86</link>
    <dc:identifier>用語集</dc:identifier>
    <dc:date>2007-12-05T11:28:49+09:00</dc:date>
        <description>
      <![CDATA[== !UltraMonkey-L7用語集INDEX

----

== A ==

== B ==

== C ==

== D ==

== E ==

&#039;&#039;&#039;Endpoint&#039;&#039;&#039;[[BR]]IPアドレスとPORTのセットを指す。ネットワークのコネクションはエンドポイントとエンドポイントの間となる。
]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.21UltraMonkey-L7.E7.94.A8.E8.AA.9E.E9.9B.86INDEX">UltraMonkey-L7用語集INDEX</h2><hr /><h2 id="h2-A">A</h2><h2 id="h2-B">B</h2><h2 id="h2-C">C</h2><h2 id="h2-D">D</h2><h2 id="h2-E">E</h2><p><strong>Endpoint</strong><br />IPアドレスとPORTのセットを指す。ネットワークのコネクションはエンドポイントとエンドポイントの間となる。
</p><h2 id="h2-F">F</h2><h2 id="h2-G">G</h2><h2 id="h2-H">H</h2><h2 id="h2-I">I</h2><h2 id="h2-J">J</h2><h2 id="h2-K">K</h2><h2 id="h2-L">L</h2><h2 id="h2-M">M</h2><p><strong>Module</strong><br />共有オブジェクトを利用し実行時に動的に処理コードを追加や削除を行える部分。ProtocolModuleとScheduleModuleの二種類が存在する。これらはModule管理で管理される。
</p><h2 id="h2-N">N</h2><h2 id="h2-O">O</h2><h2 id="h2-P">P</h2><p><strong>ProtocolModule</strong><br />OSI7層モデルの7層目を解析し、処理を行う各共有オブジェクト群を指す。プロトコルに対応した各種のModuleが用意される。新しいプロトコルへの対応はUltraMonkey-L7本体のリコンパイルの必要はなく、Moduleを追加することにより実現できる。
</p><h2 id="h2-Q">Q</h2><p><strong>QoS</strong><br />帯域を制限する機能。UltraMonkey-L7ではVirtualServiceをひとつの単位として帯域制御の設定を行うことができる。RealServerへの帯域制御とVirtualServiceへ接続する!Client全体の帯域制御である。
</p><h2 id="h2-R">R</h2><p><strong>RealServer</strong><br />UltraMonkey-L7が透過的にサービスを行う実際のエンドポイントを指す。UltraMonkey-L7はクライアント側のEndpointとRealServerの間に入り、複数のReadServerがあるのをクライアント側に意識させずに負荷分散とセッション管理を行う。
</p><h2 id="h2-S">S</h2><p><strong>ScheduleModule</strong><br />RealServerへの振分けを行うスケジューリングを受け持つModule。
</p><p><strong>SorryServer</strong><br />サービスが継続できなかった場合などにその旨を伝えるコンテンツを持つEndpoint。<br />UltraMonkey-L7では一定の条件をもってVirtualServiceごとにSorryへとClient毎の接続を中継するが、手動で!Sorry状態への変更も可能。
</p><h2 id="h2-T">T</h2><h2 id="h2-U">U</h2><h2 id="h2-V">V</h2><p><strong>VIP</strong><br />VirtualService を提供する IP アドレスのこと。IP アドレスとポート番号をあわせて VIP と呼ぶこともある。<br />Heartbeat などを使用して現用系に VIP を付与し、そこに <a href="http://sourceforge.jp/projects/ultramonkey-l7/wiki/VirtualService">VirtualService</a> を括り付けることで、Act-Standby 高可用構成を構築することが可能となる。
</p><p><strong>VirtualService</strong><br />UltraMonkey-L7で管理されるサービスの単位。ひとつのVirtualServiceにつきひとつのProtocolModuleとひとつのScheduleModuleを指定できる。QoSもVirtualServiceの単位で設定可能。
</p><h2 id="h2-W">W</h2><p><strong>weight</strong><br />ScheduleModule全般では1/0の二値を用いてRealServerへの振分けの可否を決定する。ただしWeightRoundRobinModuleでは任意の整数での重み付けを解釈し、各RealServerへの振分け頻度をweightを使って制御する。
</p><h2 id="h2-X">X</h2><h2 id="h2-Y">Y</h2><h2 id="h2-Z">Z</h2><h2 id="h2-.E3.81.82">あ</h2><h2 id="h2-.E3.81.8B">か</h2><p><strong>仮想 IP アドレス</strong><br /><em>VIP</em> を参照。
</p><h2 id="h2-.E3.81.95">さ</h2><h2 id="h2-.E3.81.9F">た</h2><h2 id="h2-.E3.81.AA">な</h2><h2 id="h2-.E3.81.AF">は</h2><p><strong>プロトコルモジュール</strong><br /><em>ProtocolModule</em> を参照。
</p><h2 id="h2-.E3.81.BE">ま</h2><h2 id="h2-.E3.82.84">や</h2><h2 id="h2-.E3.82.89">ら</h2><p><strong>リアルサーバ</strong><br /><em>RealServer</em> を参照
</p><h2 id="h2-.E3.82.8F">わ</h2>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7Setting">
    <title>UML7Setting</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/UML7Setting</link>
    <dc:identifier>UML7Setting</dc:identifier>
    <dc:date>2007-11-29T16:42:34+09:00</dc:date>
        <description>
      <![CDATA[== !UltraMonkey-L7設定 ==

----

== l7directord設定項目

=== Global Setting
 * &#039;&#039;&#039;checktimeout&#039;&#039;&#039;
   * 監視ノードから何秒間正常な応答が得られなかった場合にダウンとみなすか
   * デフォルト 5 秒
   * 条件 check]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.21UltraMonkey-L7.E8.A8.AD.E5.AE.9A">UltraMonkey-L7設定</h2><hr /><h2 id="h2-l7directord.E8.A8.AD.E5.AE.9A.E9.A0.85.E7.9B.AE">l7directord設定項目</h2><h3 id="h3-Global.20Setting">Global Setting</h3><ul><li><strong>checktimeout</strong>
<ul><li>監視ノードから何秒間正常な応答が得られなかった場合にダウンとみなすか
</li><li>デフォルト 5 秒
</li><li>条件 checktype が connect, ping の場合、または checktype が negotiate で service が sip, dns の場合
</li><li>virtual section での上書き可能
</li></ul></li><li><strong>negotiatetimeout</strong>
<ul><li>監視ノードから何秒間正常な応答が得られなかった場合にダウンとみなすか
</li><li>デフォルト 0 秒（これはまずそうな予感。Default is defined by the operating system. と doc に書かれているがそうはみえない）
</li><li>条件 checktype が negotiate で service が http, https, smtp, pop, imap, ldap, nntp, ftp の場合
</li><li>virtual section での上書き可能
</li></ul></li><li><strong>checkinterval</strong>
<ul><li>監視間隔の秒数
</li><li>デフォルト 10 秒
</li></ul></li><li><strong>checkcount</strong>
<ul><li>監視ノードから何回連続で正常な応答が得られなかった場合にダウンとみなすか
</li><li>デフォルト 1 回
</li><li>条件 checktype が ping の場合のみ
</li></ul></li><li><strong>autoreload</strong>
<ul><li>設定ファイルを定期的にチェックして変更があった場合に、変更内容を反映するかどうか
</li><li>デフォルト no
</li></ul></li><li><strong>callback</strong>
<ul><li>設定ファイルを定期的にチェックして変更があった場合に、実行するプログラム
</li><li>デフォルト undef
</li><li>autoreload の値にかかわらず、設定ファイルが変更された場合に、<tt>&lt;/path/callback&gt; &lt;/path/config&gt;</tt> が実行される
</li></ul></li><li><strong>fallback</strong>
<ul><li>real サーバが全てダウンした際に追加される real サーバの代替サーバ
</li></ul></li><li><strong>logfile</strong>
<ul><li>l7directord のログファイルの指定
</li><li>デフォルト /var/log/l7directord.log
</li><li>最初の文字が / 以外だと syslog の facility として扱う
</li></ul></li><li><strong>execute</strong>
<ul><li>設定ファイルとして規定されているパス以外のものを使う場合にここに記述する
</li><li>自動的に検索する設定ファイルのパスは以下
<ul><li>/etc/ha.d/l7directord.cf
</li><li>/etc/ha.d/conf/l7directord.cf
</li></ul></li></ul></li><li><strong>supervised</strong>
<ul><li>デバッグモードと同じでデーモンにならず、ログが標準出力に出力される
</li><li>daemontools(<a href="http://untroubled.org/rpms/daemontools/" class="external" rel="nofollow">1</a><a href="http://cr.yp.to/daemontools.html" class="external" rel="nofollow">2</a>) を使う場合に便利だそうです。
</li></ul></li><li><strong>quiescent</strong>
<ul><li>real サーバがダウンした際に、weight を 0 に変更する(yes)か、仮想サービスから取り除く(no)か
</li><li>デフォルト no
</li><li>virtual section での上書き可能
</li></ul></li><li><strong>virtual</strong>
<ul><li>仮想サービスとする IP アドレスとポート番号を指定する
</li><li>仮想サービス毎の詳細設定は以下の Virtual Section Setting を参照
</li></ul></li></ul><h3 id="h3-Virtual.20Section.20Setting">Virtual Section Setting</h3><ul><li><strong>real</strong>
<ul><li>real サーバの IP アドレスとポート番号の設定
</li><li>オプションとしてサーバの weight, 以降で述べる request, receive のペアの設定も可能
</li><li>forwarding の方法は masq のみ設定可能
</li><li>IP アドレスは範囲指定も可能（192.168.0.1-&gt;192.168.0.100など）
</li><li>例
<ul><li>real = 192.168.0.2:80 masq
</li><li>real = 192.168.0.3:80 masq 1
</li><li>real = 192.168.0.4:80 masq 1 &quot;check.html&quot;, &quot;Test&quot;
</li><li>real = 192.168.0.5-&gt;192.168.0.10:http masq
</li></ul></li></ul></li><li><strong>module</strong>
<ul><li>プロトコルモジュールの指定
</li><li>l7vsadm では省略可能なプロトコルモジュールのキーになるオプションもここでは省略不可
</li><li>現在設定可能な組み合わせは以下
<ul><li>pfilter --path-match
</li><li>url --pattern-match
</li><li>urla --key-name
</li><li>cpassive --cookie-name
</li><li>crewrite --cookie-name
</li><li>cinsert --cookie-name
</li><li>chash --cookie-name
</li></ul></li></ul></li><li><strong>maxconn</strong>
<ul><li>仮想サービスで扱える最大のコネクション数
</li><li>超過した場合、sorryserver へリダイレクトされる
</li></ul></li><li><strong>qosservice</strong>
<ul><li>仮想サービスでの帯域制限の値(bps)
</li><li>K, M, Gの単位も利用可能
</li></ul></li><li><strong>qosclient</strong>
<ul><li>単一コネクションでの帯域制限の値(bps)
</li><li>K, M, G の単位も利用可能
</li></ul></li><li><strong>sorryserver</strong>
<ul><li>maxconn の上限を超えた際にリダイレクトされるサーバの IP アドレス、ポート番号の設定
</li></ul></li><li><strong>checktype</strong>
<ul><li>real サーバの監視方法の設定
</li><li>以下が設定可能な値
<ul><li>negotiate
<ul><li>特定の request を送り、特定の receive 文字列を受信することでサーバの確認を行う
</li><li>確認方法は以降の service に依存する
</li></ul></li><li>connect
<ul><li>TCP/IP コネクションを張って確認する
</li></ul></li><li>数字
<ul><li>negotiate と connect の併用で、入力した数字回の connect 確認の後で 1 回の negotiate 確認を行う。
</li></ul></li><li>ping
<ul><li>ICMP で ping 確認を行う
</li></ul></li><li>off
<ul><li>監視を行わないし、設定した real や fallback サーバはダウンしているものと扱われる
</li></ul></li><li>on
<ul><li>監視を行わないが、設定した real や fallback サーバはアップしているものと扱われる
</li></ul></li></ul></li><li>デフォルトは negotiate
</li></ul></li><li><strong>service</strong>
<ul><li>checktype が negotiate の場合の real サーバの監視方法の設定
</li><li>ftp, smtp, dns, http, pop, nntp, imap, ldap, https, mysql, pgsql, sip, none が設定可能
</li><li>none は何もせず、常にアップと判断する
</li><li>デフォルトは仮想サービスのポート番号に依存し、21, 25, 53, 80, 110, 119, 143, 389, 443, 3306, 5432, 5060 の場合は上記のサービスがデフォルトとなるが、それ以外の場合は none がデフォルトとなる
</li></ul></li><li><strong>checkport</strong>
<ul><li>監視するポート番号を指定する
</li><li>デフォルトは real サーバのポート番号
</li></ul></li><li><strong>request</strong>
<ul><li>監視の際に使うリクエスト用の設定
</li><li>service が http, https, ldap, mysql, pgsql, ftp, dns の場合に使われる
</li></ul></li><li><strong>receive</strong>
<ul><li>監視の際に使うレスポンス解析用の設定
</li><li>service が http, https, ldap, ftp, dns の場合に使われる
</li></ul></li><li><strong>httpmethod</strong>
<ul><li>http, https の監視の際に使う HTTP メソッドの設定
</li><li>GET, HEAD の指定が可能
</li><li>デフォルトは GET
</li></ul></li><li><strong>virtualhost</strong>
<ul><li>http, https の監視の際に使う virtual host の設定
</li></ul></li><li><strong>login</strong>
<ul><li>ftp, pop, imap, mysql, pgsql, sip の場合に使われる login ユーザ名の設定
</li></ul></li><li><strong>passwd</strong>
<ul><li>ftp, pop, imap, mysql, pgsql, sip の場合に使われる login パスワードの設定
</li></ul></li><li><strong>database</strong>
<ul><li>mysql, pgsql で利用する database 名の設定
</li></ul></li><li><strong>scheduler</strong>
<ul><li>利用するスケジューラの設定
</li><li>利用可能なスケジューラは rr, wrr, lc
</li><li>デフォルトは rr
</li></ul></li><li><strong>protocol</strong>
<ul><li>利用するプロトコルの設定で tcp のみ設定可能
</li></ul></li></ul>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelInfo">
    <title>LogLevelInfo</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelInfo</link>
    <dc:identifier>LogLevelInfo</dc:identifier>
    <dc:date>2007-11-28T16:24:51+09:00</dc:date>
        <description>
      <![CDATA[== Log Info ==

----

通常運転時に監視したいLogを埋め込む。起動ログや操作ログが該当する。

 * 起動/終了
 * 操作(サービス追加/削除や!RealServerの追加/削除等)

----

注意:signalを受信したときにはlogを&#039;&#039;&#039;出力してはならない&#039;&#039;&#039;。!MultiThre]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-Log.20Info">Log Info</h2><hr /><p>通常運転時に監視したいLogを埋め込む。起動ログや操作ログが該当する。
</p><ul><li>起動/終了
</li><li>操作(サービス追加/削除やRealServerの追加/削除等)
</li></ul><hr /><p>注意:signalを受信したときにはlogを<strong>出力してはならない</strong>。MultiThread環境下ではSignalSafeな関数のみを呼び出すことが可能だが、その数は非常に限定される。malloc()やprintf()でさえもSingalUnSafeな関数のため、signal handler内部で出来ることは内部のグローバル変数書き換えのみと思ったほうが良い。
</p><hr /><p>example(ただしdebuglogは省略).
</p><pre>    int main( int argc, char* argv[] ){
      logputINFO( CATEGORY_SYSTEM, &quot;program start.&quot; );
      logputINFO( CATEGORY_SYSTEM, &quot;switch daemon&quot; );
      daemon();
      for(;;){
        ...
      }
      logputInfo( CATEGORY_SYSTEM, &quot;program terminate nomal.&quot; );
      return 0;
    }
</pre>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelDebug">
    <title>LogLevelDebug</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/LogLevelDebug</link>
    <dc:identifier>LogLevelDebug</dc:identifier>
    <dc:date>2007-11-28T15:15:23+09:00</dc:date>
        <description>
      <![CDATA[== Log Debug ==

---

Debugで出力するLogは基本的に以下の情報を出力する。

 * 関数の入通知と引数のダンプ
 * 関数の出通知と返値のダンプ
 * メモリ確保時(malloc)のメモリサイズとアドレス
 * メモリ開放時(free)のメモリアドレス
 * ポインタの先に代入する場合にはそのポインタの型と内容
 * iomuxの状態変更時の変更前]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-Log.20Debug">Log Debug</h2><p>---
</p><p>Debugで出力するLogは基本的に以下の情報を出力する。
</p><ul><li>関数の入通知と引数のダンプ
</li><li>関数の出通知と返値のダンプ
</li><li>メモリ確保時(malloc)のメモリサイズとアドレス
</li><li>メモリ開放時(free)のメモリアドレス
</li><li>ポインタの先に代入する場合にはそのポインタの型と内容
</li><li>iomuxの状態変更時の変更前と変更後の内容
</li><li>重要なシステム関数を呼ぶ場合(ioctl()等)にその関数名と引数のダンプ
</li><li>通信データダンプ(16進表示)
</li></ul><p>　　　　以下必要な情報は随時追加
</p><p>---
</p><div class="indent">またdebugログを出力する場合は<strong>必ず現状のログレベルがdebugであることを確認し、出力するデータを作成する</strong>こと。
</div><p>---
</p><p>example.
</p><pre>  int foo( int integer, char* name, struct sct_t* t ){
    int* ptr = NULL;
    if( DEBUG == get_log_level() ){
      char buf[256];
      memset( buf, NULL, sizeof(buf) );
      sprintf( buf, &quot;function foo(int, char* struct sct_t* ) in &quot;
                    &quot; int value = %d &quot;
                    &quot; char* value = %s&quot;
                    &quot; struct sct_t* address = %x&quot;
                    &quot;  sct_t.x = %d &quot;
                    &quot;  sct_t.y = %d &quot; ,
                    integer, name, (intptr_t) t, t-&gt;x, t-&gt;y );
      logputDEBUG( CATEGORY_LOGIC, buf );
    }
    ptr = malloc( sizeof(int) );
    if( DEBUG == get_log_level() ){
      char buf[256];
      memset( buf, NULL, sizeof(buf) );
      sprintf( buf, &quot;memory allocate address: %x, size :%d&quot; , (intptr_t) ptr, sizeof(int) );
      logputDEBUG( CATEGORY_LOGIC, buf );
    }
    if( !ptr ){
      logputERROR( &quot;don't allocate memory&quot; );
      if( DEBUG == get_log_level() ) logputDEBUG( &quot;function foo() return -1&quot; );
      return -1;
    }
    free( ptr );
    if( DEBUG == get_log_level() ){
      logputDEBUG( &quot;memory free address: %x, size :%d&quot;, (intptr_t) ptr, sizeof(int) );
      logoutDEBUG( &quot;return function foo() return 0&quot; );
    }
    return 0;     
  }
</pre>]]>
    </content:encoded>
      </item>
        <item rdf:about="http://sourceforge.jp/projects/ultramonkey-l7/wiki/FAQ">
    <title>FAQ</title>
    <link>http://sourceforge.jp/projects/ultramonkey-l7/wiki/FAQ</link>
    <dc:identifier>FAQ</dc:identifier>
    <dc:date>2007-11-19T17:27:42+09:00</dc:date>
        <description>
      <![CDATA[== !UltraMonkey-L7 FAQ

----

=== OS設定関係[[BR]]

 &#039;&#039;&#039;Q.1 ログにerror / connect error(Cannot assign requested address) と出力される。&#039;&#039;&#039;[[BR]][[BR]]
   A.[[BR]]システムやユーザーでOpen出]]>
    </description>
    <content:encoded>
      <![CDATA[<h2 id="h2-.21UltraMonkey-L7.20FAQ">UltraMonkey-L7 FAQ</h2><hr /><h3 id="h3-OS.E8.A8.AD.E5.AE.9A.E9.96.A2.E4.BF.82.5B.5BBR.5D.5D">OS設定関係<br /></h3><div class="indent"><strong>Q.1 ログにerror / connect error(Cannot assign requested address) と出力される。</strong><br /><br />
</div><div class="indent"><div class="indent">A.<br />システムやユーザーでOpen出来るファイルの上限に達しています。これはUNIXがソケットをファイルと等価に扱うためにファイルとソケットのオープンが制限値に達したことにより発生します。<br />UltraMonkey-L7はひとつのClientが実際のサーバに接続するのに最低4つのファイルのオープンを行います。したがって実際に同時にアクセスのあるClientよりも多くオープンできるファイルの数が必要です。<br />この制限は<br /><br />1.システム全体にかけられているリミットにあたっている場合<br />2.ユーザーごとのリミットにあたっている場合<br /><br />の二種類があります。<br />1.の場合には/proc/sys/fs/file-maxを見てください。2.の場合にはl7vsdのプロセスに対して、ulimit -n XXXXXを設定してください(XXXXXは任意の数字)。<br /><br />
</div></div><div class="indent"><strong>Q.2 ログにsocket already in useと出力されl7vsdが起動できない。</strong><br /><br />
</div><div class="indent"><div class="indent">A.<br />接続を監視しているEndPointをl7vsdがclose()せずに終了した場合、OSがそのEndPointのTCP状態をTCP_WAITとして一定時間保持します。この場合、OSに設定された時間分EndPointは開放されません。この値は他のプログラムに影響を与えるため変更することは推奨されていません。1-2分後に再度l7vsdは起動できるようになります。このEndPointをREUSEするかどうかは今後の検討課題です。<br /><br />
</div></div><h3 id="h3-.E7.92.B0.E5.A2.83.E9.96.A2.E4.BF.82.5B.5BBR.5D.5D">環境関係<br /></h3><div class="indent"><strong>Q.1 l7vsadmがl7vsdとの接続に失敗する。</strong><br /><br />
</div><div class="indent"><div class="indent">A.<br />l7vsdとl7vsadmが通信するのに使用するソケットファイルがすでに存在している場合があります。一度l7vsdをstopし、/var/run/7vsd/(デフォルト)の中にあるファイルを全て消してみてください。<br /><br /></div></div>]]>
    </content:encoded>
      </item>
    </rdf:RDF>
