পরিষেবা ব্রোকার - কথোপকথন লাইফটাইম?


9

আমরা ব্যবসায়ের কেস সমাধানের জন্য পরিষেবা পরিবেশকে আমাদের পরিবেশে কাজ করার চেষ্টা করছি। আমি জানিনা বার্তার শিরোনামটি ভাল কিনা, তবে আমার প্রশ্নটি নীচে। তবে এটি একটি ভাল প্রশ্ন নাও হতে পারে, সুতরাং এর পরে আমরা কী করছি এবং কেন আমি মনে করি এটি সঠিক প্রশ্ন।

কথোপকথনটি শেষ হওয়ার আগে একটি কথোপকথনে কয়টি বার্তা প্রেরণ করা উচিত?

ফলাফল টেবিলে অবিচ্ছিন্নভাবে আপডেট করার জন্য আমরা পরিষেবা ব্রোকারটি ব্যবহার করতে চাই। ফলাফল সারণী সমতল এবং দ্রুত হয়। আমাদের বেস টেবিলগুলিতে ট্রিগার রয়েছে যা তাদের টেবিল এবং প্রাথমিক কী সহ একটি বার্তা প্রেরণ করে। আমাদের তিনটি সারি রয়েছে:

  • নিম্ন দেরীতে - উদ্দেশ্য প্রক্রিয়াটির 15 সেকেন্ড। এটি আইটেমগুলি পরিচালনা করে যা নির্দিষ্ট আইটেমের সাথে সম্পর্কিত।
  • বাল্ক সারি - উদ্দেশ্য প্রক্রিয়া করতে 5 মিনিট। যখন এমন কিছু পরিবর্তন হয় যা বহু শতাধিক (বা হাজারো) আইটেমকে প্রভাবিত করে তখন এটি পরিচালনা করে। এটি প্রভাবিত হয়েছিল এমন আইটেমগুলির তালিকা ভেঙে দেয় এবং এগুলি ডিফার্ড লো লেটেন্সি কাতারে ফিড করে
  • ডিফার্ড লো লেটেন্সি - উদ্দেশ্য প্রক্রিয়া করতে 30 মিনিট। এটি আইটেমগুলি প্রক্রিয়া করে তবে কেবল বাল্ক সারি থেকে।

মূলত, যদি কোনও ক্লায়েন্টের তথ্য আপডেট হয়; এটি এমন অনেক পণ্যকে প্রভাবিত করে যাতে ধীর প্রক্রিয়াকরণের জন্য বাল্ক কাতারে প্রেরণ হয়। যাইহোক, যদি কোনও পণ্য আপডেট হয়ে যায়, তবে এটি কম বিলম্বিত সারিতে পাঠানো হবে।

আমরা রেমাস রুসানুর ব্লগ http://rusanu.com/2007/04/25/reasing-conversations/ এর অনুরূপ কথোপকথনগুলিকে পুনরায় ব্যবহার করি , ব্যতিক্রম যে আমরা এটি প্রাথমিক কী এর মডিউলাসের উপর ভিত্তি করে করি। প্রাথমিক কী এর ডি-সদৃশকরণে সহায়তা করার পার্শ্ব সুবিধা রয়েছে।

সুতরাং, আমরা কথোপকথনগুলি পুনরায় ব্যবহার করছি এবং আমাদের নির্দেশিকাগুলির মধ্যে আছি। দুটি থ্রেড সহ, আমি 125 বার্তা / সেকেন্ডের মাধ্যমে (বেশ কয়েক হাজার বার্তাগুলির কৃত্রিম ড্রপ) দিয়ে পোড়াতে সক্ষম হয়েছি, যা উত্পাদনের সাথে তাল মিলিয়ে রাখতে সক্ষম (সর্বাধিক 15 বার্তা / সেকেন্ড)।

তবে, আমরা যে সমস্যার মুখোমুখি হচ্ছি তা হ'ল সময়ের পরে, hours 4 ঘন্টা বা 120 কে বার্তা, আমরা সিসডেসেন্ড এবং সারি টেবিলের উপর ব্লক এবং উচ্চ বিতর্ক দেখতে শুরু করি। লকগুলি LCK_M_U এবং কেই লক হয়। কখনও কখনও হোবটটি সিসডেসেন্ডে এবং অন্যান্য সময়ে নির্দিষ্ট সারি টেবিলের (কুই_) সমাধান করে।

আমাদের এমন একটি প্রক্রিয়া রয়েছে যা ইতিমধ্যে 24 ঘন্টা বা 30 মিনিটের নিষ্ক্রিয়তার পরে কথোপকথনটি শেষ করবে, তাই আমরা কথোপকথনটি সাইক্লিংয়ের আগে সময়টি আরও বাড়িয়ে দিতে পারি।

আমরা এসকিউএল 2016 এন্টারপ্রাইজ (13.0.4001.0) ব্যবহার করছি

  1. ট্রিগার ফায়ারস (কম বিলম্বিত বা বাল্কের কাছে প্রেরণ করুন)
  2. সন্ধান করুন বা কথোপকথনের হ্যান্ডেল তৈরি করুন।
  3. বার্তা পাঠান
  4. সারি সক্রিয় পদ্ধতি
  5. ফলাফলের সারণী আপডেট করুন

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

উপকারজনক হতে পারে এমন কোনও অতিরিক্ত বিশদ থাকলে দয়া করে আমাকে জানান। পরিষেবা ব্রোকারের সাথে আমার খুব বেশি অভিজ্ঞতা নেই তাই আমার বার্তা / সেকেন্ড কম, উচ্চ বা উদাসীন কিনা তা আমি জানি না।

হালনাগাদ

তাই আমরা আজ আবার চেষ্টা করেছি এবং একই সমস্যার মুখোমুখি হয়েছি। আমরা কথোপকথনটির আজীবন 2 ঘণ্টার মধ্যে পরিবর্তন করেছি এবং এর কোনও প্রভাব নেই। সুতরাং আমরা তখন 150 টি কৌশল বাস্তবায়ন করেছি; যা একই সমস্যা ছিল।

ট্রেনগুলি SEND CONVERSATION এ অপেক্ষা করুন, সিডসেন্ডে অপেক্ষা করা। কারও কি আরও কিছু ধারণা আছে?

আপডেট 2

আমরা আজ দীর্ঘকাল পরীক্ষা চালিয়েছি এবং ১ 17 মিনিটের নমুনা সময়ের মধ্যে একটিতে আমরা ৪ টি কথোপকথনের হ্যান্ডেলে 41 কে বার্তা প্রসেস করেছি। সিসডেসেন্ডে এবং কাতার টেবিলের লকগুলি খুব বেশি হয়ে যায় এবং আমরা এটি বন্ধ করার আগে পিছনে পিছনে যেতে শুরু করি, আমরা শেষের দিকে অগ্রাহ্য করতে সক্ষম হয়েছি। আমাদের মনে হয় বার্তাগুলি প্রক্রিয়াকরণে কোনও সমস্যা নেই, কাতারে প্রবেশ না করেই আমরা এগুলি সরাতে পারি এবং কমপক্ষে 5x গতিতে তাদের প্রক্রিয়া করতে পারি। বার্তা যুক্ত করার উপর ভিত্তি করে আমাদের গতি সীমাবদ্ধ বলে মনে হচ্ছে।

পরবর্তী পরীক্ষায়, আমরা এমন একটি ট্রিগার সরিয়ে দিয়েছি যা ম্যাসেজের ৮০% হয়ে থাকে। এমনকি এই অনেক কমানোর বোঝা নিয়েও আমরা একই অপেক্ষারত দেখতে শুরু করেছি।

আপডেট 3

আপনাকে ধন্যবাদ, আপনার পরামর্শের জন্য রেমাস (এবং এই বিষয়ে দুর্দান্ত ব্লগ নিবন্ধগুলি পোস্ট করার জন্য আপনাকে ধন্যবাদ, তারা এই মুহুর্তে পৌঁছাতে সহায়ক ভূমিকা পালন করেছিল)।

আমরা আজ এটি আবার চালিয়েছি এবং আরও ভাল করেছিলাম (যেমন আমরা অপেক্ষাগুলি দেখার আগে এবং এটি আমাদের পঙ্গু করার আগে আরও দীর্ঘ হয়েছিল) longer সুতরাং, বিশদ।

আমরা পরিবর্তন করেছি: * প্রতি থ্রেড বজায় রাখা কথোপকথনের সংখ্যা 1: 1 থেকে 2: 1 এ বাড়িয়েছি। মূলত, আমাদের 4 টি থ্রেডের জন্য 8 টি কথোপকথন হ্যান্ডেল ছিল।

  • কম, বৃহত্তর বার্তাগুলিতে একীভূত করতে বাল্ক কাতাকে একীভূত করা হয়েছে (কারণ একটি আগত বার্তাটি কয়েকজন বহির্গামী বার্তাকে বোঝাতে পারে)

এই প্রচেষ্টা সম্পর্কে নোট:

  • লক্ষ্য সারি অ্যাক্টিভেশন পদ্ধতিটি অক্ষম করা হচ্ছে। অবরুদ্ধকরণে কোনও পরিবর্তন হয়নি (আমরা 5 মিনিট অপেক্ষা করেছি) এবং বার্তাটি sys.transmission_queues এ প্রেরণ করা হবে।

  • sys.conversation_endpPoint নিরীক্ষণ। এই সংখ্যাটি 0 13 কে থেকে খুব দ্রুত চলে গিয়েছিল এবং তারপরে সারা দিন আরও আস্তে rose 5 ঘন্টা পরে 25K অবধি শেষ হয়। 16K +/- না হওয়া পর্যন্ত অবরুদ্ধ হওয়া শুরু হয়নি

  • আমি ড্যাকের মধ্যে andুকে গিয়েছিলাম এবং কাতারগুলির জন্য ডিবিআরআইএনডিএক্স কমান্ডগুলি চালিত করেছি, যদিও কোনও প্রশ্ন থেকে, ক্লিনআপটি উপস্থিত হওয়ার আগে এবং ভোজন রেকর্ডটি 200 এ ছাড়েনি got

  • পরীক্ষা শেষ করার সময় সিডিসেন্ড এবং সিসডেরসিভের 24,932 এর অভিন্ন গণনা ছিল।

  • আমরা 5 ঘন্টা ~ 310K বার্তা প্রসেস করেছি।

জিনিসগুলি বিচ্ছিন্ন হওয়ার আগে আমরা এতক্ষণ গিয়েছিলাম যে আমি সত্যিই ভেবেছিলাম আমরা এবার এটি তৈরি করব। আগামীকাল আমরা তারের মধ্য দিয়ে বার্তাগুলি জোর করার চেষ্টা করব।


1
we started seeing blocks and high contention on sysdesend and the queue table.-> অপেক্ষার প্রকারটি কী - PAGELATCH_EX/SH and WRITELOG? আপনি কি 150 টি ট্রিক ব্যবহার করেছেন ? যদি সিস্টেম সারণীগুলি আপনার যুক্তিযুক্ত বিষয় হয় তবে 150 টি কৌশলটি অত্যন্ত কার্যকর।
কিন শাহ

@ তবে, আমি প্রশ্নটি আপডেট করেছি তবে লক টাইপগুলি হ'ল এলসিকে_ এম_ইউ বা এলসিকে_এম_এক্স। আমি 150 টি কৌশল সম্পর্কে পড়েছিলাম তবে আশা করছি যে এটি 2016 এ অপ্রয়োজনীয় ছিল (যেহেতু তারা টেম্পডিবি ফাঁস ইস্যুটিও সমাধান করেছিল), তবে কারণ এটি এমন হ্যাকের মতো বলে মনে হয়। আমরা প্রযোজনায় যাওয়ার পথে আরও ছুরিকাঘাত করতে যাচ্ছি (দুঃখের সাথে আমরা কেবল উত্পাদন কাজের চাপের সাথে এর মুখোমুখি হয়েছি) এবং প্রথমে জীবনকালীন সংক্ষিপ্ত কথোপকথনের চেষ্টা করতে যাচ্ছি। আমি ফলাফল সঙ্গে এখানে আপডেট করব। এর পরে আপনার উল্লেখ করা 150 টি কৌশল হবে।
জোনাথন ফাইট

আমি টুইটারে @ রেমুস রুসানুকে জিজ্ঞাসা করেছি - তিনি পরিষেবা ব্রোকার স্টাফের বিশেষজ্ঞ :-)
কিন শাহ

এটি এমন কিছু নয় যা আমি এর আগে দেখেছি (দীর্ঘকালীন পরে SEND অবক্ষয়)। 1) দয়া করে আমাকে বলুন sys.conversation_endpointsপরীক্ষার সময় সারিগুলির সংখ্যা কী (ধ্রুবক বা ক্রমবর্ধমান, এবং যখন ব্লকিং ঘটে তখন এটি কত বড়)। ২) যখন ব্লকিং ঘটে তখন লক্ষ্য কাতটি নিষ্ক্রিয় করা SEND ব্লকিংয়ের ক্ষেত্রে কি কি পার্থক্য সৃষ্টি করে (সারিটি অক্ষম করে SEY.transmission_queue এ SEND রুট করা উচিত)। এবং 3) বার্তাটি তারে যেতে বাধ্য করা, এমনকি স্থানীয়ভাবে (এসএসবি শেষ পয়েন্ট স্থাপন, রুট যুক্ত করা) দীর্ঘকালীন আচরণের পরিবর্তন করে
রিমাস রুসানু

আরও কিছু চিন্তাভাবনা: ৪) যখন ব্লকিং ঘটে, তখন লক্ষ্যমাত্রায় প্রাপ্তি থামানো কি তাত্পর্যপূর্ণ করে তোলে (অ্যাক্টিভেটেড প্রোক অক্ষম করুন, যদি থাকে) এবং ৫) ঘোড়িত রেকর্ডগুলি লক্ষ্য সারিতে কতগুলি থাকে ? ALTER QUEUE ... REBUILDএকবারে ব্লকিং শুরু হওয়ার পরে কি দৌড়াদৌড়ি দ্বারা কোনও পার্থক্য আসে?
রিমাস রুসানু

উত্তর:


3

আমি জানি আপনার নিজের প্রশ্নের উত্তর দেওয়ার জন্য এটি খারাপ ফর্ম, তবে আমি আগ্রহী যে কারও জন্য এটি বন্ধ করতে চেয়েছিলাম। আমরা অবশেষে সমস্যাটি সমাধান করতে পরিচালিত করেছি, বা আমাদের প্রয়োজনীয়তাগুলি পূরণ করার জন্য কমপক্ষে এটি পর্যাপ্ত সমাধান করুন। আমি মন্তব্য অবদান যারা প্রত্যেককে ধন্যবাদ জানাতে চাই; রেমাস রুসানু এবং কিন তাদের খুব সাহায্যকারী বলেছিল।

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

আমাদের প্রাথমিকভাবে প্রতিটি আপডেট / সন্নিবেশ বিবৃতিতে সংশোধিত রেকর্ডগুলি (বেশিরভাগ ক্ষেত্রে এক সারি হওয়া উচিত ছিল) এবং প্রতিটি প্রাথমিক কীটি পরিষেবা ব্রোকারকে একটি বার্তায় প্রেরণে ট্রিগারগুলি ছিল। পরিষেবা ব্রোকারের ভিতরে, বিশেষত বাল্ক সারিটি আরও কার্সার ছিল যা রিপোর্টের উপস্থাপনা প্রক্রিয়া সম্পাদন করে (প্রাথমিক কী প্রতি এক কার্যকরকরণ)।

আমাদের অবশেষে কী কাজ করেছে:

  • আমরা কার্সারগুলি সরিয়ে নিয়েছি এবং আরও বড় বার্তা প্রেরণে স্থির হয়েছি। প্রতি সারণীতে প্রতি ব্যবহারকারী লেনদেনের জন্য এখনও একটি বার্তা, তবে আমরা এখন একাধিক প্রাথমিক কী সহ বার্তা প্রেরণ করি।

  • বাল্ক প্রসেসর প্রতি বার্তা অনুসারে একাধিক কী প্রেরণ করে, যা যথাযথভাবে অন্যান্য কাতারে বার্তাগুলি বদলে দেওয়ার কারণে চলছে এমন SEND CONVERSATIONS সংখ্যা কমিয়ে দেয়।

  • সর্বাধিক উদ্বায়ী টেবিল (আমাদের মোবাইল ডিভাইসের ডেটা টেবিল) এর ট্রিগারগুলি সরানো হয়েছিল। উপযুক্ত বিদেশী কীগুলি অন্তর্ভুক্ত করার জন্য আমরা আপসেট পদ্ধতিটি আপডেট করেছি এবং ব্যবহারকারীদের কাছে ফলাফল আনার সময় আমরা কেবলমাত্র সেই টেবিলে ফিরে আসি। এই টেবিলটি সহজেই আমাদের একদিনে প্রক্রিয়াজাত করতে থাকা 80% বার্তাকে অবদান রাখে।

আমরা এক দিন M 1M বার্তাগুলি প্রক্রিয়া করি (মোবাইল টেবিল ছাড়াই) এবং আমাদের বার্তাগুলির বিশাল সংখ্যাগরিষ্ঠ (99% +) আমাদের উদ্দেশ্যটির অভ্যন্তরে প্রসেস করা হয়। আমাদের কাছে এখনও মাঝে মাঝে আউটলেট রয়েছে তবে এটি বিরল প্রকৃতির যে এটি গ্রহণযোগ্য বলে মনে করা হচ্ছে given

অবদানকারী কারণগুলি:

  • আমি পূর্বে উল্লিখিত কথোপকথনের ক্লিনআপ পদ্ধতিতে একটি বাগ পেয়েছি যা আসলে কথোপকথনগুলি যথাযথভাবে পরিষ্কার করে না এবং অকালপূর্বে সেগুলি শেষ করে। এর ফলে এখন আমাদের সিসডিসেন্ড কাউন্টটি কয়েক হাজারের বেশি হবে না (এর বেশিরভাগটি 150 টি ট্রিক ব্যবহার করে আসে)।

  • ট্রিগারগুলিতে কার্সারগুলি প্রত্যাশিত তুলনায় বেশি লকিং ধরেছিল (এমনকি স্থির, ফরওয়ার্ড_ইনালি)। সেগুলি মুছে ফেলা দেখে মনে হচ্ছে যে আমরা লকগুলি SEND CONVERSATION এ দেখি তা প্রকৃতির আরও ক্ষণস্থায়ী (বা কমপক্ষে আমরা যত বার দেখি অনেক কম)।

  • আমরা মূলত পাশাপাশি দুটি সমাধান চালিয়ে যাচ্ছিলাম (সার্ভিস ব্রোকার সলিউশন ব্যাকএন্ড (উত্পাদন লোডের অধীনে পরীক্ষার জন্য)) এবং বর্তমান সমাধান (ভয়ানক কোয়েরি যা বহু টেবিলকে বিস্তৃত করে)।

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

আবার আপনাকে ধন্যবাদ.


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