ホームページ > バックエンド開発 > PHPチュートリアル > nginxのsendfileパラメータの説明

nginxのsendfileパラメータの説明

WBOY
リリース: 2016-07-29 09:05:17
オリジナル
1076 人が閲覧しました

ファイルを送信
現在、一般的な Web サーバーには、サーバーのパフォーマンスを向上させるための sendfile オプションが用意されています。sendfile とは一体何で、パフォーマンスにどのような影響を与えるのでしょうか? sendfile は実際には Linux 2.0 以降に起動されたシステム コールであり、Web サーバーは独自の設定を調整することで sendfile システム コールを使用するかどうかを決定できます。まず、sendfile を使用しない従来のネットワーク送信プロセスを見てみましょう:
読み取り(ファイル、tmp_buf、len); write(ソケット,tmp_buf, len); ハードディスク >> ユーザー バッファ >> プロトコル スタック 一般に、ネットワーク アプリケーションは、ハードディスクからデータを読み取り、ソケットにデータを書き込むことによってネットワーク送信を完了します。上記の 2 行のコードはこの点を説明していますが、上記の 2 行の単純なコードは多くの基礎的な操作をカバーしています。最下層が上記の 2 行のコードをどのように実行するかを見てみましょう:
1. システム コール read() はコンテキスト スイッチを生成し、ユーザー モードからカーネル モードに切り替えます。その後、DMA がコピーを実行してファイル データをハード ディスクからカーネル バッファに読み取ります。
2. データがカーネル バッファからユーザー バッファにコピーされ、システムは read() を呼び出して戻ります。このとき、コンテキスト スイッチが発生し、カーネル モードからユーザー モードに切り替わります。
3. システムは write() を呼び出してコンテキスト スイッチを生成します。ユーザー モードからカーネル モードに切り替え、ステップ 2 でユーザー バッファから読み取ったデータをカーネル バッファにコピーします (データは、次の手順でカーネル バッファにコピーされます)。 2 回目)、今回は異なります。カーネル バッファはソケットに関連付けられています。
4. システム コール write() が返されると、コンテキスト スイッチが発生します。カーネル モードからユーザー モードに切り替わり (4 回目)、DMA がカーネル バッファからプロトコル スタックにデータをコピーします (4 回目)。
上記の 4 つのステップには 4 つのコンテキスト スイッチと 4 つのコピーがあり、スイッチとコピーの数を減らすことができれば、パフォーマンスが効果的に向上することがわかりました。 kernel2.0+ バージョンでは、システム コール sendfile() を使用して、上記の手順を簡素化し、パフォーマンスを向上させます。 sendfile() を使用すると、スイッチの数だけでなくコピーの数も減らすことができます。
ネットワーク送信に sendfile() を使用するプロセスを見てみましょう:
sendfile(ソケット,ファイル,len); ハードディスク >>カーネル バッファ (カーネルソケット バッファへのクイック コピー) >>プロトコル スタック
1. システムは sendfile() を呼び出して、ハードディスク データを DMA 経由でカーネル バッファにコピーします。その後、データはカーネルによってソケットに関連する別のカーネル バッファに直接コピーされます。ユーザー モードとカーネル モードの間の切り替えは行われず、あるバッファから別のバッファへのコピーはカーネル内で直接完了します。
2. DMA はデータをカーネルバッファからプロトコルスタックに直接コピーします。データはカーネル内にあるため、切り替えは行われず、データをユーザーモードからカーネルモードにコピーする必要もありません。

記事参照: http://www.th7.cn/system/lin/201306/41314.shtml

').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i

').text(i)); }; $numbering.fadeIn(1700); }); });

上記では、nginx の sendfile パラメーターの説明を、関連する内容も含めて紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート