Đôi khi, trở thành một quản trị viên cơ sở dữ liệu có thể rất khó khăn khi bạn phải khắc phục các vấn đề về hiệu suất. Máy chủ cơ sở dữ liệu chỉ là một thành phần của hệ sinh thái ứng dụng và nó thường xuyên bị đổ lỗi là vấn đề về hiệu suất. SQL Server là một trong những hộp đen mà nhiều người không hiểu, giống như SAN và mạng. Các DBA sản xuất giám sát máy chủ của họ có thể nhanh chóng xác định xem SQL Server có đang hoạt động ngoài đường cơ sở bình thường của nó hay không, tuy nhiên có hai lĩnh vực chính mà chúng tôi ít thấy:SAN và mạng. Các DBA thường xuyên phải làm việc với các kỹ sư khác khi giải quyết các vấn đề về hiệu suất không liên quan trực tiếp đến SQL Server. Chúng tôi có thể dễ dàng theo dõi hiệu suất đĩa bằng cách theo dõi sys.dm_io_virtual_file_stats
, mà tôi đã viết về Theo dõi Độ trễ Đọc / Ghi; tuy nhiên, việc theo dõi các vấn đề về hiệu suất mạng trong SQL Server không dễ dàng.
Hiệu suất mạng kém có thể là kẻ giết người thầm lặng đối với hiệu suất ứng dụng và kinh nghiệm cá nhân của tôi đã cho thấy điều này xảy ra trong nhiều trường hợp. Thông thường, một ứng dụng sẽ bắt đầu gặp vấn đề về hiệu suất và kỹ sư ứng dụng sẽ nói rằng máy chủ ứng dụng có vẻ tốt và bắt đầu chỉ tay vào cơ sở dữ liệu. Tôi sẽ nhận được một cuộc gọi để xem xét máy chủ cơ sở dữ liệu và tất cả các dấu hiệu cho thấy rằng máy chủ cơ sở dữ liệu đang ở trong tình trạng tốt (và đây là nơi giám sát các chỉ số hiệu suất chính và có một đường cơ sở giúp ích!). Vì nhóm ứng dụng và cơ sở dữ liệu nói rằng mọi thứ đều tốt, chúng tôi sẽ yêu cầu nhóm mạng kiểm tra mọi thứ. Nhóm mạng sẽ xem xét một số vấn đề và đưa ra tất cả rõ ràng về phía họ. Mỗi nhóm khắc phục sự cố và xem xét hệ thống tương ứng của họ mất nhiều thời gian, trong khi hiệu suất ứng dụng vẫn bị ảnh hưởng. Vấn đề sau đó sẽ leo thang cho đến khi tất cả các nhóm sẽ được yêu cầu tham gia một cầu nối hội nghị để cùng nhau khắc phục sự cố. Cuối cùng, ai đó sẽ bắt đầu kiểm tra mạng sâu hơn và xác định rằng chúng tôi đã gặp sự cố bão hòa cổng, định tuyến hoặc một số vấn đề mạng phức tạp khác. Một vài cú nhấp chuột hoặc thay đổi thứ gì đó cuối cùng sẽ giải quyết được sự chậm chạp của ứng dụng.
Sự cố mạng quan trọng nhất mà tôi gặp phải với khách hàng thường liên quan đến băng thông khi thực hiện sao lưu. Nhiều tổ chức lớn hơn đang chuyển sang mạng 10Gb cho cơ sở hạ tầng cốt lõi, tuy nhiên khi làm việc với cả mạng vật lý và mạng ảo, rất dễ định cấu hình sai cài đặt hoặc cổng và có thể giảm xuống 1Gb. Đối với lưu lượng mạng ứng dụng thông thường, bạn có thể không nhận thấy sự suy giảm hiệu suất, tuy nhiên ngay sau khi bạn bắt đầu cố gắng sao chép 100 GB dữ liệu để sao lưu, 1Gb đó sẽ trở nên bão hòa và công việc sao lưu và khôi phục của bạn sẽ bị ảnh hưởng.
Đối với các DBA, có thể là một thách thức để người khác nhìn sâu vào các vấn đề mà họ không nghĩ là vấn đề của họ vì các chỉ báo ban đầu không tiết lộ vấn đề. Có thể tự cung cấp dữ liệu trước khi liên hệ với các nhóm khác sẽ giúp thu hút họ tham gia. Bằng cách sử dụng iPerf để thực hiện kiểm tra băng thông ban đầu, bạn có thể nhanh chóng xác định xem bạn có đang nhận được tốc độ mạng như mong đợi hay không. Ví dụ:nếu bạn đang sử dụng mạng 10Gb giữa máy chủ ứng dụng và máy chủ cơ sở dữ liệu và bạn chạy thử nghiệm và chỉ nhận được 1Gb, thì bạn biết có điều gì đó không ổn. Nếu bạn có thể ghi lại phát hiện này, thì bạn có thể tự tin yêu cầu các kỹ sư mạng của mình xem xét vấn đề băng thông.
Làm thế nào để bạn bắt đầu sử dụng iPerf? Trước tiên, bạn cần tải xuống công cụ từ iPerf.fr. Vì tôi đang làm việc trên Windows Server 2012 nên tôi đã tải xuống các tệp nhị phân của Windows vào máy tính của mình. Sau khi tải xuống và giải nén gói, bạn sẽ cần chạy chương trình từ một dòng lệnh. Tôi đã tải xuống iPerf 3.0.11 đã ra mắt được gần một năm. Đảm bảo đọc tài liệu của tiện ích này. Vì đây là một công cụ dòng lệnh, có hàng tá tùy chọn mà bạn có thể sử dụng. Trong ví dụ dưới đây, tôi sẽ chỉ sử dụng một vài trong số chúng, tuy nhiên tùy thuộc vào tình huống của bạn, bạn có thể cần sử dụng các tùy chọn khác như chỉ định cổng hoặc tăng kích thước gói. Xin lưu ý rằng các lệnh tùy chọn có phân biệt chữ hoa chữ thường.
Để sử dụng iPerf, bạn phải sử dụng ít nhất hai máy chủ để kiểm tra băng thông. Khi bạn đã sao chép các tệp nhị phân vào hai máy chủ, trước tiên bạn phải khởi động trình nghe iPerf trên một trong các máy chủ. Để làm điều này, tôi sẽ chạy lệnh sau:
iperf3 -sLệnh này chạy iPerf ở chế độ máy chủ và sẽ chỉ cho phép một kết nối tại một thời điểm.
Trên máy chủ thứ hai, bạn sẽ cần khởi chạy iPerf bằng một số tùy chọn máy khách. Đầu tiên, chúng ta sẽ chỉ định -c để chỉ định chế độ máy khách. Chúng tôi cũng sẽ sử dụng -t để chỉ định thời gian chạy mỗi bài kiểm tra và -P để chỉ định số lượng kết nối đồng thời cần thực hiện. Chúng tôi muốn chỉ định nhiều kết nối để chúng tôi có thể tạo ra sự căng thẳng cho mạng. Đối với bài kiểm tra này, tôi sẽ chạy lệnh sau:
iperf3 -c (tên máy chủ hoặc địa chỉ ip của máy chủ đầu tiên) -t 30 -P 10Lệnh trên sẽ bắt đầu kiểm tra đường truyền 30 giây với 10 kết nối đồng thời.
Tôi đã chạy thử nghiệm này trên hai máy ảo trên Dell M6800 của mình, vì vậy không có mạng vật lý nào cho các máy ảo này đi qua.
Từ máy chủ 2 kết nối với máy chủ 1, tôi nhận được 7,57 GByte được truyền với băng thông 2,17 Gbits / giây. Không tệ cho một vài máy ảo trên máy tính xách tay.
Thống kê mạng / đầu ra iPerf:Máy chủ 2 đang kết nối với Máy chủ 1
Từ máy chủ 1 kết nối với máy chủ 2, tôi nhận được 6,98 GByte được truyền với băng thông 2,00 Gbits / giây. Như bạn có thể thấy, có một chút khác biệt về các con số nhưng vẫn tương đối gần nhau. Nếu những con số này chênh lệch đáng kể thì tôi cần phải điều tra nguyên nhân.
Thống kê mạng / đầu ra iPerf:Máy chủ 1 đang kết nối với Máy chủ 2
Điều quan trọng là phải chạy các thử nghiệm này trước khi đi vào sản xuất và tạo thói quen thường xuyên lặp lại các thử nghiệm này trên máy chủ sản xuất của bạn. Bạn cần biết điều gì là bình thường, nếu bạn không theo dõi nó, thì bạn không thể đo lường nó. Nếu bạn biết rằng các bản cập nhật chương trình cơ sở đang được thực hiện trên máy chủ, máy chủ ảo hoặc bất kỳ thiết bị mạng lõi nào, thì kiểm tra iPerf trước và sau khi thay đổi có thể nhanh chóng cảnh báo bạn để xác định bất kỳ tác dụng phụ tiêu cực nào.
Điều quan trọng là phải thực hiện kiểm tra này đối với bất kỳ máy chủ nào giao tiếp trực tiếp với máy chủ cơ sở dữ liệu và bất kỳ máy chủ nào mà máy chủ cơ sở dữ liệu giao tiếp trực tiếp, chẳng hạn như các thiết bị sao lưu mạng. IPerf hoạt động trên cả Windows và Linux, giúp dễ dàng kiểm tra giữa hai Hệ điều hành.
Đối với DBA, mạng không còn phải là một hộp đen mà bạn không biết gì về nó. Sử dụng iPerf có thể cảnh báo bạn về bất kỳ vấn đề băng thông nào với mạng giữa máy chủ cơ sở dữ liệu của bạn và bất kỳ máy chủ nào khác. Không có lý do gì để chỉ dựa vào PING và TRACERT để khắc phục sự cố mạng hạn chế. Tải xuống iPerf và bắt đầu ghi lại băng thông mạng của bạn.