سؤال

لدي الإنتاج "Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)" التي تظهر غريب العازلة الصفحة متوسط العمر (PLE) الأعراض.

أنا على التوالي هذا كل دقيقة على الخادم (تتبع هذه المسألة):

SELECT @ple = CAST([cntr_value] AS VARCHAR(20))
FROM sys.dm_os_performance_counters
WHERE [object_name] LIKE '%Manager%'
AND [counter_name] = 'Page life expectancy'

SELECT @usedBufferPages = CAST(COUNT(*) /128 AS VARCHAR(20)) 
FROM sys.dm_os_buffer_descriptors

DECLARE @StartDate VARCHAR(8) = Convert(VARCHAR(8), GETDATE(), 14)
RAISERROR ('%s. PLE at %s and Used Buffers at %s at %s ', 0, 
            1,@runCountString ,@ple, @usedBufferPages, @StartDate) WITH NOWAIT  

هذه هي بعض الأمثلة على الإخراج:

16. PLE at 858 and Used Buffers at 7290 at 09:51:42 
17. PLE at 918 and Used Buffers at 7342 at 09:52:42 
18. PLE at 978 and Used Buffers at 7408 at 09:53:43 
19. PLE at 1039 and Used Buffers at 7547 at 09:54:43 
20. PLE at 1100 and Used Buffers at 7697 at 09:55:44 
21. PLE at 1160 and Used Buffers at 7901 at 09:56:45 
22. PLE at 1221 and Used Buffers at 7961 at 09:57:46 
23. PLE at 1282 and Used Buffers at 8012 at 09:58:46 
24. PLE at 11 and Used Buffers at 313 at 09:59:46 
25. PLE at 31 and Used Buffers at 966 at 10:00:46 
26. PLE at 90 and Used Buffers at 1580 at 10:01:47 
27. PLE at 151 and Used Buffers at 3072 at 10:02:47 
28. PLE at 211 and Used Buffers at 3152 at 10:03:47 
29. PLE at 271 and Used Buffers at 3729 at 10:04:47  

في البند رقم 24 SQL Server تقارير PLE من 1,282 إلى 11.SQL Server التقارير أيضا إلى أن استخدام المخازن المؤقتة من 8,012 إلى 313.

أولا بحثت عن الفقراء تشغيل الاستعلامات, و وجدت الثابتة عدد قليل (أي تأثير على هذه المسألة).ولكن أنا لا أجد أي مشكلة الاستفسارات التي ترتبط الأوقات التي يجب PLE/العازلة القضايا.أيضا ، إذا كان فقيرا تشغيل الاستعلام ثم أعتقد أن مخازن سوف تكون كاملة من هذا الاستعلام بيانات فارغة لا/المفقودة/errored.

التالي اعتقدت أن الجهاز الظاهري كان الحصول على الذاكرة مقيدة عندما حدث هذا.ولكن لدي طلب نظام بلدي المشرف و أكد لي أن الذاكرة ليست ديناميكية أو يشارك بأي شكل من الأشكال.(ما يتم تعيينه ، فإنه يحصل في كل وقت.) كما أنني تشغيل هذا البرنامج النصي كل 10 دقائق عندما PLE التقارير أقل من 50:

  SELECT * FROM sys.dm_os_sys_memory

وأنه التقارير لنفس القيم عند PLE/مخازن عالية عندما تكون منخفضة.عن اكتمال هنا هو مثال على القيم قبل وبعد #24 أعلاه:

total_physical_memory_kb    available_physical_memory_kb    total_page_file_kb  available_page_file_kb  system_cache_kb kernel_paged_pool_kb    kernel_nonpaged_pool_kb   system_high_memory_signal_state   system_low_memory_signal_state   system_memory_state_desc
20970996                    4758672                         24378868            7929404                 4844160         686076                  182752                    1                                 0                                Available physical memory is high
20970996                    4743468                         24378868            7892632                 4845000         686580                  182688                    1                                 0                                Available physical memory is high

لقد دققت في نظام الدورة الصحة وأنه يظهر أي شيء ذات الصلة.(كل ما لديه هي الانتحال falures و مرات لا تتطابق مع مرات PLE/مخازن عرض القضايا.

لقد عرفت كيف وغالبا ما يحدث هذا, لا أستطيع رؤية نمط أو توصيله إلى أي وظائف أو الأنشطة المقررة.

هنا هو الرسم البياني الذي يظهر PLE ومخازن أكثر من 21 ساعة:

PLE and Buffers Over 21 Hours

لذلك أنا الحيرة.أعتقد أن جوهر المسألة هو مخازن لا PLE.(أعتقد PLE هو الحصول على تقرير كاذب من انخفاض لأن جميع مخازن هي ذهبت الى حد ما.)

ولكن لا أستطيع التفكير في أي طريقة يمكن أن يحدث هذا.أو ما ينبغي عمله المقبل.

أود المشورة على أشياء إضافية للتحقق أو اقتراحات بشأن ما قد تكون هذه المشكلة.

التحديثات من الأسئلة في التعليقات:

كم الذاكرة هو الخادم ؟ VM 20 غيغابايت من الذاكرة.
ما هو الخادم الحد الأقصى الذاكرة ؟

name                    value   value_in_use  description
max server memory (MB)  13000   13000         Maximum size of server memory (MB)
min server memory (MB)  0       16            Minimum size of server memory (MB)

ملاحظة:لقد فعلت قليلا من القراءة على هذا الآن فقط ، ويبدو أن هذه الإعدادات على خطأ على الخادم.

كيف كبيرة هي قاعدة البيانات ؟ هناك نوعان من المعاملات قواعد البيانات التي تعمل على هذا الملقم (أنا في عملية الحصول على خوادم وعزلهم.) وأحجامها 383 جيجابايت و 378 جيجابايت.

ما غيرها من التطبيقات و الخدمات قيد التشغيل على الخادم ؟ هذا الخادم يستضيف بيانات التطبيق الخاص بي.لا توجد أشياء أخرى لتصل إلى ذلك.(لدي نسخ البيانات التشغيلية متجر على تقارير من هذا القبيل.

ما هو VM التكنولوجيا VM Ware.
هذا VM تعمل على المضيف أن تستضيف فقط VMs مماثلة تخصيص الموارد? لدينا العديد من VMs في شركتنا.جميع متفاوتة الحجم.هذا هو واحد من أكبر بالرغم من ذلك.

يمكنك تأكيد ما النظام الخاص بك المشرف أقول لك عن تخصيص الذاكرة دون الحاجة إلى تصدقه ؟ أنا لا أستطيع.أنا لم يكن لديك الوصول إلى هذه الأدوات.

(في تجربتي, نظام مدراء سوف يقول الكثير من الأشياء إلى نقل المسؤولية و إلقاء اللوم على التطبيق أو أي شخص آخر إذا كان ذلك يعني أنها لا يجب أن تفعل أي شيء.) أنا يمكن أن نفهم تماما أن المشاعر.

هذا النمط يبدو بالتأكيد مثل شديدة ضغط الذاكرة وأنا أتفق.كنت آمل أن أجد ما يثبت أن SQL هو شعور ضغط الذاكرة.حتى أستطيع أن أرسل مرة أخرى إلى النظام المسؤولين عن المزيد من البحوث.

وقت الانتظار الإحصاءات

WaitType               Wait_S      Resource_S  Signal_S  WaitCount  Percentage   AvgWait_S  AvgRes_S  AvgSig_S 
---------------------- ----------- ----------- --------- ---------- ------------ ---------- --------- ---------
PAGEIOLATCH_SH         16250.10    16219.14    30.96     2171649    29.59        0.0075     0.0075    0.0000   
CXPACKET               14214.03    13238.56    975.47    1187935    25.88        0.0120     0.0111    0.0008   
PAGEIOLATCH_EX         6814.59     6806.21     8.38      638725     12.41        0.0107     0.0107    0.0000   
WRITELOG               5157.42     4873.44     283.98    3588476    9.39         0.0014     0.0014    0.0001   
BACKUPIO               2569.51     2538.12     31.39     1704119    4.68         0.0015     0.0015    0.0000   
LCK_M_IX               2477.15     2477.10     0.05      113        4.51         21.9217    21.9213   0.0004   
ASYNC_IO_COMPLETION    2079.99     2079.66     0.33      836        3.79         2.4880     2.4876    0.0004   
BACKUPBUFFER           1807.75     1759.11     48.64     380189     3.29         0.0048     0.0046    0.0001   
IO_COMPLETION          986.23      985.84      0.39      116112     1.80         0.0085     0.0085    0.0000   
هل كانت مفيدة؟

المحلول

كما نوقش في هذا SE الموضوع وأكد المرجع.

المشكلة بسبب خطأ في SQl Server عام 2012.تي إتش إس علة ثابتة في SQL Server 2012 SP1 CU4.أو أن تكون أكثر أمانا وقال: أنصح لك تطبيق SQL Server 2012 SP2 بدلا من الذهاب CU4.

في Microsoft إصلاح الخلل التفاصيل

قد تواجه بطء الأداء في SQL Server عام 2012.عند التحقق SQL Server أدوات مراقبة الأداء ، ترى التالية:

•الانخفاض السريع في SQLServer:المخزن المؤقت Manager\صفحة العمر المتوقع عداد الأداء القيم.عند حدوث هذه المشكلة ، العداد بالقرب من 0.

نصائح أخرى

الخاص بك تجمع المخزن المؤقت هو فقط 13GB و قواعد البيانات 383 جيجابايت و 378 جيجابايت التي يجب تصنيفها OLTP - المعاملات الصغيرة تعمل أيضا في كثير من الأحيان.

الحالة المذكورة أعلاه, إذا كان لدي تصور مثل أدناه :

enter image description here (المصدر :جوجل صور)

عليك أن تفهم كيف SQL Server بتخزين المعلومات :

SQL Server بتخزين المعلومات في الذاكرة في هيكل يسمى ذاكرة التخزين المؤقت. المعلومات الموجودة في ذاكرة التخزين المؤقت يمكن أن تكون بيانات مؤشر إدخالات بتجميع الإجراءات والخطط مجموعة متنوعة من أنواع أخرى من SQL Server المعلومات. لتجنب إعادة خلق هذه المعلومات يتم الاحتفاظ ذاكرة التخزين المؤقت لأطول فترة ممكنة و هو وكثيرا إزالتها من ذاكرة التخزين المؤقت عندما قديم جدا أن تكون مفيدة ، أو عندما تكون مساحة الذاكرة المطلوبة للحصول على معلومات جديدة.العملية التي تزيل المعلومات القديمة يسمى ذكرى الاجتياح. ذكرى الاجتياح هو كثرة النشاط ، ولكن ليست مستمرة.

أنت بالتأكيد experienceing الذاكرة المجاعة بسبب الكم الهائل من حجم قاعدة البيانات الخاصة بك غير كافية تجمع المخزن المؤقت.الرجوع إلى - كيفية تحديد مثالية الذاكرة على سبيل المثال ؟

جمع انتظر احصائيات و التحقق من الأداء القضايا التي تنشأ من يضيع الذاكرة تجمع المخزن المؤقت

التوصية:

إضافة المزيد من الذاكرة إلى مثيل الملقم وفصل اثنين من قواعد البيانات المختلفة VMs مع ذاكرة كافية.

هناك القليل جدا من التصحيح هنا - تحتاج إلى إضافة ذاكرة منطقيا تقسيم قاعدة البيانات الخاصة بك عبر عدة VMs ، أو نفهم أن خلط عليك القيام به مع ذاكرة محدودة يؤدي إلى مشكلات في الأداء و متقلبة PLE.يحاول يصلح 800 جيجابايت من البيانات في 13 غيغابايت من الذاكرة مثل محاولة التخزين بعيدا في حقيبة تحمل على الظهر.

نظرة فاحصة على الاستفسارات يتم تنفيذه.استخدام الذاكرة وحدها على قواعد البيانات عادة أيضا الخشنة متري لتحسين الأمور.على افتراض انك لا تؤثر على استفسارات (الصندوق الأسود الطلب), فإنه لا يزال يستحق فهم ما يؤثر على الذاكرة.فعلى سبيل المثال عملية دفعية قد يذهب و استخدام كافة مساحة المخزن المؤقت في ضربة واحدة عن طريق الاستعلام عن جميع البيانات على طاولة ضخمة.

ولا سيما ابحث عن أي مفقود الفهارس التي تسبب الجدول الكامل بفحص - كما أنها فعالة يمكن مسح ذاكرة التخزين المؤقت على الخادم.

SQL Server لديه مجموعة ممتازة من محلل الأدوات التي يمكن رصد في الوقت الحقيقي ، وأظن سترى شيئا التمسك بها مثل قرحة الإبهام بمجرد الخوض في ذلك.

أنا لا أقترح تغيير مخطط قاعدة البيانات, ولكن شيء واحد يجب البحث عنه هو كبير للغاية varchar المجالات - أنها حقا يمكن أن تمتص في مساحة ذاكرة التخزين المؤقت على قاعدة بيانات كبيرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى dba.stackexchange
scroll top