সমান্তরাল ক্যোয়ারী এক্সিকিউশন ত্রুটি বুঝতে হবে


18

আজ আমরা আমাদের প্রযোজনা স্কেল সার্ভারে পারফরম্যান্সের অবক্ষয় অনুভব করেছি। এই ঘটনার সময়টি ভুগছে আমরা বেশ কয়েকটি "The query processor could not start the necessary thread resources for parallel query execution"ত্রুটি লগ করেছি । আমি যে পড়াটি করেছি তা বোঝায় যে একটি জটিল কোয়েরি কার্যকর করার সময় এটির কতটি সিপিইউ ব্যবহার করা উচিত। যাইহোক আমি যখন আউটেজ চলাকালীন চেক করি তখন আমাদের CPU Utilization was only at 7%। এর বাইরে এমন কিছু আছে যা আমি উল্লেখ করতে পারি নি? এটি কি পারফরম্যান্স অবক্ষয়ের সম্ভবত অপরাধী বা আমি কোনও লাল রঙের উত্তোলককে তাড়া করছি?

এর জন্য আমার এসপি_কিগিচার মানগুলি নিম্নরূপ:

name                                minimum maximum config_value run_value
cost threshold for parallelism      0       32767   5            5

মান কি max degree of parallelismকনফিগার এবং কতগুলি প্রসেসর আপনি ফলে NUMA কনফিগারেশন সহ সার্ভার বর্তমানে রয়েছে? প্রসেসরের সংখ্যা এবং NUMA কনফিগারেশনটি সন্ধান করতে আপনি সাইনটার্নালগুলিcoreinfo.exe থেকে ব্যবহার করতে পারেন ।
কিন শাহ

সমান্তরালতার সর্বোচ্চ ডিগ্রি 0
লম্পি

এটি ব্যাখ্যা করে যে কেন এসকিএল সার্ভার থ্রেড সংস্থানগুলির জন্য ক্ষুধার্ত হবে।
কিন শাহ

@ কিনুন আমার কাছে ১১ টি প্রসেসর রয়েছে (০ - ১১) তারপর দুটি লজিকাল প্রসেসর NUMA নোডের মানচিত্রে: নোড 0, নোড 1
লম্পি

@ কিনুন আমি ভেবেছিলাম যে 0 টি এসকিউএল সার্ভার এটি ব্যবহার করতে হবে যে কতটি থ্রেড ব্যবহার করা উচিত managed এর ফলে থ্রেড সংস্থানগুলির জন্য অনাহারে থাকা এসকিউএল সার্ভারের ফলাফল হবে কেন?
লম্পি

উত্তর:


19

কয়েক মাস আগে, আমি একই পরিস্থিতির মুখোমুখি হয়েছিলাম যেখানে ম্যাক্সডপ সেটিংস ডিফল্ট ছিল এবং রান আউট ক্যোয়ারী সমস্ত কর্মী থ্রেডকে ক্লান্ত করে দিয়েছিল।

রেমাস যেহেতু ইঙ্গিত করেছে এটিকে বলা হয় শ্রমিক থ্রেড অনাহার

যখন এই শর্তটি ঘটে তখন আপনার সার্ভারে একটি মেমরি ডাম্প তৈরি হবে।

আপনি যদি ২০০RR2 + SP1 তে থাকেন এবং তারপরেও তবে sys.dm_server_memory_dumpsআপনাকে ডাম্প ফাইলের অবস্থানও দেওয়া হবে।

এখন আবার সমস্যা:

প্রতি NUMA নোডের জন্য 1 টি শিডিউল মনিটর থ্রেড রয়েছে এবং যেহেতু আপনার কাছে 2 টি এ্যাসএল নোড রয়েছে তাই 2 টি শিডিয়ুল মনিটর থ্রেড থাকবে যা নির্দিষ্ট 60০ সেকেন্ডে সমস্ত নির্দিষ্ট সময়সীমার স্বাস্থ্য পরীক্ষার জন্য দায়ী সেই নির্দিষ্ট NUMA নোডের জন্য নিশ্চিত যে শিডিয়ুল আটকে আছে বা না.

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

দৌড়াতে যাওয়া ক্যোয়ারী বা বিস্তৃত সমান্তরালতার কারণে শ্রমিকদের থ্রেডগুলি ক্লান্ত হয়ে ওঠার শর্ত দেখা দেয় যেহেতু সমস্ত থ্রেডগুলি সেই একক রানওয়ে ক্যোয়ারী বা অত্যধিক দীর্ঘায়িত অবরুদ্ধ দ্বারা দখল করা হয় এবং আপত্তিজনক প্রক্রিয়াটি মারা না গেলে কোনও কাজ করা যায় না unless

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

শ্রমিকদের থ্রেডগুলি ক্লান্তির দিকে নিয়ে যেতে পারে এমন অনেকগুলি কারণ রয়েছে:

  • এসকিউএল সার্ভারের কর্মী থ্রেডগুলি শেষ হয়ে যাওয়ার কারণে দীর্ঘ দীর্ঘ ব্লকিং চেইনগুলি
  • বিস্তৃত সমান্তরালতা কর্মীদের থ্রেডগুলি ক্লান্তির দিকে নিয়ে যায়
  • স্পিনলকস, ল্যাচস - যে কোনও ধরণের "লক" এর জন্য ব্যাপক অপেক্ষা করুন। একটি অনাথ স্পিনলক একটি উদাহরণ।

এখানে আমার উত্তরের উল্লেখ করুন যা আপনাকে দেখায় যে আপনি কীভাবে আপনার সার্ভারের উদাহরণের জন্য ম্যাক্সডপ মান গণনা করতে পারেন।

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


এমন কি এমন কিছু আছে যা রানওয়ে ক্যোয়ারির পরিচায়ক হবে? আমি যে ঝুঁকির মধ্যে রয়েছে এমন প্রশ্নগুলি সনাক্ত করার চেষ্টা করার জন্য যা কিছু ব্যবহার করতে পারি?
লম্পি

এটি কোথায় ব্যথা পেয়েছে তা জানতে অপেক্ষা পরিসংখ্যান সম্পর্কিত তথ্যের দিকে নজর দেওয়ার পরামর্শ দিন । এছাড়াও, -> কারেন্ট_টাস্কস_কাউন্ট, চালানোযোগ্য_টাস্কস_কাউন্ট, কারেন্ট ওয়ার্কার্স_কাউন্ট এবং অ্যাক্টিভ_ ওয়ার্কার্স_কাউন্ট পাশাপাশি দেখুন এবংsys.dm_os_schedulerssys.dm_os_wait_statssys.dm_os_waiting_tasks
কিন শাহ

10

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

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


সর্বাধিক কর্মী থ্রেড ন্যূনতম = 128, সর্বোচ্চ = 32767, কনফিগার = 0, রান = 0
লম্পি

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