Làm cách nào để sửa lỗi tối ưu hóa lắp ráp SQL Server và cạn kiệt bộ nhớ?


9

Dịch vụ tối ưu hóa thời gian chạy .NET ( mscorsvw) tiếp tục tiêu thụ tất cả bộ nhớ của máy trạm của tôi kể từ khi tôi cài đặt SQL Server 2012 Gói dịch vụ 1.

Nó tiêu tốn khoảng 1,6 GB bộ nhớ trước khi cạn kiệt tất cả bộ nhớ khả dụng:

Dịch vụ tối ưu hóa thời gian chạy .NET tiêu thụ tất cả bộ nhớ khả dụng trên máy trạm của tôi.

Tôi có thể giết tiến trình, nhưng nó lại xảy ra khi tôi khởi động lại máy tính hoặc đợi đủ lâu.

Techdows đề xuất sử dụng .NET Native Image Generator ( ngen) để giải quyết vấn đề.

Tôi đã xóa lệnh Prompt và chạy các lệnh như thế này:

cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319.1
ngen executeQueuedItems

Tiêu thụ bộ nhớ mscorsvwgiảm xuống còn khoảng 20-30 MB và ngentiêu thụ hết bộ nhớ còn lại.

ngenchỉ tạo ra các thông báo lỗi cho đến khi tôi giết quá trình. Một vài dòng đầu ra trông như thế này:

Microsoft (R) CLR Native Image Generator - Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.
Failed to load dependency Microsoft.DataWarehouse of assembly
Microsoft.SqlServer.MaintenancePlanTasks, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The system
cannot find the file specified. (Exception from HRESULT: 0x80070002)
Failed to load dependency Microsoft.VisualStudio.DataTools.Interop of assembly 
Microsoft.DataWarehouse, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The system
cannot find the file specified. (Exception from HRESULT: 0x80070002)
Failed to load dependency Microsoft.Data.ConnectionUI of assembly
Microsoft.DataWarehouse, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The located
assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)

Tất cả các mớ hỗn độn nói rằng hệ thống không thể tìm thấy một hội đồng, hoặc một định nghĩa rõ ràng không phù hợp với một tham chiếu.

Như một giải pháp thay thế, tôi đã vô hiệu hóa Dịch vụ Windows clr_optimization_v4.0.30319_32clr_optimization_v4.0.30319_64.

Điều này che giấu vấn đề thay vì giải quyết nó và ngăn chặn tất cả các hội đồng .NET được tối ưu hóa.

Tôi có thể cố gắng giải quyết vấn đề này bằng cách nào khác?


Bạn đã thử cài đặt lại thời gian chạy .Net chưa?
Max Vernon

@MaxVernon Chưa. Điều đó có thể mất một lúc. Tôi sẽ thử điều đó vào tuần tới nếu không có giải pháp nào khác xuất hiện.
Iain Samuel McLean Elder

Rõ ràng, không lâu như nhận được một câu trả lời khác. Bạn đã thử cài đặt lại?
Max Vernon

Câu trả lời:


9

Vấn đề này được mô tả trên Connect (xem các quy trình msiexec.exe tiếp tục chạy sau khi cài đặt SQL Server 2012 SP1 ) và một hotfix có sẵn tại KB2793634 . Có bình luận về các công việc xung quanh trên Connectblog này nếu bạn không thể cài đặt hotfix ngay lập tức.

Tôi đã chọn để thiết lập 2 kịch bản. Tập lệnh thứ 1 chạy hàng ngày lúc 1 giờ sáng và được thiết lập để chấm dứt sau 1 giờ thực hiện

c:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executequeueditems
c:\windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executequeueditems
c:\windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executequeueditems 
c:\windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executequeueditems

Kịch bản thứ 2 chạy hàng ngày lúc 3 giờ sáng (và bất cứ khi nào máy tính khởi động lại):

c:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe queue pause
c:\windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe queue pause

Bằng cách này, tôi vẫn nhận được các công việc tối ưu hóa biên dịch (chỉ chạy trong giờ thấp điểm), nhưng quá trình mscorsvw/ msiexecđược thuần hóa.


Tôi chưa thử kịch bản của bạn. Trên máy trạm của tôi, tôi đã có thể cài đặt hotfix ngay lập tức và nó đã giải quyết được vấn đề của tôi! Cảm ơn đã tham khảo.
Iain Samuel McLean Elder
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.