Hướng dẫn mysql find high cpu query - mysql tìm truy vấn cpu cao

Vì vậy, bạn nghĩ rằng cơ sở dữ liệu của bạn có hình dạng tốt, nhưng đột nhiên sử dụng CPU của bạn tăng đột biến và đạt 100% lúc 2 giờ sáng. Làm thế nào bạn có thể theo dõi nguyên nhân gốc và sửa nó?

1. Xác định vị trí nguyên nhân gốc

Nếu bạn đang sử dụng CloudWatch hoặc bất kỳ giải pháp giám sát cơ sở hạ tầng nào, bạn có thể bắt đầu cuộc điều tra của mình ở đó. Để hiểu những gì đã xảy ra trong cơ sở dữ liệu của bạn, bạn sẽ bật tính năng nhật ký truy vấn chậm trên cơ sở dữ liệu của bạn. Điều này sẽ nắm bắt tất cả các truy vấn nhật ký chậm vào nhật ký, dựa trên ngưỡng mà bạn xác định. Nếu bạn cần, chúng tôi đã tạo một hướng dẫn từng bước về cách bật nhật ký truy vấn chậm.
To understand what happened in your database, you should enable the slow query log feature on your database. This will capture all the slow log queries into a log, based on a threshold that you define.
If you need, we created a step-by-step guide on how to enable the slow query log.

Khi bạn đã bật nó, bạn có thể sử dụng SlowQueryLog.com để trực quan hóa nhật ký trên dòng thời gian và phóng to về vấn đề cụ thể. Bây giờ, sau khi bạn có một số nhật ký, bạn có thể bắt đầu điều tra:
Now, after you have some logs, you can start the investigation:

    • Nó bắt đầu từ khi nào?
    • Bạn có tăng lưu lượng truy cập lớn không?
    • Bạn đã phát hành một tính năng / bản phát hành chính mới?
    • Bạn đã thay đổi gì? (Tham số cấu hình cơ sở dữ liệu? Bạn có bật kết nối liên tục không? Nâng cấp? Đã chuyển sang một Infra mới?)
      Hướng dẫn mysql find high cpu query - mysql tìm truy vấn cpu cao

2. Khắc phục sự cố hiệu suất

Hướng dẫn mysql find high cpu query - mysql tìm truy vấn cpu cao

Có thể có nhiều lý do cho sự gia tăng đột ngột trong việc sử dụng CPU. Dưới đây là một vài mẹo về cách khắc phục nó:

  • Kiểm tra người dùng MySQL nào đã đăng nhập. Có lẽ có một người dùng mới cụ thể đang cản trở hệ thống. Bạn có thể làm điều đó bằng cách sử dụng truy vấn sau:
    SELECT SUBSTRING_INDEX(host, ':', 1) AS host_short,
           GROUP_CONCAT(DISTINCT user) AS users,
           COUNT(*) AS threads
    FROM information_schema.processlist
    GROUP BY host_short
    ORDER BY COUNT(*), host_short;
    Maybe there is a specific new user that's hammering the system. You can do that using the following query:
    SELECT SUBSTRING_INDEX(host, ':', 1) AS host_short,
           GROUP_CONCAT(DISTINCT user) AS users,
           COUNT(*) AS threads
    FROM information_schema.processlist
    GROUP BY host_short
    ORDER BY COUNT(*), host_short;
  • Tắt các kết nối liên tục nếu bạn không chắc chắn 100% rằng bạn cần chúng. if you are not 100% sure that you need them.
  • Kiểm tra các truy vấn chậm của bạn. Bạn có thể có một truy vấn mới hoặc một truy vấn cũ đột nhiên chạy chậm. Bạn có thể sử dụng các công cụ miễn phí sẽ giúp bạn tìm các truy vấn chậm hàng đầu, như Eversql .________ 1 You might have a new query or an old query that's suddenly running slow. You can use free tools that will help you find the top slow queries, like EverSQL.
    Hướng dẫn mysql find high cpu query - mysql tìm truy vấn cpu cao
    VISUALIZE SLOW QUERIES

Với các giải pháp tối ưu hóa MySQL tự động như vậy sẽ giải phóng bạn để tập trung vào những gì quan trọng nhất, đó là doanh nghiệp của bạn, thay vì đầu tư thời gian của bạn để tối ưu hóa thủ công các truy vấn và cơ sở dữ liệu của bạn.

  • Liệt kê tất cả các quy trình cơ sở dữ liệu và kiểm tra trạng thái động cơ DB Inno để kiểm tra xem bạn có bế tắc không. Bạn có thể làm điều đó bằng cách chạy lệnh sau:
    SHOW ENGINE INNODB STATUS
    and check the inno db engine status to check if you have a deadlock. You can do it by running the following command:
    SHOW ENGINE INNODB STATUS

    SHOW FULL PROCESSLIST; (in case your queries are very long)
  • Xem lại các tham số cấu hình cơ sở dữ liệu, như innodb_buffer_pool_size, kích thước bộ đệm, bộ đệm bảng, bộ đệm truy vấn.
    SHOW SERVER STATUS\G
    , like Innodb_buffer_pool_size,buffer size, table cache, query cache.
    SHOW SERVER STATUS\G
  • Kiểm tra trạng thái Innodb, vì có thể là một quy trình mới đang ăn CPU:
    SHOW ENGINE INNODB STATUS\G
    , as it might be that a new process is eating up CPU:
    SHOW ENGINE INNODB STATUS\G
  • Chạy phân tích cơ sở dữ liệu đầy đủ, sử dụng các công cụ dựa trên AI để phân tích đầy đủ trạng thái cơ sở dữ liệu của bạn và nhận báo cáo về những gì đang ăn tài nguyên của bạn:
    EVERSQL
    , use AI-Based tools to fully analyze your database status and get a report on what's eating your resources:
    EVERSQL

3. Đảm bảo rằng nó sẽ không xảy ra nữa

Bạn không muốn bị mất cảnh giác vào lúc 2 giờ sáng khi việc sử dụng CPU của bạn là 100%, do đó bạn nên cài đặt một số loại giải pháp giám sát cơ sở dữ liệu để đảm bảo bạn nhận được thông báo càng sớm càng tốt. Có một số công cụ giám sát như NewRelic, AppDySnamics và các công cụ khác, nhưng đối với MySQL, bạn có thể sử dụng cảm biến EversQL, tự động thu thập hàng tá tín hiệu và cung cấp cho bạn những hiểu biết của MySQL được hỗ trợ AI, chẳng hạn như::
There are several Monitoring tools like NewRelic, AppDynamics and others, but for MySQL you can use EverSQL Sensor, which automatically collects dozens of signals and provides you AI-powered MySQL insights, such as:

  • Phát hiện các truy vấn chậm mới.
  • Ưu tiên các truy vấn để tối ưu hóa.
  • Phát hiện các chỉ số thiếu và dự phòng.
  • Tối ưu hóa truy vấn tự động.
  • và nhiều hơn nữa.

Hướng dẫn mysql find high cpu query - mysql tìm truy vấn cpu cao

4. Tóm tắt

Có thể tránh được sự cố sản xuất do sử dụng CPU 100% trên cơ sở dữ liệu của bạn. Với các công cụ như & nbsp; eversql, bạn có thể nhận được thông báo ngay khi nó bắt đầu leo ​​lên và sử dụng các giải pháp trực tuyến để khắc phục nó trong vòng vài phút, thay vì thuê các chuyên gia tư vấn cơ sở dữ liệu đắt tiền.

Hướng dẫn mysql find high cpu query - mysql tìm truy vấn cpu cao

Quá trình MySQLD là gì?

MySQLD, còn được gọi là Máy chủ MySQL, là một chương trình đa luồng duy nhất thực hiện hầu hết các công việc trong cài đặt MySQL. Nó không sinh ra các quá trình bổ sung. Máy chủ MySQL quản lý quyền truy cập vào thư mục dữ liệu MySQL có chứa cơ sở dữ liệu và bảng.a single multithreaded program that does most of the work in a MySQL installation. It does not spawn additional processes. MySQL Server manages access to the MySQL data directory that contains databases and tables.

Làm thế nào tôi có thể xem những truy vấn nào đang chạy trên MySQL?

Để xem các truy vấn nào đang tích cực chạy cho phiên bản DB của MySQL trên Amazon RDS, hãy làm theo các bước sau:..
Kết nối với phiên bản DB chạy MySQL ..
Chạy lệnh sau: Hiển thị đầy đủ Danh sách xử lý \ g.....
Hoặc, chạy truy vấn sau để truy xuất cùng một tập kết quả:.

Điều gì xảy ra khi CPU RDS là 100%?

CPU tăng đột biến liên tục đến 100% CPU có thể dẫn đến áp suất bộ nhớ, tức là sử dụng hoán đổi rất cao và bộ nhớ có thể tự do thấp và sự cố phiên bản cuối cùng.Khối lượng công việc sẽ đạt đến ngưỡng và đọc và viết IOP sẽ không đi xa hơn.may lead to memory pressure, ie, very high swap usage and low freeable memory and an eventual instance crash. Workload will reach the threshold and read and write IOPS won't go further.

Cách dễ nhất để giảm việc sử dụng CPU cơ sở dữ liệu SQL của bạn là gì?

Bằng cách giảm số lượng hướng dẫn khi sử dụng chế độ hàng loạt, các truy vấn thường sử dụng ít CPU hơn các truy vấn chế độ hàng.