Điểm:1

Bộ đệm MariaDB bị nguội qua đêm

lá cờ cn

Chúng tôi đang chạy một ngăn xếp LAMP bao gồm MariaDB 10.5.15 trên Centos 7. Đó là một máy chủ chuyên dụng với 4 CPU và 8GB RAM.

Chưa bao giờ gặp sự cố cho đến vài tuần trước, khi tôi nhận thấy các truy vấn chậm mất 8-9 giây trong nhật ký truy vấn chậm.

Các truy vấn này đối với nhiều cơ sở dữ liệu INNODB, nhưng luôn là các bảng lớn (tức là hơn 10.000 hàng). Chúng luôn xảy ra trong khoảng thời gian từ 6 giờ sáng đến 8 giờ sáng.

Các bảng được đề cập có các chỉ mục và thông thường các truy vấn tương tự thực hiện trong chưa đầy một giây.

Tôi thấy rằng bằng cách đăng nhập vào máy chủ lúc 8 giờ sáng Chủ nhật và truy vấn các bảng lớn này bằng các câu lệnh chọn đơn giản, chúng sẽ mất 8-9 giây để thực thi. Sau đó, trong phần còn lại của ngày, thậm chí sau nửa đêm, mọi truy vấn đối với bảng đó sẽ nhanh chóng.

6h – 8h cũng là lúc mọi thứ “hồi sinh” trở lại sau khoảng thời gian bất động vào đầu giờ.

Có vẻ như có một số loại bộ đệm đang bị nguội và cần được làm nóng, nhưng tôi không chắc tại sao điều này đột nhiên bắt đầu xảy ra sau nhiều năm sử dụng miễn phí gặp sự cố. Tôi biết rằng không có tiến trình lớn nào chạy trên máy chủ qua đêm và máy chủ không tải khi điều này xảy ra.

Chúng tôi theo dõi tải CPU 24/7 và kiểm tra định kỳ số lượng kết nối tới Apache và MariaDB, những kết nối này vẫn ở mức thấp vừa phải trong suốt cả ngày. Thông thường, có khoảng 3GB bộ nhớ trống không bao gồm bộ đệm và bộ đệm.

Chỉnh sửa

Xấu hổ thay, tôi phát hiện ra rằng các truy vấn chậm được đề cập thực sự không sử dụng chỉ mục và đang thực hiện quét toàn bộ bảng. Một truy vấn ban đầu có thể mất vài giây, sau đó trong thời gian còn lại của ngày, thậm chí việc quét toàn bộ bảng chỉ mất chưa đến một giây. Tôi cho rằng đây là một loại bộ đệm đĩa sẽ bị nguội qua đêm.

Mặc dù việc quét toàn bộ bảng có vấn đề về hiệu suất có vẻ không phải là bất thường, nhưng vẫn có vẻ kỳ lạ là điều này đột nhiên trở thành một vấn đề bất ngờ.

Điểm:0
lá cờ ua

Bạn dường như đã loại trừ một bãi chứa hàng đêm và một số quá trình chậm?

Các đề xuất sửa lỗi khác:

Hạ cài đặt chung của long_query_time và tiếp tục bật chế độ ghi chậm; bạn có thể bắt được nhân vật phản diện.

Truy vấn của bạn chạy bao lâu một lần? Những gì tôi đang tìm kiếm ở đây là thu hẹp thời gian khi mọi thứ trở nên chậm lại.

Kiểm tra HIỂN THỊ TRẠNG THÁI TOÀN CẦU NHƯ "Thời gian hoạt động" Nếu giá trị đó nhỏ hơn 86400, thì MariaDB đã khởi động lại chưa đầy 24 giờ trước. Trong trường hợp này, bạn sẽ có thể ghim thời gian gần đến giây. (Nhưng không xác định được nguyên nhân).

Hiển thị cho chúng tôi truy vấn, cộng với HIỂN THỊ TẠO BẢNGGIẢI THÍCH... Chúng tôi có thể giúp bạn tăng tốc (ví dụ: bằng một chỉ mục tốt hơn hoặc xây dựng lại truy vấn), do đó loại bỏ vấn đề (mặc dù không giải quyết được nguyên nhân).

MrCarrot avatar
lá cờ cn
`thời gian hoạt động` là vài ngày trước (kể từ lần cuối chúng tôi khởi động lại thủ công). Tôi không nghĩ việc xem lại lược đồ bảng sẽ hữu ích vì điều này ảnh hưởng đến nhiều bảng trên nhiều cơ sở dữ liệu (tất cả đều lớn, nhưng tất cả đều sử dụng các chỉ mục thích hợp). Hôm qua, tôi đã chạy một crobjob gọi một trong các truy vấn cứ sau 15 phút, hy vọng xác định được thời điểm xảy ra sự cố (tôi nghi ngờ là 6 giờ sáng nhưng có thể sớm hơn). Sáng nay không có truy vấn chậm nào được ghi lại. Có thể là công việc định kỳ đã giữ ấm cơ sở dữ liệu hoặc có thể là sự trùng hợp ngẫu nhiên. Tôi sẽ để vài ngày rồi giảm cài đặt `long_query_time`
MrCarrot avatar
lá cờ cn
Xấu hổ thay, tôi phát hiện ra rằng các truy vấn chậm được đề cập thực sự không sử dụng chỉ mục và đang thực hiện quét toàn bộ bảng. Một truy vấn ban đầu có thể mất vài giây, sau đó trong thời gian còn lại của ngày, thậm chí việc quét toàn bộ bảng chỉ mất chưa đến một giây. Tôi cho rằng đây là một loại bộ đệm đĩa sẽ bị nguội qua đêm. Mặc dù việc quét toàn bộ bảng có vấn đề về hiệu suất có vẻ không phải là bất thường, nhưng vẫn có vẻ kỳ lạ là điều này đột nhiên trở thành một vấn đề bất ngờ.
lá cờ ua
@MrCarrot - Bộ nhớ đệm đĩa... Bạn có bộ điều khiển RAID phần cứng không? Bạn có đang chạy trên Đám mây không? Nếu "không" cho cả hai, tôi sẽ không mong đợi "bộ đệm đĩa" là câu trả lời. InnoDB sử dụng "buffer_pool" trong RAM của nó.
MrCarrot avatar
lá cờ cn
Đĩa là một ổ SSD có RAID1 (nó là một máy chủ chuyên dụng). Tôi đã lo lắng có lẽ ổ đĩa bị lỗi hoặc mảng RAID đang tải nhưng công ty lưu trữ khẳng định là không sao. Tôi đoán nó có thể là vùng đệm bị lạnh.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.