Nginx အဓိကပေါ်လာရတဲ့ အကြောင်းက traditional web server တွေမှာရှိတဲ့ performance issue ကိုဖြေရှင်းနိုင်ဖို့ ရည်ရွယ်ပြီး ပေါ်လာတာပါ။ concurrent connection 10000 ရောက်တဲ့ အချိန်ကျရင် tradtional thread base နဲ့ သွားတဲ့ server တွေမှာ issue တွေဖြစ်လာတာကြောင့်ပဲ ဖြစ်ပါတယ်။ အဲ့ဒီ issue ကို C10K လို့လဲ ခေါ်တယ်။ အသေးစိတ်ကို အောက်က wiki မှာလဲ ဝင်ဖတ်ကြည့်လို့ရပါတယ်။
https://en.wikipedia.org/wiki/C10k_problem

web server တွေမှာ traffic တွေ ကို များများလက်ခံနိုင်ဖို့အတွက် လုပ်လို့ရတဲ့နည်းလမ်း တွေရှိပါတယ်။ physical hardware တွေကို(CPU, memory, etc.) upgrade လုပ်မယ်၊ ဒါမှမဟုတ်နောက်တစ်နည်းက web server architecture ကို အဆင့်မြှင့်မယ်ပေါ့။
nginx ကတော့ web server architecture ကို improve လုပ်ထားပြီးတော့ hardware resources တွေကို သက်သာအောင်လုပ်ပေးထားပါတယ်။

traditional web server model တွေမှာ thread base ကိုသုံးထားတဲ့အတွက် I/O block ဖြစ်တဲ့ issues တွေနဲ့ memory , cpu အရမ်းကုန်ပါတယ်။
thread base web server ဖြစ်တဲ့ apache web server အကြောင်းကို အောက်က link မှာဝင်ဖတ်လို့ရပါတယ်။
https://www.facebook.com/photo.php?fbid=846471949042184&set=a.487154271640622&type=3&theater

nginx ကတော့ အဲ့ဒီ issues တွေကို ဖြေရှင်းနိုင်ဖို့အတွက် event driven ဖြစ်တဲ့ asynchronous model ကိုသုံးထားပါတယ်။ Process တစ်ခုနဲ့ တစ်ခု အပေါ်မှီခိုခြင်းမရှိဘူး။ ဆိုလိုချင်တာကp process တစ်ခုလုံးပြီးအောင်စောင့်မနေဘူး ၊ တစ်ခြား request တွေကိုလည်း လက်ခံပြီး process လုပ်ပေးနိုင်တယ်။ အဲ့အတွက်ကြောင့် blocking issue ဖြစ်နိုင်စရာမရှိသလို memory နဲ့ CPU consumption ကိုလည်း သိသိသာသာ သက်သာစေတယ်။

နောက်ပြီးတော့ nginx က thread base လို request တစ်ခုလာတိုင်း process ကြီးတစ်ခုလုပ်ပြီး ထိုင် မ run နေဘူး။ ဝင်လာတဲ့ request တိုင်းကို worker process တွေအဖြစ်ခွဲထားပြီး အလုပ်လုပ်တယ်။ event driven model ဖြစ်တဲ့အတွက်ကြောင့် လဲ တစ်ကြိမ်တည်းမှာကို worker process တွေအများကြီး run လို့ရတယ်။ အဲ့ဒါကြောင့် မို့လို့လဲ nginx က memory ကို optimize လုပ်နိုင်ပြီး work load များများလုပ်လို့ရပါတယ်။