কিছু লোক বলে যে দুটি থ্রেড অনেক বেশি - আমি সেই শিবিরে পুরোপুরি নই :-)
এখানে আমার পরামর্শ: পরিমাপ, অনুমান করবেন না। একটি পরামর্শ হ'ল এটিকে কনফিগারযোগ্য করে শুরুতে এটি 100 এ সেট করুন, তারপরে আপনার সফ্টওয়্যারটিকে বন্যের কাছে ছেড়ে দিন এবং কী ঘটে তা পর্যবেক্ষণ করুন।
যদি আপনার থ্রেডের ব্যবহার 3 এ পৌঁছায় তবে 100 এর পরিমাণ অনেক বেশি। যদি দিনের বেশিরভাগ সময় এটি 100 এ থেকে যায় তবে 200 এটিকে টুকরো টুকরো করে দেখুন কী ঘটে see
আপনি পারে আসলে আপনার কোড নিজেই ব্যবহার নিরীক্ষণ ও পরবর্তী সময় এটা শুরু হয় কিন্তু যে সম্ভবত Overkill এর জন্য কনফিগারেশন সমন্বয় আছে।
স্পষ্টতা এবং ব্যাখ্যার জন্য:
আমি আপনার নিজস্ব থ্রেড পুলিং সাবসিস্টেমটি রোলিংয়ের পক্ষে পরামর্শ দিচ্ছি না, যা যা আছে তা আপনার ব্যবহার করুন। তবে, যেহেতু আপনি থ্রেডগুলির জন্য একটি ভাল কাট-অফ পয়েন্ট সম্পর্কে জিজ্ঞাসা করেছিলেন, তাই আমি ধরে নিয়েছি যে আপনার থ্রেড পুল বাস্তবায়নে সর্বাধিক সংখ্যক থ্রেড সীমাবদ্ধ করার ক্ষমতা রয়েছে (যা একটি ভাল জিনিস)।
আমি থ্রেড এবং ডাটাবেস সংযোগ পুলিং কোড লিখেছি এবং সেগুলির নিম্নলিখিত বৈশিষ্ট্য রয়েছে (যা আমি বিশ্বাস করি যে সম্পাদনের জন্য প্রয়োজনীয়):
- সক্রিয় থ্রেডের সর্বনিম্ন সংখ্যা।
- সর্বাধিক সংখ্যক থ্রেড।
- থ্রেডগুলি বন্ধ করে দেওয়া হচ্ছে যা কিছুক্ষণ ব্যবহার করা হয়নি।
থ্রেড পুল ক্লায়েন্টের ক্ষেত্রে প্রথমে সর্বনিম্ন পারফরম্যান্সের জন্য একটি বেসলাইন সেট করে (থ্রেডগুলির এই সংখ্যাটি সর্বদা ব্যবহারের জন্য উপলব্ধ)। দ্বিতীয়টি সক্রিয় থ্রেড দ্বারা সংস্থান ব্যবহারের উপর একটি বিধিনিষেধ সেট করে। তৃতীয়টি আপনাকে শান্ত সময়ে বেসলাইনে ফিরিয়ে দেয় যাতে সম্পদের ব্যবহার হ্রাস করতে পারে।
কাজটি (বি) করার জন্য পর্যাপ্ত থ্রেড না থাকার সংস্থান ব্যবহারের বিরুদ্ধে অব্যবহৃত থ্রেড (এ) থাকার সংস্থান ব্যবহারের ভারসাম্য বজায় রাখতে হবে।
(ক) সাধারণত মেমোরি ব্যবহার (স্ট্যাক এবং তাই) যেহেতু কোনও থ্রেড কোনও কাজ করে না সিপিইউর বেশি ব্যবহার করবে না। (খ) অনুরোধগুলির প্রক্রিয়াকরণে সাধারণত বিলম্ব হবে কারণ আপনার কাছে থ্রেড উপলব্ধ হওয়ার অপেক্ষা করতে হবে।
এজন্য আপনি মাপুন। আপনি যেমন বলেছিলেন, আপনার থ্রেডের সিংহভাগ ডাটাবেস থেকে প্রতিক্রিয়ার জন্য অপেক্ষা করবে যাতে সেগুলি চলবে না। দুটি বিষয় রয়েছে যেগুলি আপনাকে কতগুলি থ্রেডের জন্য অনুমতি দেওয়া উচিত তা প্রভাবিত করে।
প্রথমটি উপলব্ধ ডিবি সংযোগের সংখ্যা। আপনি এটি ডিবিএমএসে বাড়িয়ে না তুললে এটি একটি কঠিন সীমা হতে পারে - আমি ধরে নিচ্ছি যে আপনার ডিবিএমএস এক্ষেত্রে সীমাহীন সংযোগ নিতে পারে (যদিও আপনাকে আদর্শ হিসাবে এটিও পরিমাপ করা উচিত)।
তারপরে, আপনার যে থ্রেড থাকা উচিত তা আপনার historicalতিহাসিক ব্যবহারের উপর নির্ভর করে। আপনার যে ন্যূনতম চলতে হবে তা হ'ল সর্বনিম্ন নম্বরের সাথে আপনার সর্বদা ন্যূনতম নূন্যতম (+ উদাহরণস্বরূপ, এবং এটি এ এর মতো কনফিগারযোগ্য করে তুলুন) 5 রয়েছে running
থ্রেডের সর্বাধিক সংখ্যাটি আপনার maximumতিহাসিক সর্বাধিক + বি% হওয়া উচিত।
আপনার আচরণের পরিবর্তনের জন্যও নজরদারি করা উচিত। যদি কোনও কারণে, আপনার ব্যবহার একটি উল্লেখযোগ্য সময়ের জন্য উপলব্ধ 100% এ যায় (যাতে এটি ক্লায়েন্টদের কার্যকারিতা প্রভাবিত করে), আপনি যতক্ষণ না এটি আবার বি% এর চেয়ে বেশি হন ততক্ষণ পর্যন্ত আপনাকে সর্বোচ্চ অনুমোদিত আপটিকে বাধা দেওয়া উচিত।
"আমি ঠিক কি পরিমাপ করা উচিত?" এর জবাবে প্রশ্ন:
আপনার বিশেষত যা পরিমাপ করা উচিত তা হ'ল বোঝার নিচে সাম্প্রতিক ব্যবহারের সর্বোচ্চ পরিমাণের থ্রেড (যেমন, ডিবি কল থেকে ফেরার অপেক্ষায়)। তারপরে উদাহরণস্বরূপ 10% এর সুরক্ষা ফ্যাক্টর যুক্ত করুন (জোর দেওয়া হয়েছে, যেহেতু অন্যান্য পোস্টারগুলি আমার উদাহরণগুলি নির্দিষ্ট প্রস্তাব হিসাবে বিবেচনা করে)।
উপরন্তু, এটি সুরক্ষা জন্য উত্পাদন পরিবেশে করা উচিত। আগে থেকে অনুমান করা ঠিক আছে তবে আপনি কখনই জানেন না কোন উত্পাদনটি আপনার পথে ফেলে দেবে (যার কারণে রানটাইম এ এই সমস্ত জিনিস কনফিগারযোগ্য হওয়া উচিত)। এটি ক্লায়েন্টের কলগুলিতে অপ্রত্যাশিত দ্বিগুণ হওয়ার মতো পরিস্থিতি ধরা।