Giới hạn sử dụng CPU MySQL
Tôi đang gặp phải tình trạng sử dụng CPU cao trên Amazon Relational Database Service (Amazon RDS) cho các phiên bản Cơ sở dữ liệu MySQL hoặc các phiên bản Amazon Aurora Phiên bản tương thích với MySQL của tôi. Làm cách nào tôi có thể khắc phục sự cố và giải quyết tình trạng sử dụng CPU cao? Show
Mô tả ngắnViệc tăng hiệu suất sử dụng CPU có thể do một số yếu tố gây ra, chẳng hạn như khối lượng công việc nặng do người dùng thực hiện, nhiều truy vấn đồng thời hoặc các giao dịch chạy trong thời gian dài Để xác định nguồn sử dụng CPU trong phiên bản Amazon RDS for MySQL của bạn, hãy xem xét các phương pháp sau
Sau khi bạn xác định nguồn, bạn có thể phân tích và tối ưu hóa khối lượng công việc của mình để giảm mức sử dụng CPU Nghị quyếtSử dụng giám sát nâng caoGiám sát nâng cao cung cấp chế độ xem ở cấp hệ điều hành (OS). Chế độ xem này có thể giúp xác định nguyên nhân tải CPU cao ở cấp độ chi tiết. Ví dụ: bạn có thể xem lại mức trung bình tải, phân phối CPU (% hệ thống hoặc tốt đẹp%) và danh sách quy trình HĐH Sử dụng Giám sát nâng cao, bạn có thể kiểm tra dữ liệu loadAverageMinute trong khoảng thời gian 1, 5 và 15 phút. Mức tải trung bình lớn hơn số lượng vCPU cho biết rằng phiên bản đang chịu tải nặng. Ngoài ra, nếu mức tải trung bình ít hơn số lượng vCPU cho lớp phiên bản CSDL, thì việc tiết chế CPU có thể không phải là nguyên nhân gây ra độ trễ của ứng dụng. Kiểm tra tải trung bình để tránh dương tính giả khi chẩn đoán nguyên nhân sử dụng CPU Ví dụ: nếu bạn có một phiên bản CSDL đang sử dụng một db. m5. 2xlarge với 3000 IOPS được cung cấp đạt đến giới hạn CPU, bạn có thể xem lại các chỉ số ví dụ sau để xác định nguyên nhân gốc rễ của việc sử dụng CPU cao. Trong ví dụ sau, lớp phiên bản có tám vCPU được liên kết với nó. Đối với cùng mức tải trung bình, vượt quá 170 cho biết máy đang chịu tải nặng trong khung thời gian đo được Tải phút trung bình Ghi chú. Amazon RDS cung cấp cho khối lượng công việc của bạn mức độ ưu tiên cao hơn so với các tác vụ khác đang chạy trên phiên bản CSDL. Để ưu tiên các tác vụ này, các tác vụ khối lượng công việc có giá trị Nice cao hơn. Do đó, trong Giám sát nâng cao, Nice% biểu thị lượng CPU được sử dụng bởi khối lượng công việc của bạn đối với cơ sở dữ liệu Sau khi bật Giám sát nâng cao, bạn cũng có thể kiểm tra danh sách quy trình HĐH được liên kết với phiên bản CSDL. Giám sát nâng cao hiển thị tối đa 100 quy trình. Điều này có thể giúp bạn xác định quy trình nào có tác động lớn nhất đến hiệu suất dựa trên việc sử dụng CPU và bộ nhớ Trong phần danh sách quy trình hệ điều hành (OS) của Giám sát nâng cao, hãy xem xét các quy trình OS và quy trình RDS. Xác nhận tỷ lệ sử dụng CPU của quy trình mysqld hoặc Aurora. Các số liệu này có thể giúp bạn xác nhận xem việc tăng hiệu suất sử dụng CPU là do HĐH hay do các quy trình RDS gây ra. Hoặc, bạn có thể sử dụng các số liệu này để theo dõi mọi mức tăng sử dụng CPU do mysqld hoặc Aurora gây ra. Bạn cũng có thể xem sự phân chia mức sử dụng CPU bằng cách xem xét các chỉ số cho cpuUtilization. Để biết thêm thông tin, hãy xem Giám sát số liệu hệ điều hành với Giám sát nâng cao Ghi chú. Nếu bạn kích hoạt Lược đồ hiệu suất, thì bạn có thể ánh xạ ID luồng hệ điều hành với ID tiến trình của cơ sở dữ liệu của bạn. Để biết thêm thông tin, hãy xem Tại sao phiên bản CSDL Amazon RDS của tôi lại sử dụng bộ nhớ hoán đổi khi tôi có đủ bộ nhớ? Sử dụng thông tin chi tiết về hiệu suấtSử dụng truy vấn để phát hiện nguyên nhân sử dụng CPU trong khối lượng công việcTrước khi bạn có thể tối ưu hóa khối lượng công việc của mình, bạn phải xác định truy vấn có vấn đề. Bạn có thể chạy các truy vấn sau trong khi xảy ra sự cố CPU cao để xác định nguyên nhân gốc rễ của việc sử dụng CPU. Sau đó, tối ưu hóa khối lượng công việc của bạn để giảm mức sử dụng CPU của bạn Lệnh SHOW PROCESSLIST hiển thị cho bạn các luồng hiện đang chạy trên phiên bản MySQL của bạn. Đôi khi, cùng một nhóm câu lệnh có thể tiếp tục chạy mà không hoàn thành. Khi điều này xảy ra, các câu lệnh tiếp theo phải đợi tập hợp các câu lệnh đầu tiên kết thúc. Điều này là do khóa cấp hàng InnoDB có thể đang cập nhật các hàng giống nhau. Để biết thêm thông tin, hãy xem câu lệnh SHOW PROCESSLIST trên trang web MySQL Ghi chú. Chạy truy vấn SHOW PROCESSLIST với tư cách là người dùng hệ thống chính. Nếu bạn không phải là người dùng hệ thống chính, thì bạn phải có quyền quản trị máy chủ MySQL PROCESS để xem tất cả các luồng đang chạy trên phiên bản MySQL. Không có đặc quyền của quản trị viên, SHOW PROCESSLIST chỉ hiển thị các luồng được liên kết với tài khoản MySQL mà bạn đang sử dụng Bảng INNODB_TRX cung cấp thông tin về tất cả các giao dịch InnoDB hiện đang chạy không phải là giao dịch chỉ đọc
Bảng INNODB_LOCKS cung cấp thông tin về các khóa mà giao dịch InnoDB đã yêu cầu nhưng chưa nhận được Đối với MySQL 5. 7 hoặc sớm hơn
Bảng INNODB_LOCK_WAITS cung cấp một hoặc nhiều hàng cho mỗi giao dịch InnoDB bị chặn Đối với MySQL 5. 7 hoặc sớm hơn
Bạn có thể chạy một truy vấn tương tự như sau để xem các giao dịch đang chờ và các giao dịch đang chặn các giao dịch đang chờ. Để biết thêm thông tin, hãy xem Sử dụng thông tin khóa và giao dịch InnoDB trên trang web MySQL Đối với MySQL 5. 7 hoặc sớm hơn
Truy vấn SHOW ENGINE INNODB STATUS cung cấp thông tin từ màn hình InnoDB tiêu chuẩn về trạng thái của công cụ lưu trữ InnoDB. Để biết thêm thông tin, hãy xem câu lệnh SHOW ENGINE trên trang web MySQL
HIỂN THỊ [ TOÀN CẦU. SESSION] STATUS cung cấp thông tin về trạng thái máy chủ. Để biết thêm thông tin, hãy xem câu lệnh SHOW STATUS trên trang web MySQL Ghi chú. Các truy vấn này đã được thử nghiệm trên Aurora 2. x (MySQL 5. 7); . x (MySQL 5. 6); . x. Ngoài ra, INFORMATION_SCHEMA. Bảng INNODB_LOCKS không còn được hỗ trợ kể từ MySQL 5. 7. 14 và bị xóa trong MySQL 8. 0. hiệu suất_lược đồ. bảng data_locks thay thế INFORMATION_SCHEMA. Bảng INNODB_LOCKS. Để biết thêm thông tin, hãy xem Bảng data_locks trên trang web MySQL Phân tích nhật ký và bật giám sátKhi bạn phân tích nhật ký hoặc muốn kích hoạt tính năng giám sát trong Amazon RDS for MySQL, hãy xem xét các phương pháp sau
Phân tích và tối ưu hóa khối lượng công việc CPU caoSau khi bạn xác định truy vấn đang làm tăng mức sử dụng CPU, hãy tối ưu hóa khối lượng công việc của bạn để giảm mức tiêu thụ CPU Nếu bạn thấy một truy vấn không cần thiết cho khối lượng công việc của mình, bạn có thể ngắt kết nối bằng lệnh sau ________số 8 Để tìm processID của truy vấn, hãy chạy lệnh SHOW FULL PROCESSLIST Nếu bạn không muốn kết thúc truy vấn, hãy tối ưu hóa truy vấn bằng cách sử dụng GIẢI THÍCH. Lệnh EXPLAIN hiển thị các bước riêng lẻ liên quan đến việc chạy truy vấn. Để biết thêm thông tin, hãy xem Tối ưu hóa truy vấn với GIẢI THÍCH trên trang web MySQL Để xem lại chi tiết hồ sơ, kích hoạt PROFILING. Lệnh PROFILING có thể chỉ ra việc sử dụng tài nguyên cho các câu lệnh đang chạy trong phiên hiện tại. Để biết thêm thông tin, hãy xem câu lệnh SHOW PROFILE trên trang web MySQL Để cập nhật bất kỳ thống kê bảng nào, hãy sử dụng ANALYZE TABLE. Lệnh ANALYZE TABLE có thể giúp trình tối ưu hóa chọn một kế hoạch thích hợp để chạy truy vấn. Để biết thêm thông tin, hãy xem câu lệnh ANALYZE TABLE trên trang web MySQL Tại sao mức sử dụng CPU MySQL cao?Việc tăng hiệu suất sử dụng CPU có thể do một số yếu tố gây ra, chẳng hạn như khối lượng công việc nặng do người dùng thực hiện, nhiều truy vấn đồng thời hoặc giao dịch kéo dài. To identify the source of the CPU usage in your Amazon RDS for MySQL instance, review the following approaches: Enhanced Monitoring. Performance Insights.
Cách dễ nhất để giảm mức sử dụng CPU của cơ sở dữ liệu SQL của bạn là gì?Trong bài viết này . Bước 1. Xác minh rằng SQL Server đang gây ra mức sử dụng CPU cao Bước 2. Xác định các truy vấn góp phần vào việc sử dụng CPU Bước 3. Cập nhật số liệu thống kê Bước 4. Thêm các chỉ mục còn thiếu Bước 5. Điều tra và giải quyết các vấn đề nhạy cảm với thông số Bước 6. Điều tra và giải quyết các vấn đề SARGability Bước 7. Vô hiệu hóa theo dõi nặng MySQL có giới hạn không?MySQL có giới hạn cố định là 4096 cột trên mỗi bảng , nhưng mức tối đa hiệu quả có thể ít hơn đối với một bảng nhất định. Giới hạn cột chính xác phụ thuộc vào một số yếu tố. Kích thước hàng tối đa cho một bảng hạn chế số lượng (và có thể là kích thước) cột vì tổng chiều dài của tất cả các cột không thể vượt quá kích thước này.
MySQL có thể sử dụng nhiều lõi không?Có. MySQL hoàn toàn đa luồng và sử dụng tất cả các CPU được cung cấp cho nó . |