আমরা সম্প্রতি আমাদের উত্পাদনের পরিবেশটি কুবারনেটসে সরিয়ে নিয়েছি। আমি ধারকগুলিতে সিপিইউ সীমাবদ্ধতা প্রয়োগ করতে চাই। আমি বিবাদী সিপিইউ মেট্রিকগুলি পেয়ে যাচ্ছি যা এক সাথে মানায় না। এখানে আমার সেটআপ:
- ডেটাডগ এজেন্টরা এ হিসাবে চলমান
Daemonset
- বিদ্যমান অ্যাপ্লিকেশনগুলি সিপিইউ সীমা ছাড়াই চলছে
- প্রশ্নযুক্ত ধারকগুলি হ'ল বহু-থ্রেডযুক্ত রুবি অ্যাপ্লিকেশন
- দুটি মেট্রিক:
kubernetes.cpu.usage.{avg,max}
এবংdocker.cpu.usage
c4.xlarge
ক্লাস্টার নোড (4 টি ভিসিপিইউ বা 4000 মিটার কুবারনেটস পদে)
kubernetes.cpu.usage.max
প্রশ্নযুক্ত ধারকগুলির জন্য ~ 600m প্রতিবেদন করে docker.cpu.usage
রিপোর্ট 60 reports। এটি অনুসরণ করে যে একটি 1000 মি সিপিইউ সীমা স্বাভাবিক অপারেশনের অধীনে পর্যাপ্ত ক্ষমতার চেয়ে বেশি হবে।
আমি সীমাটি 1000 মি তে সেট করেছি। তারপর docker.container.throttles
উল্লেখযোগ্যভাবে বেড়ে যায় যখন kubernetes.cpu.usage.max
এবং docker.cpu.usage
একই থাকে। এই সময়ে সমস্ত হাঁটুতে সিস্টেম পড়ে যায়। এটি আমার কাছে অর্থবোধ করে না।
আমি ডকারের পরিসংখ্যান নিয়ে গবেষণা করেছি। দেখে মনে হচ্ছে docker stats
(এবং অন্তর্নিহিত এপিআই) সিপিইউ কোর অনুসারে লোডকে স্বাভাবিক করে তোলে। সুতরাং আমার ক্ষেত্রে, docker.cpu.usage
60% কুবারনেটসের পদে (4000 মি * 0.60) থেকে 2400 মি পর্যন্ত আসে। তবে এটি কোনও কুবারনেট সংখ্যার সাথে সম্পর্কিত নয়। আমি আমার অনুমানটি পরীক্ষা করার জন্য আরও একটি পরীক্ষা করেছিলাম যে কুবেরনেটস সংখ্যাটি ভুল। আমি সীমাটি 2600 মি (কিছু অতিরিক্ত হেডরুমের জন্য) সেট করেছি। এর ফলে কোনও থ্রটল হয়নি। তবে কুবারনেটস পর্যবেক্ষণ করেছেন সিপিইউ ব্যবহার পরিবর্তন হয়নি। এটি আমাকে বিভ্রান্ত করে তোলে।
সুতরাং আমার প্রশ্নগুলি হ'ল:
- এটি কি কুবারনেটসের বাগের মতো মনে হচ্ছে (বা স্ট্যাকের কিছু?)
- আমার বোধগম্যতা কি সঠিক?
আমার ফলোআপ প্রশ্নটি রুবি অ্যাপ্লিকেশনগুলির সিপিইউ সঠিকভাবে নির্ধারণ করার সাথে সম্পর্কিত to একটি ধারক পুমা ব্যবহার করে। এটি কনফিগারযোগ্য পরিমাণে থ্রেড সহ একটি বহু-থ্রেডযুক্ত ওয়েব সার্ভার। এইচটিটিপি অনুরোধগুলি থ্রেডগুলির মধ্যে একটি দ্বারা পরিচালিত হয়। দ্বিতীয় অ্যাপ্লিকেশনটি থ্রেডেড সার্ভারটি ব্যবহার করে একটি থ্রিফ্ট সার্ভার। প্রতিটি আগত টিসিপি সংযোগ তার নিজস্ব থ্রেড দ্বারা পরিচালিত হয়। সংযোগ বন্ধ হয়ে গেলে থ্রেডটি প্রস্থান করে। রুবি জিআইএল (গ্লোবাল ইন্টারপ্রেটার লক) হিসাবে তাই একবারে কেবল একটি থ্রেড রুবি কোড কার্যকর করতে পারে। এটি একাধিক থ্রেডকে আইও এবং এই জাতীয় জিনিসগুলি কার্যকর করে।
আমি মনে করি সেরা অ্যাপ্লিকেশনটিতে চলমান থ্রেডের সংখ্যা সীমাবদ্ধ করা এবং থ্রেডের সংখ্যার উপর ভিত্তি করে কুবেরনেটস সিপিইউ সীমাবদ্ধকরণকে সীমাবদ্ধ করা best প্রক্রিয়াগুলি নকল হচ্ছে না সুতরাং মোট সিপিইউ ব্যবহার অনুমান করা শক্ত।
এখানে প্রশ্নটি হল: কীভাবে এই অ্যাপ্লিকেশনগুলির জন্য সিপিইউ ব্যবহার এবং সীমাবদ্ধতার যথাযথভাবে পূর্বাভাস দেওয়া যায়?