গ্লোবাল ম্যাক্সকন এবং সার্ভার ম্যাক্সকন হ্যাপ্রক্সির মধ্যে পার্থক্য


91

আমার হাইপোক্সি কনফিগারেশন সম্পর্কে আমার একটি প্রশ্ন রয়েছে:

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log         127.0.0.1 syslog emerg
    maxconn     4000
    quiet
    user        haproxy
    group       haproxy
    daemon
#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will 
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode        http
    log         global
    option      abortonclose
    option      dontlognull
    option      httpclose
    option      httplog
    option      forwardfor
    option      redispatch
    timeout connect 10000 # default 10 second time out if a backend is not found
    timeout client 300000 # 5 min timeout for client
    timeout server 300000 # 5 min timeout for server
    stats       enable

listen  http_proxy  localhost:81

    balance     roundrobin
    option      httpchk GET /empty.html
    server      server1 myip:80 maxconn 15 check inter 10000
    server      server2 myip:80 maxconn 15 check inter 10000

আপনি দেখতে পাচ্ছেন এটি সরাসরি এগিয়ে রয়েছে তবে ম্যাক্সকন বৈশিষ্ট্যগুলি কীভাবে কাজ করে তা সম্পর্কে আমি কিছুটা বিভ্রান্ত।

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

তারপরে আপনার সার্ভারটি ম্যাক্সকন সম্পত্তি 15 এ সেট করা আছে First পিএইচপি-এফপিএম এর পরিবর্তে অনুরোধগুলি এখানে পুলিং করা হচ্ছে। যা আমি দ্রুত বলে মনে করি।

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

সুতরাং প্রশ্নগুলি হ'ল:

  1. গ্লোবাল সংযোগগুলি 4000 এর উপরে উঠলে কী হবে? তারা কি মারা যায়? নাকি লিনাক্সের পুল কোনওভাবে?
  2. সার্বিক সংযোগগুলির সাথে কি বিশ্বব্যাপী সংযোগ সম্পর্কিত, আপনার কাছে বৈশ্বিকের চেয়ে মোট সংখ্যক সার্ভার সংযোগ থাকতে পারে না?
  3. গ্লোবাল সংযোগগুলি নির্ধারণ করার সময়, এটি কী সার্ভার বিভাগে সংযুক্ত পরিমাণের পরিমাণ, এবং পুলিংয়ের জন্য একটি নির্দিষ্ট শতাংশের মতো হওয়া উচিত নয়? এবং স্পষ্টতই আপনার সংযোগগুলিতে অন্যান্য সংযম রয়েছে তবে প্রকৃতপক্ষে প্রকৃতপক্ষে আপনি কতজন প্রেরণ করতে চান?

তুমাকে অগ্রিম ধন্যবাদ.

উত্তর:


167

উইলি আমাকে ইমেলের মাধ্যমে একটি উত্তর পেয়েছে। আমি ভেবেছিলাম আমি এটি ভাগ করে নেব। তাঁর উত্তরগুলি সাহসী।

আমার হাইপোক্সি কনফিগারেশন সম্পর্কে আমার একটি প্রশ্ন রয়েছে:

   #---------------------------------------------------------------------
   # Global settings
   #---------------------------------------------------------------------
   global
       log         127.0.0.1 syslog emerg
       maxconn     4000
       quiet
       user        haproxy
       group       haproxy
       daemon
   #---------------------------------------------------------------------
   # common defaults that all the 'listen' and 'backend' sections will 
   # use if not designated in their block
   #---------------------------------------------------------------------
   defaults
       mode        http
       log         global
       option      abortonclose
       option      dontlognull
       option      httpclose
       option      httplog
       option      forwardfor
       option      redispatch
       timeout connect 10000 # default 10 second time out if a backend is not found
       timeout client 300000 # 5 min timeout for client
       timeout server 300000 # 5 min timeout for server
       stats       enable

   listen  http_proxy  localhost:81

       balance     roundrobin
       option      httpchk GET /empty.html
       server      server1 myip:80 maxconn 15 check inter 10000
       server      server2 myip:80 maxconn 15 check inter 10000

আপনি দেখতে পাচ্ছেন এটি সরাসরি এগিয়ে রয়েছে তবে ম্যাক্সকন বৈশিষ্ট্যগুলি কীভাবে কাজ করে তা সম্পর্কে আমি কিছুটা বিভ্রান্ত।

লিজ ব্লকটিতে সার্ভারে গ্লোবাল ওয়ান এবং ম্যাক্সকন রয়েছে।

এবং লিজ ব্লকে আরও একটি রয়েছে যা 2000 এর মতো কোনও কিছুর কাছে ডিফল্ট।

আমার চিন্তাভাবনাটি হ'ল: বিশ্বব্যাপী একটি পরিষেবা হিসাবে হ্যাপ্রোক্সি মোট সংযোগের পরিচালনা করে যা এক সময় ক্রিয়া বা প্রক্রিয়াজাত হয়।

সঠিক। এটি সম-সংযোগের প্রতি-প্রক্রিয়া সর্বাধিক সংখ্যক।

যদি সংখ্যাটি এর উপরে চলে যায় তবে এটি সংযোগটি মেরে ফেলবে, বা কোনও লিনাক্স সকেটের পুলগুলি?

পরে এটি কেবল নতুন সংযোগ গ্রহণ করা বন্ধ করে দেয় এবং তারা কার্নেলের সকেট লাইনে থেকে যায়। কুইয়েবল সকেটের সংখ্যা নির্ধারিত হয় (নেট.কম.সোম্যাক্সন, নেট.ipv4.tcp_max_syn_backlog, এবং শ্রবণ ব্লকের ম্যাক্সকন) এর মিনিট দ্বারা।

সংখ্যাটি 4000 এর বেশি হলে কী হয় তা আমার কোনও ধারণা নেই।

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

তারপরে আপনার সার্ভারটি ম্যাক্সকন সম্পত্তি 15 এ সেট করা আছে First পিএইচপি-এফপিএম এর পরিবর্তে অনুরোধগুলি এখানে পুলিং করা হচ্ছে। যা আমি দ্রুত বলে মনে করি।

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

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

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

সুতরাং প্রশ্নগুলি হ'ল:

  1. গ্লোবাল সংযোগগুলি 4000 এর উপরে উঠলে কী হবে? তারা কি মারা যায়? নাকি লিনাক্সের পুল কোনওভাবে?

    তারা লিনাক্স মধ্যে সারিবদ্ধ। একবার আপনি কার্নেলের সারিটি ছেয়ে ফেললে সেগুলি কার্নেলে ফেলে দেওয়া হবে।

  2. সার্বিক সংযোগগুলির সাথে কি বিশ্বব্যাপী সংযোগ সম্পর্কিত, আপনার কাছে বৈশ্বিকের চেয়ে মোট সংখ্যক সার্ভার সংযোগ থাকতে পারে না?

    না, গ্লোবাল এবং সার্ভার সংযোগ সেটিংস স্বতন্ত্র।

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

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


10
এই পোস্ট করার জন্য ধন্যবাদ।
টারান্টুলা

9
আমার একটি হাইপোক্সি রয়েছে যা প্রায় 200 জন ব্যাকএন্ডের জন্য প্রক্সি করে। একবার যখন ব্যাকএন্ডে প্রায় 300 ডলার কননিটোন / সেকেন্ডের সাথে ডিডিএস-এড হয়, অন্য সমস্ত ব্যাকএন্ড মারা যায়। ব্যাকএন্ড সার্ভারে 2048 মান ম্যাক্সকন সহ (ডিডোসের অধীনে), আমাদের হ্যাপ্রোক্সি সূক্ষ্মভাবে চলে। আপনাকে অনেক ধন্যবাদ, আপনি আমাকে এক রাতে বাঁচিয়েছেন :)
hangnv
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.