এসকিএল সার্ভার থেকে হাই ডিস্ক I / O বা উচ্চ ডিস্কের আই / হে স্কেল সার্ভারটি ধীর করে দিচ্ছে?


18

আমি একটি ডিবিএ এবং আমাদের এসকিউএল সার্ভারের পারফরম্যান্স সংক্রান্ত সমস্যা সম্পর্কে কয়েকজন হার্ডওয়্যার ছেলের সাথে তর্ক করছি। সাধারণত সবকিছু ঠিকঠাক হয়, তবে গত কয়েক সপ্তাহ ধরে আমাদের স্কিল সার্ভারে বিশাল ল্যাগ স্পাইক রয়েছে having এটি স্পষ্ট যে এসকিউএল সার্ভার ডিস্ক আই / ও-তে অপেক্ষা করছে। তবে আমি জানাতেই থাকি যে এটি এসকিউএল সার্ভারটি অস্বাভাবিকভাবে উচ্চ আই / ও জন্য জিজ্ঞাসা করছে is কোনটি নয়। আমি যা চালিয়ে যাচ্ছি তা থেকে দেখতে পাচ্ছি যে স্বাভাবিকের বাইরে কিছুই নেই, এবং সমস্ত ডিবিএ এই বিষয়টির দিকে খেয়াল রাখে যে অবরুদ্ধকরণ এবং এর ফলে কী অনর্থক। উদাহরণস্বরূপ আমরা যে ব্যাক আপটি দেখতে পাচ্ছি সেটি হল এএসপিস্টেট ডাটাবেসের অপারেশন, যা আমরা ওয়েব সার্ভারগুলিতে এএসপি সেশন স্টেট পরিচালনা করতে ব্যবহার করি। এই ক্রিয়াকলাপগুলি সাধারণত স্প_জো 2 সক্রিয় ফলাফলগুলিতে কখনও দেখা যায় না কারণ এগুলি এত তাড়াতাড়ি ঘটে। ডাটাবেসটি সহজ পুনরুদ্ধার মোডে এবং লগিং মিমিনাল। তবে এই ল্যাগ স্পাইক চলাকালীন আমরা দেখতে পাব অনেকগুলি নির্বাচন করতে এবং আপডেট করা অপারেশনগুলিতে ডাটাবেস অবরুদ্ধ বা অপেক্ষায় রয়েছে। আমি নিশ্চিত যে যা চলছে তা হ'ল যে কেউ বা কিছু কাজ এমন কিছু চলছে যা সেই ডেটাবেস লগ এবং ডেটা ফাইলের জন্য ব্যবহৃত রেইড অ্যারেগুলিতে ভারী ডিস্ক ব্যবহারের কারণ হয়ে উঠছে। সমস্যাটি এটি প্রমাণ করছে, যেহেতু কেউই মানতে চায় না যে তারা এমন কিছু করছে যা আমাদের ওয়েবসাইটকে হত্যা করছে।

আমার প্রশ্নটি হল পারফরম্যান্স কাউন্টারগুলি বা আমি যে কোনও লগইন করতে পারি যা এসকিউএল সার্ভারটি আই / ও-তে অপেক্ষা করছে তা দেখাতে সহায়তা করবে, তবে এর কারণ নয় যে এটি সাধারণভাবে বেশি চেয়েছে, পরিবর্তে ডিস্কটি বর্ধিতভাবে এসকিউএল সার্ভারের অনুরোধগুলির প্রতিক্রিয়া জানাতে ব্যস্ত হয়ে পড়েছে যত তাড়াতাড়ি এটি সাধারণত হবে?


3
নেটওয়ার্ক আই / ও আপনি আসলে কী অপেক্ষার স্থিতিটি দেখছেন? অর্থাত্, আপনি একটি সান ব্যবহার করছেন?
এরিক হিগিংস

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

এটি একটি নেটপ্প অ্যারেটি কিউলিক ফাইবার এইচবিএর সাথে স্কেল সার্ভারের সাথে সংযুক্ত।
এজি

আমি জানি এটি তুলনামূলকভাবে পুরানো প্রশ্ন, এবং এটি সরাসরি আপনার সমস্যা সমাধান করবে না ... তবে আমরা সেশন স্টেটের জন্য এস্পনেট_স্টেট.এক্সে স্যুইচ করেছি এবং আমাদের এসকিউএল সার্ভারের একটি দুর্দান্ত বোঝা দেখেছি। এটি ভাল নথিভুক্ত নয় তবে সেটআপ করা বেশ সহজ।
ম্যাটজিওয়াগনার

সুতরাং আপনি / ডিবিএ কী করে শেষ করেছেন এবং সমস্যাটি কী ছিল?
মুকুস

উত্তর:


19

নিম্নলিখিত সুগন্ধি কাউন্টারে একবার দেখুন:

এসকিউএল সার্ভার একটি উচ্চ সংখ্যক আইও অনুরোধের ড্রাইভিং একটি উচ্চ সংখ্যার স্ক্যান, পৃষ্ঠাগুলি এবং পৃষ্ঠায় পঠন বৃদ্ধি এবং উচ্চ পৃষ্ঠার আইও ল্যাচ অপেক্ষা করে সংশ্লেষিত হবে। sys.dm_exec_query_statsউচ্চ শারীরিক পাঠ্য গণনা সহ এন্ট্রিগুলির জন্য একবার দেখার চেষ্টা করা উপযুক্ত । তারা দ্রুত অপরাধীকে চিহ্নিত করতে পারে।

সাধারণভাবে সমস্যাটির সমস্যা সমাধানের সমস্যা হিসাবে সমস্যাটির কাছে আসা, ওয়েটস এবং কুইজের মতো পদ্ধতি অনুসরণ করা সঠিক পন্থা। আপনি ডিবিএ সঠিক কাজ করছেন বলে মনে হচ্ছে যাতে আপনার তাঁর কথা শোনা উচিত।


আমার ডিবিএর সমস্যা নেই, তিনি যে আমি কাজ করেছি তার মধ্যে অন্যতম সেরা ডিবিএ। এবং তিনি আমাকে উচ্চ ব্লক হওয়া সঞ্চিত প্রক্রিয়াগুলির একটি তালিকা দিয়েছেন। তবে যেহেতু আমি প্রচুর বাধা প্রদানের কারণগুলির মধ্যে একটি উল্লেখ করেছি তা হ'ল "টেম্পআপডেট স্টেটআইটেমলং" যা এইচটি এসকিউএল সেশন স্টেট স্টোর দ্বারা ব্যবহৃত একটি প্রোক। এটি একটি এমএস প্রকল্প, এবং এটি কেবলমাত্র সেশনআইডি দ্বারা একটি টেবিল আপডেট করে যা টেবিলে সূচকযুক্ত মূল কী। এছাড়াও বেশিরভাগ ক্ষেত্রে এই টেবিলটিতে 2000-3000 রেকর্ড রয়েছে, সুতরাং আপডেটগুলি সত্যই কোনও সময় নেয় না take
এজি

এই শুরু করার একটি ভাল জায়গা। আমরা এখনও এসকিউএল সার্ভার 2000 চালিয়ে যাচ্ছি, আমরা আপগ্রেড করার প্রক্রিয়াধীন রয়েছি তবে আরও কয়েক মাস এটি হবে না, তাই আমার কাছে PAge IO Latch দেখার অপেক্ষা নেই। আবার ধন্যবাদ.
এজি

নোট করুন যে প্রতি-সে-কে ব্লক করা উচ্চ আইও বোঝায় না। এটি লক যুক্তিযুক্ত হতে পারে এবং এটি মাপের বিষয়টি বিবেচনা করে টেবিলে প্রভাব ফেলবে, বিশেষত যদি অপ্টিমাইজার কোনও টেবিল স্ক্যান ভিত্তিক পরিকল্পনা চয়ন করে।
রিমাস রুসানু

এবং এর জন্য প্রক্রিয়াটি পরীক্ষা করে IO Data Bytes/secদেখুন এবং দেখুন যে অন্য কোনও প্রক্রিয়া ডিস্কটি ট্র্যাশ করছে।
রিমাস রুসানু

12

ব্যবহারের গ্লেন বেরি এটি আরম্ভ করা ডায়াগনস্টিক প্রশ্নের ও অ্যাডাম Machanic এর SP_Whoisactive সত্যিই ঘটছে কি খুঁজে বের করতে।

প্রথমে দেখুন এই কোয়েরিটি চালিয়ে কোন ডাটাবেস ফাইলগুলির মধ্যে সবচেয়ে বেশি IO বাধা রয়েছে (গ্লেন বেরির ক্যোয়ারী)

SELECT  DB_NAME(fs.database_id) AS [Database Name] ,
        mf.physical_name ,
        io_stall_read_ms ,
        num_of_reads ,
        CAST(io_stall_read_ms / ( 1.0 + num_of_reads ) AS NUMERIC(10, 1)) AS [avg_read_stall_ms] ,
        io_stall_write_ms ,
        num_of_writes ,
        CAST(io_stall_write_ms / ( 1.0 + num_of_writes ) AS NUMERIC(10, 1)) AS [avg_write_stall_ms] ,
        io_stall_read_ms + io_stall_write_ms AS [io_stalls] ,
        num_of_reads + num_of_writes AS [total_io] ,
        CAST(( io_stall_read_ms + io_stall_write_ms ) / ( 1.0 + num_of_reads
                                                          + num_of_writes ) AS NUMERIC(10,
                                                              1)) AS [avg_io_stall_ms]
FROM    sys.dm_io_virtual_file_stats(NULL, NULL) AS fs
        INNER JOIN sys.master_files AS mf WITH ( NOLOCK ) ON fs.database_id = mf.database_id
                                                             AND fs.[file_id] = mf.[file_id]
ORDER BY avg_io_stall_ms DESC
OPTION  ( RECOMPILE );

তারপরে আপনার সার্ভারটি অপেক্ষা করা শীর্ষ দশ ইভেন্ট দেখার জন্য এই কোয়েরিটি চালান ( জোনাথন কেহায়িয়াসের ক্যোয়ারী )। আপনি গ্লেন বেরি ডায়াগোনস্টিক কোয়েরি থেকেও অনুরূপ ক্যোয়ারী পাবেন।

SELECT TOP 10
        wait_type ,
        max_wait_time_ms wait_time_ms ,
        signal_wait_time_ms ,
        wait_time_ms - signal_wait_time_ms AS resource_wait_time_ms ,
        100.0 * wait_time_ms / SUM(wait_time_ms) OVER ( ) AS percent_total_waits ,
        100.0 * signal_wait_time_ms / SUM(signal_wait_time_ms) OVER ( ) AS percent_total_signal_waits ,
        100.0 * ( wait_time_ms - signal_wait_time_ms )
        / SUM(wait_time_ms) OVER ( ) AS percent_total_resource_waits
FROM    sys.dm_os_wait_stats
WHERE   wait_time_ms > 0 -- remove zero wait_time
        AND wait_type NOT IN -- filter out additional irrelevant waits
( 'SLEEP_TASK', 'BROKER_TASK_STOP', 'BROKER_TO_FLUSH', 'SQLTRACE_BUFFER_FLUSH',
  'CLR_AUTO_EVENT', 'CLR_MANUAL_EVENT', 'LAZYWRITER_SLEEP', 'SLEEP_SYSTEMTASK',
  'SLEEP_BPOOL_FLUSH', 'BROKER_EVENTHANDLER', 'XE_DISPATCHER_WAIT',
  'FT_IFTSHC_MUTEX', 'CHECKPOINT_QUEUE', 'FT_IFTS_SCHEDULER_IDLE_WAIT',
  'BROKER_TRANSMITTER', 'FT_IFTSHC_MUTEX', 'KSOURCE_WAKEUP',
  'LAZYWRITER_SLEEP', 'LOGMGR_QUEUE', 'ONDEMAND_TASK_QUEUE',
  'REQUEST_FOR_DEADLOCK_SEARCH', 'XE_TIMER_EVENT', 'BAD_PAGE_PROCESS',
  'DBMIRROR_EVENTS_QUEUE', 'BROKER_RECEIVE_WAITFOR',
  'PREEMPTIVE_OS_GETPROCADDRESS', 'PREEMPTIVE_OS_AUTHENTICATIONOPS', 'WAITFOR',
  'DISPATCHER_QUEUE_SEMAPHORE', 'XE_DISPATCHER_JOIN', 'RESOURCE_QUEUE' )
ORDER BY wait_time_ms DESC

আপনার কাছে এই তথ্যটি হাতে পাওয়ার পরে সমস্যাটি সমাধান করা আরও সহজ হবে।

বিটিডাব্লু আপনি এখানে সমস্যা সমাধানের জন্য কীভাবে sp_Woisactive ব্যবহার করবেন সে সম্পর্কে অনেকগুলি পোস্ট পেতে পারেন


1
আমি কেবল এই তালিকার চূড়ান্ত স্ক্রিপ্ট ব্যবহার করেছি - এটির কিক গাধা।
the_good_pony

1

"সমস্যাটি এটি প্রমাণ করছে", ঠিক বলেছেন। এসকিউএল সার্ভারটি একবার দেখুন : ডিস্ক I / O মিনিমাইজ করুন

এটি ডিএমভিকে অনুসরণ করার বিষয়ে কথা বলছে

sys.dm_io_virtual_file_stats
sys.dm_io_pending_io_requests

তথ্যসূত্র:

  1. এসকিউএল সার্ভারের মধ্যে আইও সাবসিস্টেমের বিলম্বগুলি কীভাবে পরীক্ষা করবেন
  2. গ্লেন বেরির এসকিউএল সার্ভার পারফরম্যান্স - sys.dm_io_pend_io_requests
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.