SQL Server 2012 x64 - không thể phân bổ an toàn hơn 50% RAM


7

Chúng tôi đang chạy SQL Server 2012 SP1 CU4 trên máy chủ 2 lõi 64 bit, sử dụng máy chủ kiến ​​trúc NUMA. HĐH là Windows Server 2008 R2 x64.

Bất cứ khi nào chúng tôi phân bổ hơn 50% RAM vật lý cho máy chủ SQL, máy sẽ không ổn định hoặc không phản hồi.

Các triệu chứng là điển hình của tình trạng đói bộ nhớ hệ điều hành - tức là quá trình không khởi động, đối tượng GUI không hiển thị, các ứng dụng hoạt động sai, các phiên máy tính từ xa trở nên không phản hồi, v.v.

Chúng tôi đã thấy điều này trên 2 máy khác nhau - một máy có RAM 192 GB, máy còn lại có RAM 256 GB ngay khi SQL được cung cấp hơn 50% tổng số vật lý tương ứng, các triệu chứng xuất hiện.

Có ai khác nhìn thấy hành vi này?

--- BIÊN TẬP ---

Dịch vụ SQL chạy trong một tài khoản có đặc quyền LPIM (Khóa trang trong bộ nhớ).

Đáng buồn là phần mềm diệt virus McAfee được áp đặt trên máy chủ, mặc dù ít nhất nó cũng được thiết lập với các loại trừ cho tất cả các tệp SQL.

Khi mức sử dụng RAM được phép vượt quá 50%, hành vi phổ biến chúng ta thấy là:

  • Thời gian chờ đợi RESOURCE_SEMAPHORE cao.
  • Không có khả năng kết nối với máy chủ SQL hoặc chạy truy vấn.
  • Tất cả các CPU đạt tối đa với I / O đĩa thấp khi chạy khối lượng công việc truy vấn.

- CHỈNH SỬA 2 ---

Chúng tôi đã thử cài đặt lại SQL (SP1 CU4) và đã kiểm tra xem không có gì khác đang kiểm tra RAM. Nói chung, có ít nhất 100 GB trong tổng số 256 GB miễn phí bất cứ lúc nào. Khi chúng tôi tắt LPIM, chúng tôi sẽ thấy vấn đề "hệ điều hành đã hoán đổi ở một phần đáng kể của bộ nhớ SQL", đó là lý do tại sao chúng tôi bật nó lên.


Có - RAM được cân bằng - 128GB cho mỗi ổ cắm, 2 ổ cắm
Đánh dấu

3
Tôi có một vài câu hỏi khác. Bạn có ý nghĩa gì khi "phân bổ?" Đây là ảo hay vật lý? Tôi chỉ hỏi vì RAM 198GB là một cấu hình kỳ quặc (trừ khi bạn có khung lưỡi cắt có 99 khe cho 2GB gậy). Làm thế nào để bạn giới hạn SQL Server đến 50%? Bạn đã kích hoạt LPIM ? Có bất cứ điều gì khác đang chạy trên máy chủ này? Diệt virus?
swasheck

3
Ngoài các câu hỏi của swashk, cũng có thể hữu ích khi biết kiểu máy chủ và kiểu máy chủ này là gì. Đồng thời, đó là SQL Server 2012 Gói dịch vụ 1 CU4 hay 2012 CU4 (trước SP1)? Rất vui được trả lời với thông tin nào tôi sẽ thu thập để chẩn đoán sự cố nhưng có lẽ tốt nhất là bạn nên biết thêm chi tiết trước để tránh chuyển hướng sai cho bạn.
James L

4
Tôi giả sử 198 GB được coi là 192, phổ biến cho kiến ​​trúc bộ nhớ ba kênh (2 ổ cắm x 6 khe cắm bộ nhớ / ổ cắm x 16 GB / khe cắm). Trong mọi trường hợp, bạn đã chạy một chương trình kiểm tra RAM, hoặc trao đổi bộ nhớ với các phụ tùng? Âm thanh như nó có thể là một chip bộ nhớ xấu hoặc một cái gì đó. Bạn đã mua hai máy đó cùng một lúc?
Jon Seigel

Câu trả lời:


5

Tôi sẽ kiểm tra số liệu perfmon cho CPU trên mỗi cpu đang bận, cũng như số liệu toàn bộ perfmon và mỗi nút NUMA cho PLE, trang cơ sở dữ liệu, v.v. Hai KB Server SQL gần đây

Tuy nhiên, đối với một số khối lượng công việc, đặc biệt là với số lượng lõi cao hơn, số lượng truy vấn đồng thời cao và rất nhiều đĩa cơ sở dữ liệu IO, sử dụng cờ theo dõi 8015 (vô hiệu hóa hỗ trợ NUMA ở cấp SQL Server) và 8048 (xóa botlleneck cấp phát bộ nhớ truy vấn trên ổ cắm) cung cấp kết quả thậm chí tốt hơn các bản sửa lỗi có trong SQL Server 2012 SP1 CU4. (Tôi đã xác nhận điều này trên thiết bị thử nghiệm của chúng tôi bằng các mô phỏng khối lượng công việc của chúng tôi - YMMV)

Cờ dấu vết 8015 xứng đáng được đánh giá kỹ lưỡng trước khi triển khai. Ái lực bộ nhớ và tham dự độ trễ bộ nhớ thấp hơn được hy sinh để quản lý một bpool lớn duy nhất. Nó cũng dẫn đến một trình soạn thảo lười biếng thay vì một nút trên mỗi nút NUMA và ý tưởng xác nhận lại điểm cuối kết nối trong một phiên bản SQL Server duy nhất cho mỗi nút NUMA cũng biến mất. Nhưng đối với một số khối lượng công việc thì lợi ích là không thể phủ nhận. Đừng sử dụng 8015 mà không có 8048.

Tôi chưa bao giờ thấy hoặc nghe về bất kỳ chi phí có thể đo lường nào khi thêm cờ theo dõi 8048 và nếu CMEMTHREADchờ đợi và các spinlocks liên quan được kích hoạt bằng phân bổ bộ nhớ truy vấn - đó là cách đáng tin cậy duy nhất để loại bỏ chúng.


Chúng tôi đã triển khai cờ theo dõi của sql_sasquatch và máy chủ hiện đang hoạt động ổn định. Có lẽ MS chưa có hỗ trợ NUMA hoạt động 100% trong CU4?
Đánh dấu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.