主な機能nginxの

1.はじめに:

この記事では、著者自身が希望と寛大さの当事者が指摘もある場合のみ、徐々に...間違った場所を更新し、nginxのを見始めているので、確かに...継続します。内容は主に詳細に行くことはありませんいくつかの変数を定義する主な関数やマクロ役割を呼び出すために他の機能によって説明されていますが、言及されます...

また、各プレゼンテーション機能私はコードセグメントにコメントを追加し、このファイルの主な機能はありますか何かされて、私は最初に、一般的にいくつかの非常に長いので、実行される処理の関数としてどのような、なかった機能を紹介しますありますそれは自分で見ることが最善でしょう。

2.内容:

ngx_debug_init();

フレーズマクロは、デバッグに使用する必要があります...私は効果がない他に何かわからないが、これは、デバッグとして認識されているので、特に明確なそこに名前を付けるnginxのため、追加のフォローアップ、私は私のマクロ定義を見つけることができないいくつかがあるかもしれません直接nginxの名前に合わせて意味を説明します...さらに更新の新しい理解があれば。

もし(!ngx_strerror_init()= NGX_OK){ // <ngx_errno.c> 
        戻る 1 
}

主な機能は、静的ポインタngx_sys_errlist、アプリケーションNGX_SYS_NERR *はsizeof(ngx_str_t)最初のアドレスのメモリ、ストレージ・エラー・リスト、nginxの検出誤差のこのアレイの使用などのmallocのサイズを初期化することです。

(実際には、コアは、errnoにまあまあを与えられていない文字列に変換し、巨大なトラブルを作りました)

もし(ngx_get_options(ARGC、ARGV)=!NGX_OK){
         リターン 1 
}

主な機能は、nginxの容易にするために、nginx.cファイルのグローバル変数に渡されたときに開始されるサイクルパラメータ記憶オプションの後にオブジェクトを初期化することです。(私たちはサイクルをやっているかわからないので、これは、Tucaoに持っていなかった - 予備的な見積もりは、グローバル配置、奇妙なことの膨大な数です)

問題は説明が戻っ変化に来る存在しない場合の図の説明上記のパラメータは、いくつかの問題を抱えていることがあります...

もし(!ngx_os_init(ログ)= NGX_OK){
         リターン 1 
}

この関数は、(32いわゆる値ngx_cacheline_sizeを設定するために、ページ・サイズと最大ファイルディスクリプタngx_max_sockets現在のオペレーティングシステムをngx_pagesize、及びCPUが検出され、キャッシュの現在のL2キャッシュラインサイズを得るために使用さを得るために使用されます64、128)。

もし(!ngx_crc32_table_init()= NGX_OK){
         リターン 1 }

巡回冗長検査テーブルメモリを再割り当てし、上記に従って得られない場合、この関数は、メモリのアライメントngx_cacheline_sizeかどうかに基づいて、現在のngx_crc32_table_short(既存のファイルへのポインタであるngx_crc32_c静的テーブルである)を決定しますメモリの位置合わせのためのngx_cacheline_size。なぜ我々はそれを行う必要がありますか?我々は、多くの場合、それらがキャッシュブロックのサイズに基づくことができるように、データの一部を使用している場合は、データが速すぎるから取られたメインメモリよりもヒット率をいったんそのCPUが頻繁に、キャッシュにデータを使用します知っていますメモリアライメントので、我々は、彼らが高いヒット率、より高速なアクセス権を持っているので、高速キャッシュにこれらのデータを置くことができるという。

ngx_slab_sizes_init();

彼らはngx_pagesize ngx_ox_init()関数(私のシステムubuntu19.04に従って得られる、興味深いことに、上記の機能のすべては、かどうかをチェックして行われているが、この機能は、実際には、この関数は、ngx_slab_max_size ngx_slab_exact_size初期化が完了していません4096上の)計算。スラブは、それは主に、これらのオブジェクトは、一般的にメモリが非常に小さい占有し、多くの場合、割り当てられて、解放されているいくつかのオブジェクトをターゲットにして、実際にLinux上のメモリ割り当てメカニズムである私たちは、定期的にすることができます簡単にメモリの断片化の原因(これらのオブジェクトを解放した場合それは、特にメモリ管理の面でこれらの小さなオブジェクトのために、我々はスラブアロケータを使用している場合ので、そのサイズは、特定のサイズに設定されているいくつかのリリースで連続したメモリ再利用することができないほど小さい)でありますそれは、上述したメモリの断片化現象を防ぐことができます。(私は見ていないので、スラブが...このスラブはnginxのを使用して唯一のLinuxであれば実際に、私は少し好奇心..より多くの情報を読んで、それがどのような他の検出システムやるん簡単なアドバイスのビットを導入します...)

もし(!ngx_add_inherited_sockets(&init_cycle)= NGX_OK){
         リターン 1 
}

...それを得るために継続するには...他のゴーを行います。

 

おすすめ

転載: www.cnblogs.com/zhuiyicc/p/11809368.html