এসকিউএল সার্ভার 2012 বাফার পুলের বাইরে মেমরির খরচ


10

আমি এসকিউএল সার্ভার 2012 এসপি 2 এন্টারপ্রাইজ সংস্করণ সর্বাধিকের চেয়ে 20 ডলার বেশি মেমরি গ্রহনের উদাহরণ পেয়েছি। স্মৃতি সীমা। দৃষ্টান্তটি GB৫ জিবিতে সীমাবদ্ধ তবে নীচের ক্যোয়ারী থেকে ব্যবহৃত শারীরিক স্মৃতি 86 86 জিবি দেখায়

SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO

সার্ভার 2 টি NUMA নোড সহ শারীরিক। বাফার পুলের বাইরের কী কী স্মৃতি গ্রাস করছে তা আমি খুঁজে বের করতে পারি (আমি ধরে নিচ্ছি যে এটিই ঘটছে)?

এখানে ডিবিসিসি মেমোরিস্টাসের আউটপুট: -

ডিবিসিসি মেমরিস্ট্যাটাসের আউটপুট

এবং সেট মেমরি সীমা এখানে:

মেমরি সীমা স্ক্রিন শট

আগাম ধন্যবাদ.

আপডেট: - আমি হারুনের পরামর্শ অনুসারে ক্যোয়ারী চালিয়েছি

SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC

এখানে ফলাফল:

MemoryClerkOutput

পৃষ্ঠাগুলির SUM 60 গিগাবাইটে আসে

আপডেট 2: - ডিবিসিসি মেমোরিস্টাসের সম্পূর্ণ আউটপুট এখানে রয়েছে: - http://pastebin.com/nGn6kXEc

আপডেট 3: - এক্সেল ফাইলে শঙ্কির স্ক্রিপ্টগুলির আউটপুট এখানে: - http://jmp.sh/LKRlH4K

আপডেট 4: - এর আউটপুট এর স্ক্রিনশট:

SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO

ফিজিমেমইনউজ স্ক্রিনশট

সুতরাং এটি থেকে বোঝা যাচ্ছে যে এসকিউএল সার্ভার 65 জিবি সেট-এর বেশি ব্যবহার করছে।


এই ফলন কি? SELECT TOP (20) * FROM sys.dm_os_memory_clerks ORDER BY pages_kb DESC;?
অ্যারন বারট্র্যান্ড

হাই অ্যারন, জবাব দেওয়ার জন্য ধন্যবাদ আমি এখনই আউটপুট দিয়ে প্রশ্নটি আপডেট করব
dbafromthecold

উত্তর:


11

সর্বাধিক সার্ভার মেমরি বাফার পুল এবং সমস্ত পৃষ্ঠার আকার বরাদ্দ নিয়ন্ত্রণ করে , তবে এখনও সরাসরি উইন্ডোজ বরাদ্দ (লিঙ্কযুক্ত সার্ভার, এসপি_ওএ, এক্সপি), থ্রেড / থ্রেড স্ট্যাকের জন্য প্রয়োজনীয় মেমরি ইত্যাদির মতো জিনিসগুলি নিয়ন্ত্রণ করে না

আপনি সম্ভবত এটি NUMA এর চেয়ে বেশি হবে আশা করতে পারেন (যদিও আমি নিশ্চিত না যে 20 জিবি স্বাভাবিক আছে); মুল বক্তব্যটি হ'ল আপনি সর্বোচ্চ সার্ভারের মেমরিটি এসকিউএল সার্ভারের একটি উদাহরণ দ্বারা ব্যবহৃত মেমরিটিকে পুরোপুরি নিয়ন্ত্রণ করতে পারবেন না expect আপনি যদি পুরো উদাহরণটি (কেবল বাফার পুল, প্ল্যান ক্যাশে এবং সিএলআর নয়) 64৪ গিগাবাইটের বেশি ব্যবহার না করতে চান তবে আপনার সর্বাধিক সার্ভারের মেমোরিটিকে কিছুটা নীচে সেট করা উচিত।

এটি ট্র্যাক করার জন্য কিছু সম্ভাব্য ধারণা (আমি এমবিতে সমস্ত কিছু স্বাভাবিক করব):

  • পারফরম্যান্স কাউন্টার

    এখানে অত্যধিক বড় হিসাবে কোনও কিছু লাফিয়ে উঠছে কিনা তা দেখুন:

    SELECT counter_name, instance_name, mb = cntr_value/1024.0
      FROM sys.dm_os_performance_counters 
      WHERE (counter_name = N'Cursor memory usage' and instance_name <> N'_Total')
      OR (instance_name = N'' AND counter_name IN 
           (N'Connection Memory (KB)', N'Granted Workspace Memory (KB)', 
            N'Lock Memory (KB)', N'Optimizer Memory (KB)', N'Stolen Server Memory (KB)', 
            N'Log Pool Memory (KB)', N'Free Memory (KB)')
      ) ORDER BY mb DESC;
  • শীর্ষ 20 কেরানী

    আপনি ইতিমধ্যে এটি সম্পন্ন করেছেন, তবে সম্পূর্ণতার জন্য:

    SELECT TOP (21) [type] = COALESCE([type],'Total'), 
      mb = SUM(pages_kb/1024.0)
    FROM sys.dm_os_memory_clerks
    GROUP BY GROUPING SETS((type),())
    ORDER BY mb DESC;
  • থ্রেড স্ট্যাক আকার

    প্রথমে নিশ্চিত হয়ে নিন যে এটি শূন্য এবং কোনও কাস্টম নম্বর নয় (যদি এটি 0 না হয় তবে এটি কেন খুঁজে বের করুন এবং এটি ঠিক করুন):

    SELECT value_in_use
      FROM sys.configurations 
      WHERE name = N'max worker threads';

    তবে আপনি এটিও দেখতে পারেন যে থ্রেড স্ট্যাকগুলি ব্যবহার করে কত স্মৃতি গ্রহণ করা হচ্ছে:

    SELECT stack_size_in_bytes/1024.0/1024 
      FROM sys.dm_os_sys_info;
  • তৃতীয় পক্ষের মডিউলগুলি লোড হয়েছে

    SELECT base_address, description, name
      FROM sys.dm_os_loaded_modules 
      WHERE company NOT LIKE N'Microsoft%';
    
    -- you can probably trace down memory usage using the base_address
  • মেমরি সম্পর্কিত DMVs

    আপনি এই ডিএমভিগুলিতে সাধারণ দেখানোর বাইরেও কিছু খুঁজে পেতে সক্ষম হতে পারেন:

    SELECT * FROM sys.dm_os_sys_memory;
    SELECT * FROM sys.dm_os_memory_nodes WHERE memory_node_id <> 64;

এই নিবন্ধটি এসকিউএল সার্ভার ২০১২ এর আগে লেখা হয়েছিল, তাই কিছু কলামের নাম এবং গণনা সামঞ্জস্য করতে হতে পারে, তবে চেষ্টা করার জন্য কিছু অন্যান্য উপায়ও দিতে পারে:

সেই সাইটের অন্য একটি নিবন্ধেও কিছু ভাল ব্যাকগ্রাউন্ড:

বাইরের স্মৃতি ব্যবহার করে এমন ধরণের জিনিস সম্পর্কে কিছু ভাল তথ্য max server memory(তবে প্রকৃত ব্যবহার কীভাবে সংগ্রহ করবেন সে সম্পর্কে কোনও ভাল তথ্য নেই):


ধন্যবাদ হারুন, সার্ভারের প্রচুর স্মৃতি উপলব্ধ রয়েছে আমি কেবল এটি দেখতে চেয়েছিলাম যে 20 জিবি কী ব্যবহার করছে তা আমি জানতে পারি। ডাইরেক্ট উইন্ডোজ এলোকেশন বা থ্রেড স্ট্যাকগুলির মেমরির খরচ সনাক্ত করার কোনও উপায় আছে?
dbafromthecold

আমি রান স্ক্রিপ্টগুলি করেছি এবং চুরি সার্ভার মেমরি (কেবি) কাউন্টারটি 14 গিগাবাইটে। আমি আরও কোনও তথ্য পেতে পারি কিনা তা খনন করতে যাচ্ছি
dbafromthecold

চুরি সার্ভার মেমরিটি সমস্যা বলে মনে হচ্ছে না। এখনও খুঁজছেন
dbafromthecold

এখানে সমস্যাটি না থাকলেও, এটি উল্লেখ করার মতো বিষয় যে কলামস্টোর অবজেক্ট পুল (CACHESTORE_COLUMNSTOREOBJECTPOOL মেমরি ক্লার্ক ধরণ) পাশাপাশি বাফার পুলের বাইরে রয়েছে। নিকো
নিউজবাউয়ার

@ ব্লেডাকসকোবলার হ্যাঁ, ধন্যবাদ, স্মৃতিশক্তিও। সুযোগ
অ্যারোন বার্ট্র্যান্ড

3

এসকিউএল সার্ভার ২০১২ সালে সর্বোচ্চ সার্ভারের মেমরি কী নিয়ন্ত্রণ করে সে সম্পর্কে আমি বব ডর থেকে সংজ্ঞা পেয়েছি। আরও তথ্যের জন্য আপনি বই অনলাইনও পড়তে পারেন

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

থ্রেড স্ট্যাক, তৃতীয় পক্ষের ডিএলএল, লিঙ্কযুক্ত সার্ভার সরবরাহকারী যা মাইক্রোসফ্ট (মাইএসকিউএল.পোস্টগ্রিজ এসকিউএল ইত্যাদি) ব্যতীত অন্য কোনও এসএকিউএল সার্ভারের ঠিকানা স্পেসে লোড হওয়া কোনও ডিএলএল সর্বাধিক সার্ভার মেমরির বাইরে বরাদ্দ করা হয়েছে Mem এসকিউএল সার্ভার ২০১২-এ আইআইআরসি ব্যাকআপ অপারেশনটি এখনও বাফার পুলের বাইরে মেমরি বরাদ্দ করা হয়েছে।

আপনি কি অন্য আরডিবিএমএসকে জিজ্ঞাসা করার জন্য লিঙ্কযুক্ত সার্ভারটি ব্যবহার করছেন? একই উইন্ডোজ মেশিনে ইনস্টল করা অন্য কোনও সফ্টওয়্যার। আপনি কি কিছু ভাগ করা পোস্টে নিম্নলিখিত প্রশ্নের আউটপুট পোস্ট করতে পারেন?

select type,
sum(pages_kb)/1024 as [Memory utilized in MB],
sum(awe_allocated_kb)/1024 as [Memory allocated though Windows API]
 from sys.dm_os_memory_clerks
 group by type
 order by [Memory utilized in MB] desc
 Go
-------

 select (virtual_address_space_committed_kb/1024) as virtual_address_space_committed_MB,
 (locked_page_allocations_kb/1024) locked_page_allocations_MB,
 (pages_kb/1024) [memory allocated MB]
  from sys.dm_os_memory_nodes
  Go
-------
SELECT SUM (pages_in_bytes)/1024 as 'KB Used', type 
FROM sys.dm_os_memory_objects
GROUP BY type 
ORDER BY 'KB Used' DESC;
GO
--------
select name,
type,
sum(pages_kb)/1024 as [Mem MB],
sum(entries_count) as [Total Entry count] from sys.dm_os_memory_cache_counters
group by
type, name
order by [Mem MB] desc
Go
-----
select * from sys.dm_os_loaded_modules where company <> 'Microsoft Corporation'
go

আপনি DBCC MMEMORYSTATUSকিছু ভাগ করা স্থানে সম্পূর্ণ আউটপুট আপলোড করতে এবং লিঙ্কটি এখানে পোস্ট করতে পারেন। এটি কোন উপাদানটি মেমরি গ্রহণ করছে তা বুঝতে সহায়তা করবে

সম্পাদনা: ডিবিসিসি মেমরিস্ট্যাটাস আউটপুট অনুসারে আমি 2 টি NUMA নোড দেখতে পাচ্ছি এবং প্রতিটি নোডের দ্বারা ব্যবহৃত মেমরিটি প্রায়

Node 1 : VM Committed 33554380

Node 2: VM Committed  33554420

Total is approx 64 G. 

আবার আপনি যদি মেমোরিস্টেটরটিকে মেমোরিস্ট্যাটাস আউটপুটে দেখেন তবে এর

Memory Manager                           KB
---------------------------------------- -----------
VM Reserved                              260726964
VM Committed                             **67108820**

প্রতিশ্রুতিবদ্ধ ভিএম আসলে ভার্চুয়াল মেমরিটি এসকিউএল সার্ভার দ্বারা প্রতিশ্রুতিবদ্ধ এবং যেহেতু এই মেমরিটি প্রতিশ্রুতিবদ্ধ তা রয়েছে physical memory backing it। এটি আবার যা আমাকে ভাবায় যে এসকিউএল সার্ভার সর্বাধিক সার্ভার মেমরিতে সেট হিসাবে 65 জি ব্যবহার করছে

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

SELECT (physical_memory_in_use_kb/1024)/1024 AS [PhysicalMemInUseGB]
FROM sys.dm_os_process_memory;
GO

@DBAFromTheCold: এর প্রয়াত কিন্তু আপনি এখনও উত্তরের জন্য খুঁজছি হয়, হ্যাঁ আমি দিতে চাই যদি এক আরও চেষ্টা :) আপনি সম্পূর্ন ফলাফল পোস্ট করতে পারিselect * from sys.dm_so_process_memory
Shanky

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