আমি প্রতি সেকেন্ডে 10000 টিসিপি সংযোগগুলি পরিচালনা করার জন্য একটি সিস্টেম ডিজাইন করছি, আমি কোন সমস্যায় পড়ব?


18

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


1
প্রতিটি আগত সংযোগের জন্য থ্রেড না

1
আপনার চূড়ান্ত ফলাফলগুলি এখানে রিপোর্ট করার জন্য +1 :)
অগসেমেক

উত্তর:


17

এটি সাধারণত সি 10 কে সমস্যা হিসাবে পরিচিত । আপনি যে সমস্যার মধ্যে চলে যাবেন সেই পৃষ্ঠাতে প্রচুর ভাল তথ্য রয়েছে।


হ্যাঁ, ভাল লিঙ্ক!
sybreon

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

2

আপনার এটি করা উচিত [যদিও এটি সম্ভবত খারাপ ধারণা]]

উপর রজন appserv আমি ~ 5k req / চতুর্ভুজ কোর 2.6ghz Xeon উপর সেকেন্ড পেতে পারেন। অনুরোধগুলি সরল সার্লেটকে অনুরোধ করে যা মাইএসকিএল থেকে 1 টি সারি পড়ে এবং খুব ছোট এক্সএমএল প্রতিক্রিয়া প্রেরণ করে।

পরীক্ষা দিয়ে করা হয়েছিল

ab -n 10000 -c 16 http://some/url/

পরীক্ষার ফলাফল:

Concurrency Level:      16
Time taken for tests:   1.904 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      3190000 bytes
HTML transferred:       1850000 bytes
Requests per second:    5252.96 [#/sec] (mean)
Time per request:       3.046 [ms] (mean)
Time per request:       0.190 [ms] (mean, across all concurrent requests)
Transfer rate:          1636.42 [Kbytes/sec] received

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

এমনকি দীর্ঘায়িত পরীক্ষার সময়ও আমি সংযোগের সাথে কোনও সমস্যা পেতে পারি না [উল্লিখিত অর্ধ-খোলা সকেট]; গিগাবিট ইথারনেটের সাথে সংযুক্ত দুটি লিনাক্স বাক্সের মধ্যে পরীক্ষা চলে [যদিও আপনি দেখছেন ব্যান্ডউইথ কোনও বাধা নয়]।


ওপিসের মতো প্রতিটি প্রতিক্রিয়ার পরে কি আপনার সংযোগগুলি বন্ধ রয়েছে? আব সংযোগ পাঠাচ্ছে: নিকট শিরোনাম?
নাট

1
@ নেটে এটি এইচটিপি 1.0 - প্রতিটি একক http অনুরোধের জন্য একক সংযোগ।
pQd

1

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


0

আমি যদি সম্ভব হয় তবে টিসিপির পরিবর্তে ইউডিপি ব্যবহার করব। এটি আরও হালকা ওজনের হওয়া উচিত এবং তাই আরও ভাল স্কেল করা উচিত।


আমি রাজী.
ইউডিপিটি

1
প্রেরক ও বিতরণ যাচাইকরণের মতো ইউডিপিরও এটির ঘাটতি রয়েছে, তাই উত্পাদনে ইউডিপি ব্যবহারের আগে সেগুলি বিবেচনা করা উচিত।
SaveTheRbtz

0

আপনার নিক এটি হ্যান্ডেল করতে সক্ষম হওয়া উচিত তবে আমি প্রতি সেকেন্ডে 10 কে নতুন টিসিপি সংযোগ স্থাপনের নকশাকে প্রশ্ন করি; আপনি যদি দ্রুত সংযোগগুলি তৈরি / ধ্বংস করে থাকেন তবে তা হয় ক) এগুলিকে বেশি দিন খোলা রাখা উচিত বা খ) পরিবর্তে ইউডিপি ব্যবহার করা উচিত।

আপনি যখন 1 এম ক্লায়েন্টদের সময়ে সময়ে একটি কোয়েরি করতে হবে তবে ক্ষেত্রে যেখানে লোড প্রতি 10 সেকেন্ডে আঘাত হানে সেখানে ইউডিপি সম্ভবত আরও ভাল পছন্দ।

আপনি কেবলমাত্র 10 কে ক্লায়েন্ট পেয়েছেন এমন ক্ষেত্রে যেখানে প্রতি সেকেন্ডে একটি কোয়েরি করা দরকার, তারা কেবল বিদ্যমান সংযোগগুলি উন্মুক্ত রাখতে পারে এবং তাদের পুনরায় ব্যবহার করতে পারে। এটি ওএসের প্রতি অনেক বেশি দয়ালু হবে এবং এতে অনেক কম বিলম্বও ঘটবে কারণ এটি প্রতিবার একটি নতুন হ্যান্ডশেক লাগবে না।

আপনার প্রতি সেকেন্ডে 10 কে অনুরোধ রয়েছে এমন ক্ষেত্রে, আমি কল্পনা করি যে যাইহোক আপনার সামনে ফ্রন্ট-এন্ড লোড ব্যালেন্সার রয়েছে, তাই আপনাকে এটিও পরীক্ষা করতে হবে।

(এনবি: আমি মনে করি এটি স্ট্যাক ওভারফ্লোতে অন্তর্ভুক্ত)

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