%20%E3%81%AB%E3%81%AF%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%E5%B8%AF%E5%9F%9F%E5%B9%85%E5%88%B6%E9%99%90%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F.png)
私はクラウド内のサーバー (VMware 上の Windows Server 2008 R2、1 Gbps の帯域幅http://95.110.164.61
) で Apache を実行しています。ループで事前圧縮された多数のライブ DVB MPEG トランスポート ストリーム (フラッシュではない) を、ポート 640xx の VLC によって生成され、ポート 80 の Apache によってリバース プロキシされてストリーミングしています。
サーバーのファイアウォールは、すべてのポートで VLC と Apache に対して開かれています。
http://95.110.164.61:64087/mpg2_6.4
1.5 Mbps を超えると、再生は連続的な停止と再生の影響を受けます。VLC によって生成されたストリームを直接要求すると正しいストリームが表示されますが、要求するとhttp://95.110.164.61/mpg2_6.4
表示されないことに注意してください。
Flash ストリーミング サーバーは Apache を使用してポート 80 でストリーミングする (そして動作する) ことは知っています。私は Apache の専門家ではないのですが、帯域幅を増やすために「特別な」モジュールが必要かどうか教えていただけますか?
答え1
Apache には、デフォルトではレート制限や帯域幅制限がありません。実際、この機能は外部モジュールのみで提供されるため、これを有効にするには特別な努力が必要でした。
デフォルトでは、Apache は可能な限り多くの帯域幅を使用します。
答え2
まだ Igino Manfre が書いています (忘れないでください、私は Apache 初心者です)。
おそらく、これは帯域幅の制限として説明されるべきではないかもしれませんが、最終結果は同じです。Apache が正しく構成されていない場合、Web 経由で十分な情報をプッシュすることができません。
Windows でのこのアクティビティは、Apache マルチスレッド モジュール (Windows でのみ使用可能で、正式にはマルチ プロセッシング モジュールと呼ばれますが、多くの場合「ワーカー」と呼ばれます) によって実行されます。いずれの場合も、このモジュールを構成する必要があります。Apache が Windows で実行される場合、プロセスは「httpd」の 2 つだけであり、1 つはもう 1 つの子です。子プロセスは、接続によって必要なすべてのスレッドをアクティブ化します。Apache のドキュメントでは、extra\httpd-mpm.conf からコピーして httpd.conf に貼り付けることができる、OS 固有のセクションが必要であることがわかりました。Windows のデフォルト セクションには、マルチスレッドを管理するために、ラベル「IfModule mpm_winnt_module」内に 2 行だけが含まれています。
ThreadsPerChild: サーバー プロセス内のワーカー スレッドの定数 (150 に設定)
MaxRequestsPerChild: サーバープロセスが処理するリクエストの最大数 (0 に設定、自動)
しかし、この場合、ソフトウェアの効率 (つまりスレッド) の問題ではなく、ネットワーク バッファリングの問題である可能性があります。Apache の膨大なドキュメントで、SendBufferSize パラメータ (httpd.conf に追加) の存在を発見しました。これは TCP 送信バッファ サイズを増やし、RTT が 100 ミリ秒を超える高遅延接続 (通常の ADSL ホーム接続など) を補正するのに役立ちます。デフォルトまたは 0 の場合、サーバーは OS のデフォルトを使用します。
送信バッファサイズ 1000000
1000000 (1 MB) に設定することにしました。これは大きな数字のように聞こえるかもしれませんが、このような高い値が使用されているのを見たことがあります。
うまくいきました! VLC プレーヤーでストリームを開くと、Apache は VLC で実行されたように 6.4 Mbps をストリーミングします。これはボトルネックが解消されたことを意味します。科学的手法により、このパラメーターをコメントすると、ストリーミングが再び停止したり再開したりすることをテストしました。
いずれにしても、ストリームを正しく表示するには、そのストリームの再生に必要な帯域幅よりも十分に大きい接続帯域幅 (少なくとも 30%) が必要です。したがって、6.4 Mbps を表示するには、少なくとも 8 Mbps が必要です。
これらの文章が他の誰かの役に立つことを願っています。
もう 1 つの注意点: Web ページにビデオを導入し、VLC プラグインを使用する場合は、VLC プラグインのネットワーク キャッシュ パラメータも構成する必要があります。そうしないと、再生が停止と再生の影響を受けます。VLC プレーヤーでデフォルトで設定されているように、network-cache=1000 (msec) に固定すれば十分なようです。ドキュメントは、いつものように、決して十分ではありません。
さようなら、イギノ