আমরা বিভিন্ন পরিষেবাদির মাধ্যমে বার্তাগুলি প্রক্রিয়া করি (একটি বার্তা সম্ভবত 9 টি পরিষেবা স্পর্শ করবে এটির আগে প্রতিটি নির্দিষ্ট আইও-সম্পর্কিত ফাংশন করে)। পারফরম্যান্সের জন্য এখনই আমাদের কাছে সবচেয়ে খারাপ-কেস (এক্সএমএল ডেটা কন্ট্রাক্ট সিরিয়ালাইজেশন) এবং সেরা-কেস (ইন-মেমরি এমএসএমকিউ) এর সংমিশ্রণ রয়েছে।
বার্তাটির প্রকৃতির অর্থ হল যে আমাদের সিরিয়ালযুক্ত ডেটা প্রায় 12-15 কিলোবাইটের সমাপ্ত হয় এবং আমরা প্রতি সপ্তাহে প্রায় 4 মিলিয়ন বার্তা প্রক্রিয়া করি। এমএসএমকিউতে ক্রমাগত বার্তাগুলি আমাদের জন্য খুব ধীর ছিল এবং ডেটা বাড়ার সাথে সাথে আমরা এমএসএমকিউর মেমরি-ম্যাপযুক্ত ফাইলগুলি থেকে চাপ অনুভব করছি। সার্ভারটি কেবল সারি জন্য 16 মেমরির ব্যবহার এবং বাড়ছে। মেশিনের অদলবদল শুরু হওয়ার সাথে সাথে মেমরির ব্যবহার বেশি হলে পারফরম্যান্সও ক্ষতিগ্রস্থ হয়। আমরা এমএসএমকিউ ইতিমধ্যে স্ব-পরিচ্ছন্নতার আচরণ করছি।
আমি মনে করি আমরা এখানে ভুল করছি একটি অংশ আছে। আমি বার্তাগুলি অব্যাহত রাখতে এবং কেবল একটি সনাক্তকারীকে সারিবদ্ধ করার জন্য রাভেনডিবি ব্যবহার করার চেষ্টা করেছি, তবে সেখানে পারফরম্যান্সটি খুব ধীর ছিল (প্রতি মিনিটে 1000 বার্তা, সেরা)। আমি নিশ্চিত নই যে এটি বিকাশের সংস্করণ বা কী ব্যবহার করার ফলাফল কিনা তবে আমাদের অবশ্যই উচ্চতর থ্রুটপুট [1] প্রয়োজন। ধারণাটি তাত্ত্বিকভাবে খুব ভালভাবে কাজ করেছে তবে কার্য সম্পাদন কাজটির উপর নির্ভর করে না।
ব্যবহারের ধরণটিতে রাউটার হিসাবে কাজ করার জন্য একটি পরিষেবা রয়েছে, যা সমস্ত পাঠ করে। অন্যান্য পরিষেবাগুলি তাদের তৃতীয় পক্ষের হুকের উপর ভিত্তি করে তথ্য সংযুক্ত করবে এবং রাউটারে ফরোয়ার্ড করবে। বেশিরভাগ অবজেক্টগুলি 9-12 বার স্পর্শ করা হয়, যদিও তৃতীয় পক্ষগুলি যথাযথভাবে প্রতিক্রিয়া না জানা পর্যন্ত প্রায় 10% এই সিস্টেমে কিছুক্ষণের জন্য লুপ করতে বাধ্য হয়। পরিষেবাগুলি এখনই এটির জন্য অ্যাকাউন্ট করে এবং উপযুক্ত ঘুমের আচরণ রয়েছে, কারণ আমরা এই কারণে বার্তার অগ্রাধিকার ক্ষেত্রটি ব্যবহার করি।
সুতরাং, আমার প্রশ্ন, একটি সি # / উইন্ডোজ পরিবেশে স্বতন্ত্র-তবে-ল্যান'এইড মেশিনগুলির মধ্যে বার্তা দেওয়ার জন্য একটি আদর্শ স্ট্যাক কী? আমি সাধারণত এক্সএমএল সিরিয়ালাইজের পরিবর্তে বাইনারিফর্ম্যাটর দিয়ে শুরু করব তবে এটি কোনও খরগোশের ছিদ্র যদি আরও ভাল উপায় হয় তবে কোনও ডকুমেন্ট স্টোরে সিরিয়ালাইজেশন অফলোড করা যায়। সুতরাং, আমার প্রশ্ন।
[1]: আমাদের ব্যবসায়ের প্রকৃতির অর্থ আমরা যত দ্রুত বার্তাগুলি প্রক্রিয়াকরণ করব তত বেশি অর্থ উপার্জন করব। আমরা অভিজ্ঞতার সাথে প্রমাণ করেছি যে সপ্তাহের পরে কোনও বার্তা প্রক্রিয়াকরণের অর্থ আমরা সেই অর্থোপার্জনের সম্ভাবনা কম। "প্রতি মিনিটে 1000" এর পারফরম্যান্সটি বেশ দ্রুত শোনায়, আমাদের সত্যিই 10 কে / মিনিটের উপরে of সংখ্যাটি দরকার। কেবলমাত্র আমি প্রতি সপ্তাহে বার্তায় সংখ্যা দিচ্ছি তার অর্থ এই নয় যে এই বার্তাগুলি প্রক্রিয়া করার জন্য আমাদের কাছে একটি পুরো সপ্তাহ রয়েছে have
================ সম্পাদনা:
অতিরিক্ত তথ্য
মন্তব্যের উপর ভিত্তি করে, আমি কিছু স্পষ্টতা যোগ করব:
আমি নিশ্চিত না সিরিয়ালাইজেশন আমাদের বাধা। আমি অ্যাপ্লিকেশনটিকে বেঞ্চমার্ক করেছি এবং সিরিয়ালাইজেশন তাপ গ্রাফটিতে প্রদর্শিত হওয়ার পরে, এটি কেবলমাত্র পরিষেবাটির সিপিইউ ব্যবহারের 2.5-3% এর জন্য দায়ী।
আমি আমাদের বার্তাগুলির স্থায়ীত্ব এবং এমএসএমকিউর সম্ভাব্য অপব্যবহার সম্পর্কে বেশিরভাগ ক্ষেত্রেই উদ্বিগ্ন। আমরা অ-লেনদেনমূলক, অ-অবিচল বার্তাগুলি ব্যবহার করছি যাতে আমরা কুইউন পারফরম্যান্সটি ধরে রাখতে পারি এবং আমি কমপক্ষে অবিচ্ছিন্ন বার্তাগুলি রাখতে চাই যাতে সেগুলি পুনরায় চালু হয়।
আরও র্যাম যুক্ত করা একটি স্টপগ্যাপ পরিমাপ। মেশিনটি ইতিমধ্যে 4 গিগাবাইট -> 16 গিগাবাইট র্যাম থেকে চলে গেছে এবং আরও যুক্ত করা চালিয়ে যেতে আরও শক্ত এবং শক্ত হয়ে উঠছে।
অ্যাপ্লিকেশনটির তারকা রাউটিং প্যাটার্নের কারণে, কোনও বস্তু পপ করা হয়ে যাওয়ার পরে অর্ধেক সময় একটি কাতারে ধাক্কা দেওয়া হয় না এটি মোটেও পরিবর্তন হয় না। এটি আবার নিজেকে (আইএমও) অন্য কোনও জায়গায় কী-মূল্যের দোকানে সংরক্ষণ এবং কেবল বার্তা শনাক্তকারীদের পাস করার জন্য ndsণ দেয়।
তারকা রাউটিং প্যাটার্নটি অ্যাপ্লিকেশনটির সাথে অবিচ্ছেদ্য এবং কোনও পরিবর্তন হবে না। আমরা এটিকে অ্যাপ্লিকেশন-সেন্টিপি করতে পারি না কারণ পথের প্রতিটি টুকরো সংবিধানে পরিচালিত হয় (একটি পোলিং ফ্যাশনে) এবং আমরা পুনরায় চেষ্টাটি এক জায়গায় কেন্দ্রীভূত করতে চাই।
অ্যাপ্লিকেশন যুক্তি সি # তে লিখিত আছে, অবজেক্টগুলি অপরিবর্তনীয় POCOs, লক্ষ্য স্থাপনার পরিবেশ উইন্ডোজ সার্ভার 2012, এবং যদি একটি নির্দিষ্ট সফ্টওয়্যার কেবল লিনাক্সে সমর্থিত হয় তবে আমাদের অতিরিক্ত মেশিনগুলি দাঁড়াতে দেওয়া হয়।
আমার লক্ষ্যগুলি হ'ল মেমোরির পদচিহ্নগুলি হ্রাস করার সময় এবং বর্তমান পুঁজির সর্বনিম্ন ব্যয় সহ দোষ সহনশীলতা বাড়ানোর সময় বর্তমান থ্রুপুট বজায় রাখা।