আমার সংস্থাটি এমন একটি অ্যাপ্লিকেশন ব্যবহার করে যাতে বেশ বড় পারফরম্যান্স সমস্যা রয়েছে। ডাটাবেস নিজেই বেশ কয়েকটি সমস্যা রয়েছে যার মাধ্যমে আমি কাজ করার প্রক্রিয়া করছি, তবে অনেকগুলি সমস্যা খাঁটি প্রয়োগ সম্পর্কিত।
আমার তদন্তে আমি দেখতে পেলাম যে এসকিউএল সার্ভার ডাটাবেসটিতে লক্ষ লক্ষ কোয়েরি রয়েছে যা খালি সারণীগুলি অনুসন্ধান করে। আমাদের প্রায় 300 টি খালি টেবিল রয়েছে এবং এর মধ্যে কয়েকটি টেবিল প্রতি মিনিটে 100-200 বার অনুসন্ধান করা হয়। টেবিলগুলির আমাদের ব্যবসায়ের ক্ষেত্রের সাথে কোনও সম্পর্ক নেই এবং মূলত মূল প্রয়োগের অংশ যা বিক্রেতাদের সরিয়ে দেয়নি যখন তারা আমার সংস্থার দ্বারা আমাদের জন্য একটি সফ্টওয়্যার সমাধান উত্পাদন করার জন্য চুক্তিবদ্ধ হয়েছিল।
আমাদের সন্দেহ হয় যে আমাদের অ্যাপ্লিকেশন ত্রুটি লগটি এই সমস্যা সম্পর্কিত ত্রুটিগুলি নিয়ে প্লাবিত হচ্ছে, এই বিক্রেতাটি আমাদের আশ্বাস দেয় যে অ্যাপ্লিকেশন বা ডাটাবেস সার্ভারের কোনওটির জন্য কোনও কার্যকারিতা বা স্থায়িত্বের প্রভাব নেই। ত্রুটি লগটি এমন পর্যায়ে প্লাবিত হয় যে আমরা 2 মিনিটের বেশি ত্রুটিগুলি ডায়াগনসিস করতে দেখতে পাই না।
এই প্রশ্নের প্রকৃত ব্যয় স্পষ্টতই সিপিইউ চক্র ইত্যাদির তুলনায় কম হতে চলেছে তবে এসকিউএল সার্ভার এবং অ্যাপ্লিকেশনটিতে এর প্রভাব কী হবে তা কি কেউ পরামর্শ দিতে পারে? আমি সন্দেহ করব যে একটি অনুরোধ প্রেরণ, এটি নিশ্চিতকরণ, এটি প্রক্রিয়াজাতকরণ, এটি ফিরিয়ে দেওয়া এবং অ্যাপ্লিকেশনটির মাধ্যমে প্রাপ্তি স্বীকার করার প্রকৃত যান্ত্রিকগুলি নিজেই কার্য সম্পাদনে প্রভাব ফেলবে।
আমরা অ্যাপ্লিকেশনটির জন্য এসকিউএল সার্ভার 2008 আর 2, ওরাকল ওয়েবলোগিক 11 জি ব্যবহার করি।
@ ফিসবি- দীর্ঘ গল্পের সংক্ষিপ্ত, আমি কোয়েরিেক্সটেক্সটযুক্ত একটি টেবিল তৈরি করেছি যা অ্যাপ্লিকেশনটির ডাটাবেসে খালি টেবিলগুলিতে আঘাত করে, তারপরে এটি আমার জানা সমস্ত টেবিলের নাম খালি রয়েছে এবং এটি একটি দীর্ঘ দীর্ঘ তালিকা পেয়েছে। সর্বোচ্চ হিটটি আপটাইমের 30 দিনের মধ্যে ২. 2. মিলিয়ন মৃত্যুদন্ড কার্যকর করা হয়েছিল, মনে রাখবেন অ্যাপটি সাধারণত সকাল -6-০০ টা থেকে সন্ধ্যা -6- .০ পর্যন্ত ব্যবহার হয় তাই এই সংখ্যাগুলি অপারেটিং সময়গুলিতে আরও বেশি কেন্দ্রীভূত হয়। একাধিক সারণী, একাধিক ক্যোয়ারী, সম্ভবত কিছু সম্পর্কিত সম্পর্কিত যোগ দেয়, কিছু না। শীর্ষ হিট (সেই সময়ে ২.7 মিলিয়ন) একক ফাঁকা টেবিল থেকে একটি সহজ নির্বাচন ছিল যেখানে ক্লজ, কোনও যোগ দেয় না। আমি আশা করব যে খালি টেবিলগুলিতে যোগদানের সাথে আরও বড় প্রশ্নগুলি লিঙ্কযুক্ত টেবিলগুলিতে আপডেটগুলি অন্তর্ভুক্ত করতে পারে তবে আমি এটি যাচাই করব এবং এই প্রশ্নটি ঠিক ততই আপডেট করব।
আপডেট: 1043 - 4622614 (2.5 মাসেরও বেশি) এর মধ্যে একটি নির্বাহের গণনা সহ 1000 টি ক্যোয়ারী রয়েছে। ক্যাশেড পরিকল্পনাটি কখন থেকে উত্পন্ন হয়েছে তা জানতে আমাকে আরও খনন করতে হবে। এটি কেবল আপনাকে প্রশ্নের পরিমাণ সম্পর্কে ধারণা দেওয়ার জন্য। বেশিরভাগই 20 টিরও বেশি যোগদানের সাথে যুক্তিসঙ্গতভাবে জটিল।
@ শ্রুতজকি- হ্যাঁ আমি বিশ্বাস করি যে পরিকল্পনাটি সংকলিত হওয়ার সাথে সাথে সম্পর্কিত একটি তারিখ কলাম রয়েছে যাতে এটি আগ্রহী হবে, তাই আমি এটি পরীক্ষা করে দেখব। আমি ভাবছি যখন এসকিউএল সার্ভার কোনও ভিএমওয়্যার ক্লাস্টারে বসে থাকে তখন থ্রেড সীমাগুলি কি কোনও কারণ হয়ে উঠবে? শীঘ্রই একটি উত্সর্গীকৃত ডেল পিই 730xD কৃতজ্ঞতার সাথে।
@ ফ্রিসবি - দেরিতে সাড়া পাওয়ার জন্য দুঃখিত। আপনার প্রস্তাব অনুসারে, আমি এসকিউএলকিউরিস্ট্রেস (তাই প্রকৃতপক্ষে ২৪০,০০০ পুনরাবৃত্তি) ব্যবহার করে ২৪ টি থ্রেডের উপরে খালি টেবিল থেকে 10,000 বার একটি নির্বাচন চালিয়েছি এবং তাত্ক্ষণিকভাবে 10,000 ব্যাচের অনুরোধ / সেকেন্ডকে হিট করেছি। তারপরে আমি 24 থ্রেডের চেয়ে 1000 গুণ কমে এসেছি এবং কেবল 4,000 ব্যাচের অনুরোধ / সেকেন্ডের নিচে হিট করেছি। আমি কেবল মাত্র 12 টি থ্রেডের (10,000 টি মোট পুনরাবৃত্তির জন্য) 10,000 বারবার চেষ্টা করেছি এবং এটি একটি টেকসই 6,505 ব্যাচ / সেকেন্ড উত্পাদন করেছে produced সিপিইউতে প্রভাবটি লক্ষণীয় ছিল, প্রতিটি পরীক্ষার সময় মোট সিপিইউ ব্যবহারের প্রায় 5-10% ছিল। নেটওয়ার্কের অপেক্ষাগুলি ছিল নগণ্য (আমার ওয়ার্কস্টেশনে ক্লায়েন্টের সাথে 3 মিমের মতো) তবে সিপিইউয়ের প্রভাবটি নিশ্চিতভাবেই ছিল, যা আমি উদ্বিগ্ন, বেশ নির্ধারিত। এটি সিপিইউর ব্যবহার এবং অযথা ডাটাবেস ফাইল আইও-তে কিছুটা ফুটে উঠেছে বলে মনে হচ্ছে। মোট ফাঁসি / দ্বিতীয়টি কেবলমাত্র 3000 এর নিচে কাজ করে, যা উত্পাদনের চেয়ে বেশি, তবে আমি এই জাতীয় কয়েক ডজন প্রশ্নের মধ্যে কেবল একটির পরীক্ষা করছি। খালি টেবিলগুলিতে প্রতি মিনিটে 300-4000 বারের হারে শত শত ক্যোয়ারির নিখুঁত প্রভাব অতএব সিপিইউয়ের সময় আসার সময় তা উপেক্ষণীয় হবে না। ডুয়াল ফ্ল্যাশ অ্যারে এবং 256 জিবি র্যাম, 12 টি আধুনিক কোর সহ অলস PE 730xD এর বিপরীতে সমস্ত পরীক্ষা করা হয়েছে।

@ শ্রুতজকি- ভাল চিন্তাভাবনা। এসকিউএলকিউরিস্ট্রেস ডিফল্টরূপে সংযোগ পুলিং ব্যবহার করে বলে মনে হচ্ছে তবে যাইহোক, আমার একটি চেহারা ছিল এবং হ্যাঁ, সংযোগ পুলিংয়ের জন্য বাক্সটি চেক করা আছে বলে মনে হয়েছে। আপডেট অনুসরণ করুন
@ শ্রুতজকি- সংযোগ পুলিং অ্যাপ্লিকেশনটিতে স্পষ্টতই সক্ষম নয় - বা যদি হয় তবে এটি কাজ করছে না। আমি একজন প্রোফাইলার ট্রেস করেছি এবং দেখতে পেয়েছি যে সংযোগগুলির অডিট লগইন ইভেন্টগুলির জন্য ইভেন্টসব্লক্লাস "1 - ননপুল্ড" রয়েছে।
পুনরায়: সংযোগ পুলিং- ওয়েবলোগিকগুলি পরীক্ষা করে এবং সংযোগ পুলিং সক্ষম করে। লাইভের বিরুদ্ধে আরও ট্রেস দৌড়ান এবং পুলিংয়ের চিহ্নগুলি সঠিকভাবে / মোটেও ঘটে না:

জনবহুল টেবিলের সাথে আমি যুক্ত না হয়ে একটি একক ক্যোয়ারী চালানোর সময় এখানে দেখতে দেখতে কেমন লাগে; ব্যতিক্রমগুলি পড়েছে "এসকিউএল সার্ভারের সাথে সংযোগ স্থাপনের সময় একটি নেটওয়ার্ক-সম্পর্কিত বা উদাহরণ-নির্দিষ্ট ত্রুটি ঘটেছে The সার্ভারটি পাওয়া যায় নি বা অ্যাক্সেসযোগ্য ছিল না। যাচাইকরণের নামটি সঠিক কিনা তা যাচাই করুন এবং দূরবর্তী সংযোগের অনুমতি দেওয়ার জন্য এসকিউএল সার্ভারটি কনফিগার করা হয়েছে। (সরবরাহকারী: নামযুক্ত পাইপ সরবরাহকারী, ত্রুটি: 40 - এসকিউএল সার্ভারের সাথে কোনও সংযোগ খুলতে পারেনি) "ব্যাচের অনুরোধের কাউন্টারটি নোট করুন। ব্যতিক্রমগুলি সফল পিংয়ের প্রতিক্রিয়ায় ফলাফল উত্পন্ন করার সময় সার্ভারকে পিং করা।
আপডেট - টানা দুটি পরীক্ষামূলক রান, একই ওয়ার্কলোড (এমপিটিবেল থেকে * নির্বাচন করুন), পুলিং সক্ষম / সক্ষম নয়। কিছুটা বেশি সিপিইউ ব্যবহার এবং প্রচুর ব্যর্থতা এবং 500 ব্যাচের অনুরোধ / সেকেন্ডের বেশি হয় না। পরীক্ষাগুলিতে 10,000 টি ব্যাচ / সেকেন্ড এবং পুলিং অন নিয়ে কোনও ব্যর্থতা দেখা যায় এবং প্রায় 400 ব্যাচ / সেকেন্ডের পরে পুলিং অক্ষম হওয়ার কারণে প্রচুর ব্যর্থতা হয়। আমি ভাবছি যদি এই ব্যর্থতা সংযোগ প্রাপ্যতার অভাবের সাথে সম্পর্কিত হয়?
@ শ্রুতজকি- sys.dm_exec_connifications থেকে গণনা (*) নির্বাচন করুন;
পুলিং সক্ষম হয়েছে: লোড পরীক্ষা বন্ধ হওয়ার পরেও ধারাবাহিকভাবে 37
পুলিং অক্ষম করা হয়েছে: এসকিউএলকিউরি স্ট্রেসে ব্যতিক্রম
ঘটছে কিনা তার উপর নির্ভর করে ১১-৩7 অর্থাত্: যখন সেই
ব্যাটগুলি ব্যাচ / সেকেন্ড গ্রাফে উপস্থিত হয় , তখন ব্যতিক্রমগুলি এসকিউএলকিউ স্ট্রেসে ঘটে এবং
সংযোগের সংখ্যা ১১ এ চলে যায়, তারপরে ধীরে ধীরে ৩ 37 এ ফিরে আসে যখন ব্যাচগুলি শীর্ষে শুরু হয় এবং ব্যতিক্রমগুলি ঘটে না। খুব, খুব আকর্ষণীয়।
পরীক্ষার / লাইভ উভয় ক্ষেত্রেই সর্বোচ্চ সংযোগ 0 এর ডিফল্ট সেট করা থাকে।
অ্যাপ্লিকেশন লগগুলি পরীক্ষা করেছে এবং সংযোগের সমস্যাগুলি খুঁজে পেতে পারে নি, তবে বিপুল সংখ্যক ত্রুটি ও আকারের কারণে লগইন করার জন্য কয়েক মিনিটের জন্যই পাওয়া যায় যেমন: প্রচুর স্ট্যাক ট্রেসের ত্রুটি। অ্যাপ্লিকেশন সহায়তার একজন সহকর্মী পরামর্শ দিয়েছেন যে সংযোগের সাথে সম্পর্কিত যথেষ্ট পরিমাণে এইচটিটিপি ত্রুটি ঘটে। এটি এর উপর ভিত্তি করে মনে হবে যে কোনও কারণে অ্যাপ্লিকেশনটি সঠিকভাবে সংযোগগুলি পুলিং করছে না এবং ফলস্বরূপ, সার্ভারটি বারবার সংযোগের বাইরে চলেছে। আমি আরও বেশি অ্যাপ লগগুলিতে সন্ধান করব। আমি ভাবছি এসকিউএল সার্ভার পাশ থেকে উত্পাদনে এটি ঘটানোর কোনও উপায় আছে কি?
@ শ্রুতজকি- আপনাকে ধন্যবাদ আমি আগামীকাল ওয়েবলোগিক কনফিগারেশনে যাব এবং আপডেট করব। আমি নিছক 37 সংযোগ সম্পর্কে ভাবছিলাম - যদি এসকিউএলকিউ স্ট্রেস 10,000 টি পুনরাবৃত্তিতে 120 টি থ্রেড করছে = 120,000 সিলেক্ট স্টেটমেন্টগুলি নন-পুলেড করে না, তবে এর অর্থ এই নয় যে প্রতিটি নির্বাচিত স্কয়ার উদাহরণের সাথে একটি স্বতন্ত্র সংযোগ তৈরি করবে?
@ শ্রুতজকি- ওয়েবলোগিকগুলি পুল সংযোগগুলিতে কনফিগার করা হয়েছে, সুতরাং এটি ঠিকঠাক কাজ করা উচিত। সংযোগ পুলিং 4 টি লোড-ভারসাম্য ওয়েবলোগিকগুলির প্রত্যেকটিতে এইভাবে কনফিগার করা হয়েছে:
- প্রাথমিক ক্ষমতা: 10
- সর্বোচ্চ ক্ষমতা: 50
- সর্বনিম্ন ক্ষমতা: 5
আমি যখন খালি টেবিল ক্যোয়ারী থেকে নির্বাচনকে সম্পাদনকারী থ্রেডের সংখ্যা বাড়িয়ে তুলি, তখন সংযোগের সংখ্যা 47 এর আশেপাশে থাকে connection সংযোগ পুলিং নিষ্ক্রিয় হওয়ার সাথে সাথে আমি ধারাবাহিকভাবে একটি নিম্নতর সর্বোচ্চ ব্যাচের অনুরোধ / সেকেন্ড দেখতে পাই (10,000 থেকে প্রায় 400 অবধি)। প্রতিবার যা ঘটবে তা হ'ল এসকিউএলকিউয়ারি স্ট্রেসে 'ব্যতিক্রমগুলি' ব্যাচ / সেকেন্ডের গর্তে যাওয়ার খুব শীঘ্রই ঘটে। এটি সংযোগের সাথে সম্পর্কিত তবে আমি কেন বুঝতে পারছি না কেন এটি ঘটছে। যখন কোনও পরীক্ষা চলছে না, # সংযোগগুলি প্রায় 12-এ চলে যায়।
সংযোগ পুলিং নিষ্ক্রিয় হওয়ার সাথে, ব্যতিক্রমগুলি কেন ঘটে তা বুঝতে আমার সমস্যা হচ্ছে, তবে সম্ভবত এটি অ্যাডাম মাচানিকের জন্য সম্পূর্ণ অন্যান্য স্ট্যাক এক্সচেঞ্জ প্রশ্ন / প্রশ্ন?
@ শ্রুতজকি আমি অবাক হয়েছি যে এসকিউএল সার্ভারের সংযোগ শেষ না হওয়া সত্ত্বেও পুলিং সক্ষম ছাড়া ব্যতিক্রমগুলি কেন ঘটবে?
SELECT COUNT(*) FROM sys.dm_exec_connections;করার মধ্যে মানটি খুব বেশি আলাদা কিনা তা দেখার জন্য একটি চালান বা চালান possible না. এই ত্রুটিগুলির ভিত্তিতে, আমি মনে করি পুলিং অক্ষম করা হলে আরও অনেক সংযোগ থাকবে।
Pooling=falseনাকি Max Pool Size?

