Sunday, December 9, 2012

ওয়েব সার্ভার পারফর্মেন্স টিউনিং

কয়েকদিন হল iFeri.com এর ট্রাফিক বেড়ে যাওয়ায় আমাদের ওয়েব সার্ভার ঠিকমত সার্ভিস দিতে পারছিল না। আজকে সার্ভারের সব RAM পূর্ণ হয়ে সার্ভার প্রায় সব রিকোয়েস্ট deny করছিল। সমাধানের জন্য প্রথমে সার্ভারে RAM  বাডানোর কথা চিন্তা করছিলাম। কিন্তু প্রতি মাসে অতিরিক্ত খরচের কথা চিন্তা করে প্রথমে ওয়েব সার্ভার টিউনআপ করা শুরু করি।

আমারা apache সার্ভার্‌ এ পর্যন্ত ব্যবহার করছিলাম। এই apache সার্ভার যেহেতু fork ব্যবহার করে ট্রাফিক সার্ভ করে সে কারণে RAM  অনেক বেশি লাগে। এইটা সমাধান করার জন্য আমরা nginx ব্যবহারের সিদ্ধান্ত নিলাম। সার্ভার fork ব্যবহার করে না। ইভেন্ট বেজড ডিজাইন - ফলে মেমোরি লাগে অনেক কম। এমনিতে এই মুহুর্তে apache ব্যবহার বন্ধ করা কঠিন। কিন্তু keep-alive ফিচার ব্যবহারের কারনে apache অনেক সময় ধরে রিসোর্স ধরে রাখছিল। সুতরাং keep-alive ফিচারের সাপোর্ট দেয়ার দায়িত্ব nginx এর জন্য রাখা হল আর apache শুধু অ্যাপ্লিকেশন লজিক প্রসেস করবে আপাতত। অল্প সময়ে সার্ভিস দেয়ার কারনে আর স্ট্যাটিক ফাইল সার্ভ না করায় মেমোরি লোড প্রায় নেই বললেই চলে - যেহেতু apache এর keep-alive বন্ধ করা আছে। আর স্ট্যাটিক ফাইলের জন্য nginx পুরো দায়িত্ব নিবে।

nginx - HTTP port সার্ভিস করবে এবং স্ট্যাটিক ফাইল সরাসরি সার্ভিস করবে।
apache অ্যাপ্লিকেশন লজিক প্রসেস করবে আর লোকাল পোর্টে সার্ভিস দেবে। বাইরে থেকে এর সাথে যোগাযোগ করা যাবে না (ফায়ার ওয়ালে পোর্ট খোলা নেই)। nginx  এই ধরনের request এর জন্য প্রক্সির ভুমিকা পালন করবে।

সার্ভিস চালু করার তাড়া থাকায় বেঞ্চমার্ক নেয়া হয় নাই। তবে আপাতত ট্রাফিক সামাল দিচ্ছে নতুন কনফিগারেশন।

No comments:

Post a Comment