বিপরীত প্রক্সি হিসাবে কেন Nginx সেট করা একটি ভাল ধারণা?


41

আমার একটি জ্যাঙ্গো সাইট রয়েছে এনগিনেক্সের মাধ্যমে বিপরীত প্রক্সি সহ গুনিকর্ন-এ চলছে। এনগিনেক্স কি কেবল অতিরিক্ত অপ্রয়োজনীয় ওভারহেড নয়? গ্যানিকর্ন সহায়তাতে এটি কীভাবে যুক্ত করে?

উত্তর:


52

আমি ধীর ক্লায়েন্টের আচরণ এবং আপনার কনফিগারেশনটি কীভাবে এটি পরিচালনা করে সেদিকে মনোনিবেশ করতে চলেছি, তবে এটিই কেবল লাভ benefit ধীর ক্লায়েন্টদের যে একই পদ্ধতি উপকার করে সেই একই পদ্ধতিতে দ্রুত ক্লায়েন্টদের জন্যও এসএসএল হ্যান্ডলিং, ট্রাফিকের বাড়া নিয়ে কাজ করা এবং ইন্টারনেটে এইচটিটিপি সরবরাহের অন্যান্য দিক রয়েছে।

গ্যানিকর্ন হ'ল প্রি-ফোর্কিং সফটওয়্যার। অ্যাপ্লিকেশন সার্ভারের লোড ব্যালান্সার বা পরিষেবাদির মধ্যে যোগাযোগের মতো স্বল্প প্রচ্ছন্নতার জন্য, প্রি-ফর্ক সিস্টেমগুলি খুব সফল হতে পারে। অনুরোধটি পরিচালনা করার জন্য কোনও প্রক্রিয়া কাটাতে কোনও খরচ নেই এবং একটি একক প্রক্রিয়া কোনও একক অনুরোধ পরিচালনার জন্য উত্সর্গ করা যেতে পারে; এই জিনিসগুলির নির্মূলকরণ সামগ্রিক দ্রুত, আরও কার্যকর সিস্টেমের দিকে পরিচালিত করতে পারে যতক্ষণ না এক সাথে সংযোগের সংখ্যাগুলি পরিচালনা করার জন্য উপলব্ধ প্রক্রিয়াগুলির সংখ্যা ছাড়িয়ে যায়।

আপনার পরিস্থিতিতে, আপনি ইন্টারনেটে উচ্চ বিলম্বিত ক্লায়েন্টদের সাথে কাজ করছেন। এই ধীর ক্লায়েন্টগুলি সেই একই প্রক্রিয়াগুলি বেঁধে রাখতে পারে। যখন কিউপিএস বিষয়টি বিবেচনা করে, অ্যাপ্লিকেশন কোডটি যত তাড়াতাড়ি সম্ভব অনুরোধটি গ্রহণ, পরিচালনা ও সমাধান করা দরকার যাতে এটি অন্য একটি অনুরোধে যেতে পারে। ধীর ক্লায়েন্টরা যখন আপনার সিস্টেমের সাথে সরাসরি যোগাযোগ করে, তারা সেই প্রক্রিয়াটি বেঁধে দেয় এবং এটিকে ধীর করে দেয়। অনুরোধটি যত তাড়াতাড়ি সম্ভব পরিচালনা করা এবং নিষ্পত্তি করার পরিবর্তে সেই প্রক্রিয়াটি এখন ধীর ক্লায়েন্টের জন্যও অপেক্ষা করতে হবে। কার্যকর কিউপিএস নীচে যায়।

খুব কম সিপিইউ এবং মেমরির ব্যয়ের সাথে প্রচুর সংখ্যক সংযোগ পরিচালনা করা হ'ল এনগিনেক্সের মতো অ্যাসিনক্রোনাস সার্ভারগুলি ভাল। ধীর ক্লায়েন্টদের দ্বারা তারা একই নেতিবাচক পদ্ধতিতে প্রভাবিত হয় না কারণ তারা একসাথে বিপুল সংখ্যক ক্লায়েন্টকে পরিচালনা করতে পারদর্শী। এনগিনেক্সের ক্ষেত্রে, আধুনিক হার্ডওয়্যারটিতে চলমান এটি একবারে কয়েক হাজার সংযোগ পরিচালনা করতে পারে।

প্রি-ফরাকিং সার্ভারের সামনে এনগিনেক্স একটি দুর্দান্ত সংমিশ্রণ। এনগিনেক্স ক্লায়েন্টদের সাথে যোগাযোগ পরিচালনা করে এবং ধীর ক্লায়েন্টদের পরিচালনা করার জন্য কোনও শাস্তির মুখোমুখি হয় না। এটি ব্যাকএন্ডে অনুরোধগুলি তত দ্রুত পাঠায় যত দ্রুত ব্যাকএন্ড সেই অনুরোধগুলি পরিচালনা করতে পারে, ব্যাকএন্ডটিকে যথাসম্ভব সার্ভার রিসোর্সগুলির সাথে দক্ষ হতে সক্ষম করে। ব্যাকএন্ড এটি গণনা করার সাথে সাথে ফলাফলটি ফেরত দেয় এবং এনগিনেক্স বাফার করে যে এটি তাদের নিজস্ব গতিতে ক্লায়েন্টদের ধীরে ধীরে খাওয়ানোর জন্য প্রতিক্রিয়া জানায়। এদিকে, ধীর ক্লায়েন্টটি এখনও ফলাফলটি পাচ্ছে বলে ব্যাকএন্ড অন্য অনুরোধটি সামলানোর দিকে এগিয়ে যেতে পারে।


3
নাইটপিকিং: গ্যানিকর্ন একটি ইভেন্ট-ভিত্তিক সার্ভার। প্রতিটি প্রক্রিয়া একত্রে সংযোগগুলি পরিচালনা করে। এটি আপনার যুক্তিটির বাকী ব্যাখ্যাকে বৈধ করে তুলনামূলকভাবে প্রতিযোগিতার তুলনায় এনগিনেক্সের কম দামের সত্যটি পরিবর্তন করে না।
জাভিয়র

4
এবং বোনাস হিসাবে, এনগিনেক্স খুব কার্যকরভাবে "স্লো এইচটিটিপি ডস অ্যাটাকস" বন্ধ করে দেয়। আমি যুক্ত করব যে একটি বিষয় হ'ল এনগিনেক্স ব্যবহার করার সময় এটি কোনও আইপি সম্পর্কিত যে কোনও জিনিস আপনি গুনিকর্ন-এ ব্যবহার করতে পারেন তা উদাহরণস্বরূপ আইপি দ্বারা লগ করা, লগিং ইত্যাদি করতে পারে যদি না গুনিকর্ন এক্স-ফরওয়ার্ড-ফর শিরোনামের দিকে তাকানো সমর্থন করে না। আমি গ্যানিকর্ন এর সাথে পরিচিত নই তাই এটি আপনার পক্ষে কত বড় সমস্যা হবে তা আমি বলতে পারি না।
নিলাল ডোনেগান

জাভিয়ার তথ্যের জন্য ধন্যবাদ, আমি বন্দুকের সাথে সুপরিচিত পরিচিতের চেয়ে বেশি নই।
ব্লুবেন

: আপনার উত্তর এই প্রশ্নের জন্য মাপসই করা উচিত stackoverflow.com/q/13182892/719276
arthur.sw

* _বাসী_ফুফার_সাইজ বিকল্পটির সাথে এর কোনও সম্পর্ক আছে?
CMCDragonkai

2

@ ব্লুবেন ঠিক আছে। বিপরীত প্রক্সি ব্যবহার না করা হলে কী ঘটতে পারে তার একটি সুনির্দিষ্ট এবং সাধারণ উদাহরণ হ'ল ব্যাকএন্ড ডাটাবেস যেখানে কোনও প্রক্সি নেই এবং সেখানে ট্রাফিকের স্পাইক রয়েছে সেখানে ডাটাবেস সংযোগ পরিচালনা করতে পারে। এটি ব্লুবেন বর্ণিত হিসাবে সংযোগগুলি ছেড়ে দিতে ধীর হয়ে যাওয়ার কারণে।

ডেটাবেস হ্যান্ডলগুলি চালু হয়ে যাওয়ার প্রথম প্রবৃত্তিটি হতে পারে আরও ডাটাবেস সংযোগগুলি সমর্থন করা। তবে অ্যাপটির সামনে একটি বিপরীত প্রক্সি যুক্ত করে আপনি উচ্চ লোডের জন্য প্রয়োজনীয় ডেটাবেস সংযোগের সংখ্যা উভয়ই উল্লেখযোগ্যভাবে স্থির করতে এবং স্থিতিশীল করতে পারেন - ট্রাফিকের স্পাইক থাকাকালীন ডাটাবেস সংযোগ স্তরটি প্রায় ততটা স্পাইক করবে না।

আপনার অ্যাপ্লিকেশন সার্ভারকে অ্যাপ্লিকেশন সার্ভার হিসাবে ফোকাস করতে দেয়, স্ট্যাটিক সামগ্রী, ক্যাশে এবং বিভিন্ন অন্যান্য এইচটিটিপি কার্য সরবরাহ করার ক্ষেত্রেও এনগিনেক্স দুর্দান্ত।


0

@ নায়েল ডোনগান উপরের মন্তব্যে এটি উল্লেখ করেছেন, তবে উত্তরের উত্তর দেওয়ার পক্ষে এটি যথেষ্ট গুরুত্বপূর্ণ।

গিনিকর্ন হ্যান্ডল করে না এমন ধীর লরিস আক্রমণ থামিয়ে দেয় এনগিনেক্স।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.