การใช้งานหน่วยความจำแปลก ๆ ใน Windows Server 2008 R2


20

ฉันหวังว่าบางคนสามารถช่วยได้ เรามีเครื่องWindows Server 2008 R2พร้อม RAM ขนาด 16GB ที่ทำให้หน่วยความจำที่มีอยู่ทั้งหมดนั้นกินได้หมด ไม่มีอะไรในตัวจัดการงานหรือการตรวจสอบทรัพยากรเผยให้เห็นกระบวนการใด ๆ ที่ใช้หน่วยความจำสูงกว่า 300MB ... แต่การใช้หน่วยความจำบนเซิร์ฟเวอร์คือ 15.7GB

https://i784.photobucket.com/albums/yy129/ThunderPeel2001/ram-usage.gif

สิ่งเดียวที่ทำงานคือSQL Server 2008และIIS7.5 (พร้อม ASP.Net)

หมายเหตุ: การใช้ RAM หลังจากการรีบูตเริ่มต้นต่ำและใช้จนหมด หลังจากผ่านไปประมาณหนึ่งสัปดาห์เราก็จะพบตัวเองในสถานการณ์เช่นนี้

ฉันจะค้นพบสิ่งที่กินความทรงจำทั้งหมดของเราได้อย่างไร :(


1
คุณว่า "การ จำกัด การใช้ RAM บนเซิร์ฟเวอร์ SQL (ต่ำสุด / สูงสุด) ถึง 13GB เป็นอย่างไรไม่ควรเกิดขึ้นอีกครั้ง" ฉันใช้เครื่อง Win 2008 R2 กับ SQL 2008 R2 และฉันพบปัญหาเดียวกัน

มันเป็นการตั้งค่าภายใน SQL Server Studio โชคดี!
Django Reinhardt

คำตอบ:


15

นี่เป็นเซิร์ฟเวอร์ 64 บิต - คุณเปิดใช้งานหน้าล็อคในนโยบายภายในหน่วยความจำหรือไม่ SQL น่าจะใช้หน่วยความจำที่เหลือของคุณถ้าคุณดูที่เคาน์เตอร์ perfmon คุณจะเห็นการจัดสรรหน่วยความจำ

นี่คือบทความที่อธิบายในเชิงลึก

คุณยังสามารถดูตัวนับใน SQL

SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value * 8192.0 ) / 1048576, 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    object_Name LIKE '%Buffer Manager%'
    AND RTRIM(counter_name) IN ( 'Free pages', 'Total pages',
                                 'Database pages' ) 
UNION SELECT
    object_name
   ,Counter_name
   ,cntr_value
   ,ROUND(( cntr_value / 1024 ), 0) AS cntr_value_MB
FROM
    sys.dm_os_performance_counters
WHERE
    counter_name IN ( 'Target Server Memory (KB)',
                      'Total Server Memory (KB)' )

2
สิ่งนี้จะอธิบายทุกอย่าง การใช้หน่วยความจำคือ "ใช้ทั้งหมดที่มีอยู่" (เช่น. 2000TB) และกับหน้าเว็บที่ถูกล็อคใน RAM แล้วทุกสิ่งไม่สามารถเข้าถึงได้เมื่อมีการใช้งาน ขณะนี้มีการ จำกัด การใช้งาน SQL Server RAM (ต่ำสุด / สูงสุด) ถึง 13GB สิ่งนี้ไม่ควรเกิดขึ้นอีก ตอนนี้ฉันมีเครื่องมือหลายอย่างที่คอยติดตามการเปลี่ยนแปลงเช่นกัน ขอบคุณสำหรับความช่วยเหลือของคุณ!
Django Reinhardt

>> ตอนนี้ฉันมีเครื่องมือหลายอย่างที่คอยติดตามการเปลี่ยนแปลงเช่นกัน - เครื่องมือใดที่คุณใช้?
เดวิดคริสเตียน

6

ทดสอบด่วน: รีสตาร์ท SQL Server
การทดสอบอย่างรวดเร็วอื่น: เริ่มต้น IIS

คุณจะรู้แน่นอนว่าหนึ่งในนั้นคือผู้ร้ายหรือถ้าคุณต้องมองหาที่อื่น


ดูเหมือนว่า SQL จะเป็นตัวการ!
Django Reinhardt


1

คุณประสบปัญหาเกี่ยวกับหน่วยความจำจริงหรือไม่?

การใช้หน่วยความจำสูงกว่าหน่วยความจำที่ติดตั้งจริงหรือเคยเติมและอยู่ที่นั่นหรือไม่?

หากหน่วยความจำเต็ม แต่คุณไม่พบปัญหาใด ๆ แสดงว่าเป็นเพียงแคชทำงาน หน่วยความจำจะ realeased โดยอัตโนมัติหากและเมื่อคุณจะจริงจำเป็นต้องใช้มัน

หากการใช้หน่วยความจำสูงกว่าขีด จำกัด ทางกายภาพและเซิร์ฟเวอร์หยุดทำงานชั่วคราวแสดงว่าคุณกำลังประสบปัญหาหน่วยความจำรั่วและควรแก้ไขจุดบกพร่องอย่างแน่นอน

บางบทความที่น่าสนใจในหัวข้อ "แคช":

http://blogs.msdn.com/ntdebugging/archive/2007/11/27/too-much-cache.aspx
http://blogs.msdn.com/ntdebugging/archive/2007/10/10/the-memory -shell-game.aspx
http://blogs.msdn.com/ntdebugging/archive/2009/02/06/microsoft-windows-dynamic-cache-service.aspx


เราไม่สามารถติดตั้งการปรับปรุง Critical Windows ใด ๆ โดยไม่ต้องทำการรีเซ็ตเซิร์ฟเวอร์เพราะมันยังคงมี RAM เหลืออยู่ ค่อนข้างไร้สาระ ไม่ว่าจะใช้อะไรก็ตามไม่ต้องการคืน
Django Reinhardt


0

สิ่งแรกคือให้แก้ไขและดูว่าจะช่วยแก้ปัญหาดังที่กล่าวไว้ก่อนหรือไม่

ประการที่สองหากไม่ได้ผลให้ใช้Process Explorerเพื่อดูการใช้หน่วยความจำของคุณให้ดีขึ้น ไปที่เมนูมุมมองจากนั้นเลือกคอลัมน์ประมวลผลหน่วยความจำและตรวจสอบตัวเลือกไบต์ส่วนตัวขนาดเสมือนและขนาดชุดการทำงาน ดูว่านั่นเป็นการตำหนิอะไรที่นี่

วิธีการที่รุนแรงนั้นจะลองหยุดบริการ ตัวอย่างเช่น IIS อาจเป็นหมูหน่วยความจำทั้งหมดหากคุณมีแอพพูลและเว็บการ์เด้นตั้งค่าผิดพลาด (มากเกินไป) เพื่อให้เป็นตัวเลือก

โชคดี!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.