Cải thiện hiệu suất SQL Server trên VMware trong Linux


7

Tôi có một máy chủ Linux trong một công ty nhỏ (3 người dùng) hoạt động như một máy chủ miền và chạy hai máy ảo trong VMware: một máy chủ có SQL Server 2000 và một máy chủ có SQL Server 2005, trong mỗi trường hợp chạy trên Win2k. Mỗi Máy chủ SQL có một vài cơ sở dữ liệu nhỏ nhưng quan trọng.

Gần như tôi có thể nói, máy chủ Linux dành cả đời để chán. Nó có 2GB bộ nhớ, nhưng ngay cả với các máy ảo, nó không bao giờ sử dụng nhiều hơn khoảng 512 MB, phần còn lại được phân bổ vào bộ đệm.

Nhưng hiệu suất VM bốc mùi! Các cơ sở dữ liệu chậm hơn trước khi tôi chuyển chúng từ các máy chuyên dụng (nhưng cổ đại). Nếu một cơ sở dữ liệu đã không được sử dụng trong một thời gian, bạn có thể đi uống cà phê trước khi nó bắt đầu phản hồi lại.

Tôi có thể làm gì để cải thiện hiệu suất?


Bạn có thể xây dựng thêm một chút về thiết lập của bạn. Có bao nhiêu RAM được gán cho máy ảo, có bao nhiêu CPU trên máy chủ (bao nhiêu máy được gán), máy ảo chạy 1 đĩa cứng (cùng ổ cứng với máy chủ?). Trình quản lý tác vụ trong VM nói gì? Bận? Hay bộ nhớ ở mức 100% trong máy ảo?

Tôi tự hỏi bao nhiêu câu hỏi đầu tiên không được di chuyển ở đây là.
Wogsland

Câu trả lời:


5

Tôi đã có một vấn đề tương tự. Đĩa ảo giết hiệu suất. Cố gắng lấy càng nhiều dữ liệu vào bộ nhớ càng tốt. Cuối cùng tôi đã đặt các máy ảo chuyên sâu của đĩa lên ngăn xếp RAID của riêng nó.

Hầu hết mọi người trong OIT không khuyên bạn nên đưa các ứng dụng chuyên sâu vào máy ảo vì lý do này. Bạn cũng không chỉ định sản phẩm VMWare nào bạn đang sử dụng. ESXi đã được phát hành miễn phí cách đây không lâu, nếu bạn không sử dụng mà bạn có thể muốn dùng thử. Nó có thể giúp bạn có được hiệu suất cuối cùng mà bạn cần.


2

SQL Server là một thời kỳ máy IO.

SQL Server sử dụng bộ nhớ làm bộ nhớ cache để có thể lưu trữ trong bộ nhớ càng nhiều thì hiệu suất đọc càng tốt. Tôi cũng sẽ xem xét một giải pháp VM dựa trên siêu visor để giúp bạn gần nhất có thể với máy vật lý.

Việc tách vdisk trên các bộ trục khác nhau cũng sẽ giúp ích.


1

Có vẻ như vấn đề hiệu suất là CPU, đĩa hoặc mạng bị ràng buộc? tức là việc đập đĩa hoặc CPU được tối đa hóa trong một truy vấn chậm đắt tiền, hoặc nó chậm đối với các truy vấn từ xa ngay cả khi chúng nhỏ?

Làm thế nào là các đĩa ảo được phân bổ? Bạn đã thử chống phân mảnh chúng?

Bao nhiêu bộ nhớ được dành riêng cho máy ảo? Là khách Win2ks có vấn đề bộ nhớ thấp?

Có đủ RAM để máy chủ SQL lưu trữ toàn bộ cơ sở dữ liệu không và việc phân bổ nó có đủ để cho phép làm như vậy không? Truy cập đĩa có thể rất chậm từ bên trong máy ảo.

Sẽ là thực tế khi di chuyển cả hai cài đặt máy chủ SQL vào cùng một VM? Điều này sẽ làm giảm sự tranh chấp tài nguyên giữa chúng.


1

Bạn nên tập trung vào đĩa IO. Bạn có cài đặt VM thành autogrow không? Nếu có, đây là nguồn gốc của vấn đề của bạn. Giả sử rằng SQL được thiết lập để phát triển tự động và VM sẽ tự động phân bổ đĩa, bạn đang ở trên đường chậm.

Chúng tôi đã điều hành một hệ thống bảng lương đóng vai trò là hậu phương cho HR và tạo ra bảng lương hai tuần một lần cho hơn 900 người trên VMWare mà không gặp vấn đề gì. Để thực hiện điều này, chúng tôi đã phân bổ trước dung lượng ổ đĩa và phân mảnh cả hai lát VM và Máy chủ VM mỗi quý. Giữ các đĩa được điều chỉnh sẽ đi một chặng đường dài để duy trì hiệu suất tốt.


1

Nếu một cơ sở dữ liệu đã không được sử dụng trong một thời gian, bạn có thể đi uống cà phê trước khi nó bắt đầu phản hồi lại.

Có thể là bạn đã đặt tùy chọn DB Tự động đóng thành 'BẬT'?

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.