HTTPサーバが正常に動作しません。

弊社TCP/IPプロトコルスタック「μNet3」に関するご質問
返信する
アバター
eForce技術担当
記事: 193
登録日時: 2014年4月24日(木) 14:18

HTTPサーバが正常に動作しません。

投稿記事 by eForce技術担当 » 2016年11月21日(月) 16:51

HTTPサーバが正常に動作していない場合は以下をチェックして下さい。

1. Webブラウザからの SYN に対して RST を返却してしまい、ページが表示されない。
PC用Webブラウザは通常複数のソケットを使用して並列的にHTTPサーバに対して要求を行います。
コンフィグレータのHTTPサーバ画面のセッション最大数はデフォルトで 1 となり、この場合は1度に
1つのソケットからの要求にしてしか答えられず、HTML上に複数の画像やオブジェクトが存在する
場合には画像・オブジェクトが読み込まれないことがあります。
対象画面:コンフィグレータ起動 → [TCP/IP] → [ネットアプリケーション] → [HTTP Server] → [セッション最大数]
HTTPdセッション数設定.jpg
2. HTTPサーバは1セッション(1タスク)あたり、ネットワークバッファを2つ消費します。
HTTPサーバは送受信用のバッファとして、ネットワークバッファを2つ消費します。
"HTTPサーバのセッション数×2"のネットワークバッファ数を加算する必要があります。
uNet3フォルト設定はネットワークバッファ数が 4 です。そのため、セッション数が 5 の場合、
5 * 2 + 4 = 14 以上をネットワークバッファ数に設定してください。

対象画面:コンフィグレータ起動 → [TCP/IP] → [uNet3全般] → [詳細設定する] → [ネットワークバッファ数]
ネットワークバッファ手動増加.jpg
3. CGIを実行すると、例外が発生する。
HTTPサーバタスクがスタックオーバフローを起こしている可能性があります。CGIはHTTPサーバ
タスク上で動作するコールバック関数です。そのため、HTTPサーバタスクのスタックを消費して
動作します。スタックオーバフローが発生すると、例外や不正な動作をすることがあります。
CGI用関数で消費するスタックを予めHTTPサーバタスクに加算するようにして下さい。
対象画面:コンフィグレータ起動 → [Kernel] → [タスク] → [タスク一覧]から "ID_HTTPD_TSKx" のスタックサイズ
HTTPdタスクスタック調整.jpg
4. あるクライアントから接続を行うと、一定時間他のクライアントから接続が行えない。
HTTP Keep-Alive機能が動作している可能性があります。HTTP Keep-Alive機能は一旦接続を
行うと、一定時間の間、クライアントとの接続を維持します。その間、対象セッションには他の
クライアントから接続が行えません。HTTPサーバの設定画面より、HTTP Keep-Alive機能を無効
にするか、最大セッション数を増やしてください。
対象画面:コンフィグレータ起動 → [TCP/IP] → [ネットアプリケーション] → [HTTP Server] → [機能設定] → [HTTP Keep-Alive機能を有効にする]

返信する