Nginx অনুরোধ / সেকেন্ড সর্বাধিক করার জন্য টিপস?


15

আমি একটি অ্যানালিটিক্স প্যাকেজ তৈরি করছি, এবং প্রকল্পের প্রয়োজনীয়তার বিবরণে বলা হয়েছে যে আমাকে প্রতিদিন 1 বিলিয়ন হিট সমর্থন করতে হবে। হ্যাঁ, "বিলিয়ন"। অন্য কথায়, প্রতি সেকেন্ডে 12,000 এরও কম হিট টিকেনি, এবং সম্ভবত কিছু জায়গা ফেটে যাবে। আমি জানি যে এর জন্য আমার একাধিক সার্ভারের প্রয়োজন হবে, তবে আমি "এটিতে আরও হার্ডওয়্যার নিক্ষেপ করার আগে" প্রতিটি নোডের সর্বাধিক পারফরম্যান্স পাওয়ার চেষ্টা করছি।

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

আমার 2 জিবি উবুন্টু 10.04 র্যাকস্পেস সার্ভার (কোনও উত্পাদন মেশিন নয়) প্রতি সেকেন্ডে প্রায় 1200 স্ট্যাটিক ফাইল পরিবেশন করতে পারে (একা স্থির সম্পদের বিপরীতে অ্যাপাচি এবি ব্যবহার করে বেঞ্চমার্কযুক্ত)। তুলনা করতে, যদি আমি আমার ট্র্যাকিং লিঙ্কটির সাথে স্থিতিশীল ফাইল লিঙ্কটি সরিয়ে আনি, তবে আমি প্রতি সেকেন্ডে প্রায় 600 টি অনুরোধ পেয়েছি - আমার মনে হয় এর অর্থ আমার ট্র্যাকারটি ভালভাবে অনুকূলিত হয়েছে, কারণ এটি একই স্থির সম্পদ পরিবেশন করার চেয়ে ধীর গতির 2 কারণ মাত্র slow পুনঃপুনঃ.

যাইহোক, যখন আমি কয়েক মিলিয়ন হিট দিয়ে বেঞ্চমার্ক করি, তখন আমি কয়েকটি জিনিস লক্ষ্য করি -

  1. কোনও ডিস্কের ব্যবহার নেই - এটি প্রত্যাশিত, কারণ আমি সমস্ত এনগিনেক্স লগগুলি বন্ধ করে দিয়েছি এবং আমার কাস্টম কোডটি রেডিসে অনুরোধের বিশদটি সংরক্ষণ ছাড়া কিছুই করে না।
  2. অবিচ্ছিন্ন মেমরির ব্যবহার - সম্ভবত রেডিসের মেমরি পরিচালনার কারণে, আমার স্মৃতি ব্যবহার ধীরে ধীরে উপরে উঠবে এবং পরে নেমে যাবে, তবে এটি কখনও আমার বাধা হয়ে দাঁড়ায় না।
  3. 2-4 প্রায় সিস্টেম লোড হোভার, সিস্টেম এখনও আমার গুরুতম benchmarks সময় প্রতিক্রিয়াশীল, এবং আমি এখনও ম্যানুয়ালি দেখতে পারেন http://mysite.com/tracking/pixel সামান্য দৃশ্যমান বিলম্ব যখন আমার (অন্যান্য) সার্ভার সঞ্চালিত 600 অনুরোধের প্রতি দ্বিতীয়।
  4. আমি যদি একটি ছোট পরীক্ষা চালায় তবে 50,000 হিট বলুন (প্রায় 2 মি) লাগে, আমি প্রতি সেকেন্ডে স্থির, নির্ভরযোগ্য 600 অনুরোধ পাই। আমি যদি দীর্ঘতর পরীক্ষা চালায় (এখন পর্যন্ত 3.5 মিটার পর্যন্ত চেষ্টা করা), আমার আর / এস প্রায় 250 তে অবনমিত হয়।

আমার প্রশ্নগুলো --

ক। দেখে মনে হচ্ছে যে আমি এখনও এই সার্ভারটি আউট করছি? 1,200 / s স্ট্যাটিক ফাইলগুলি Nginx পারফরম্যান্স অন্যেরা যা দেখেছেন তার সাথে কি তুলনাযোগ্য?

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

গ। এমন কি কোনও লিনাক্স-স্তরের সেটিংস রয়েছে যা আমার আগত সংযোগগুলিকে সীমাবদ্ধ করতে পারে?

ঘ। দীর্ঘস্থায়ী পরীক্ষায় আমার পারফরম্যান্স 250r / s এ অবনমিত হতে পারে কি? আবার, এই পরীক্ষাগুলির সময় স্মৃতিশক্তি সর্বাধিক বাড়ছে না এবং এইচডিডি ব্যবহার শূন্য।

আগাম ধন্যবাদ, সব :)

সম্পাদনা করুন এখানে আমার এনগিনেক্স কনফিগারেশন - http://pastie.org/1450749 - এটি বেশিরভাগ ভ্যানিলা, সুস্পষ্ট চর্বি ছাঁটাইযুক্ত।


আপনি একটি পোস্টে একাধিক প্রশ্ন করছেন, পুনর্বিবেচনা বিবেচনা করুন। আমি কেবল একটি মন্তব্য করছি এবং একটি উত্তর নয়, কারণ আমি সমস্ত অংশের উত্তর দিতে পারি না। আমি ধরে নিয়েছি আপনি পাইথন / জ্যাঙ্গো পারফরম্যান্স বিবেচনা করেছেন - এটি চরম গতির জন্য আদর্শ নয়। 1200 req / s সম্পর্কে, আমি যে অনুমান করি এটির জন্য খুব কম মনে হয় 1px gif বা HTTP 204 প্রতিক্রিয়া। দেখুন fx simonhf.wordpress.com/2010/10/02/nginx-versus-sxe-hello-world (24k req / s, লোকালহোস্টে চলছে, তবে কেবল 1 nginx কর্মী ব্যবহার করে))
জেস্পার এম

গোল্ডমাইন মন্তব্য, আপনাকে অনেক ধন্যবাদ। আমি পোস্টটি পড়ব এবং আমার অনুসন্ধানগুলি নিয়ে ফিরে আসব; "একাধিক প্রশ্ন" পয়েন্টার জন্য ধন্যবাদ!
লিঙ্কযুক্ত লিঙ্কযুক্ত

উত্তর:


8

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


1
আহ, ধন্যবাদ পারফরম্যান্সটি 2 এর মতো 64 এর মতোই দেখাচ্ছিল তবে আমি জানতাম না যে ডাব্লুটিএফ করছে। স্পষ্ট করার জন্য ধন্যবাদ।
লিঙ্কযুক্ত লিঙ্কযুক্ত

আপনি কি আপনার এনগিনেক্স কনফিগারেশন ভাগ করতে পারেন? আমরা কী টিউন করছি তা যখন জানিনা তখন সুরের টিপস সরবরাহ করা শক্ত।
ব্লুবেন

2

আমি স্থির সামগ্রীর জন্য দ্বিতীয় সেকেন্ডে 5 কে অনুরোধ করার জন্য এনজিনেক্স ব্যবহার করেছি। আপনি বর্তমানে 1024 এ সেট করা কর্মী_সংযোগের সংখ্যা বাড়িয়ে নিতে পারেন।

সর্বাধিক স্বীকৃতি গণনা নীচে হবে।

মূল বিভাগ থেকে কর্মী_সংযোগগুলি এবং কর্মী_প্রক্রিয়াগুলি আপনাকে সর্বাধিক সংখ্যার মান গণনা করতে দেয়:

সর্বাধিক_ক্লিয়েন্টস = কর্মী_প্রক্রিয়াগুলি * কর্মী_সংযোগ

বিপরীত প্রক্সি পরিস্থিতিতে, সর্বাধিক_ক্লিয়েন্ট হয়ে যায়

সর্বাধিক_ক্লিয়েন্টস = কর্মী_প্রক্রিয়াগুলি * কর্মী_সংযোগ / 4

http://wiki.nginx.org/EventsModule#worker_connections

আপনি যখন নিজের সেটআপের সক্ষমতা জানেন তখন সর্বোচ্চ কর্মী সংযোগ গণনা করা সহজ। মোট ক্ষমতা / কোরের সংখ্যা হ'ল সর্বাধিক কর্মী সংযোগ। মোট ক্ষমতা গণনা করার জন্য একাধিক উপায় রয়েছে।

  1. আমি আপনাকে পরামর্শ দিন যাতে আপনি আপনার সেটআপটি চেষ্টা করে দেখুন এবং আপনাকে সবচেয়ে বাস্তব নম্বর দেবে the আপনি অবরোধ, পুমেল, অ্যাপাচি বেঞ্চ ইত্যাদির মতো সরঞ্জামগুলি ব্যবহার করতে পারেন, পরীক্ষার সময় সিস্টেম রিসোর্সের ব্যবহার পরিমাপ করা মনে রাখবেন না।

যদি আপনি উপরের পদ্ধতিটি আপনার পক্ষে কাজ না করে তবে নীচের পদ্ধতিগুলি চেষ্টা করে দেখুন। আমি র‌্যাম এবং আইওকে উপেক্ষা করে বিস্তৃত অনুমান করছি, সেগুলিও ফ্যাক্টর করবে তবে এগুলি আপনাকে প্রাথমিক পয়েন্ট দেবে এবং আপনি সেখান থেকে সামঞ্জস্য করতে পারেন।

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

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


আপনি কর্মী_সংযোগগুলি বাড়িয়ে দিতে পারেন এবং প্রদত্ত সার্ভারের জন্য একটি আদর্শ সেটিংস কী তা নির্ধারণের ক্ষেত্রে কীভাবে করা উচিত?
কাটো

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