table_open_cache
là cài đặt có nhiều khả năng khiến chủ nhà rời khỏi lưng bạn.
SHOW VARIABLES LIKE '%open%';
Và hệ thống đã hoạt động được bao lâu khi STATUS
bị bắt? (Cần "mỗi giây", không tính tuyệt đối.)
Cung cấp cho tôi kích thước ram, SHOW VARIABLES
và SHOW GLOBAL STATUS
; Tôi sẽ phê bình hàng tá thứ.
Có bất kỳ bảng PARTITIONed
nào? (Mỗi 'phân vùng' thực sự là một 'bảng' riêng biệt.)
Ngoài ra, hãy suy nghĩ lại 300x59 của bạn; Đó là những con số lớn vừa phải.
Phân tích VARIABLES & TÌNH TRẠNG
Quan sát:
Phiên bản: 5.6.17-log; RAM 4 GB; Thời gian hoạt động = 145d 22:45:14; Bạn không chạy trên Windows; Chạy phiên bản 64 bit; Bạn dường như đang chạy hoàn toàn (hoặc chủ yếu) InnoDB.
Các vấn đề quan trọng hơn
key_buffer_size - thấp hơn đến 20M; 400M của bạn đang lãng phí RAM.
table_open_cache dường như đang làm tốt. Vì vậy, tôi không thấy sự cần thiết phải tăng giới hạn tệp mở. (Cũng không có hại gì.)
Rất nhiều lần quét bảng, v.v. Đề nghị bạn hạ long_query_time xuống 1 và bật Slow_query_log. Sau đó, chúng ta có thể xem trong Slowlog mà các truy vấn cần cải thiện - thông qua các chỉ mục tổng hợp hoặc các kỹ thuật khác.
expire_logs_days hiện tại là 1. Bạn chỉ có một ngày để phát hiện ra rằng một cái gì đó bị hỏng trong bản sao và / hoặc binlog trước khi bạn mất thông tin.
Xóa hầu hết hoặc tất cả các cuộc gọi BẢNG TỐI ƯU.
Chi tiết và các quan sát khác
(Opened_tables) = 0,15 / giây - Đây là một tỷ lệ khá thấp và khá đáng nể. Rốt cuộc, bạn đã thức dậy được 20 tuần và đây là một 'bộ đếm'. Chỉ ra 20 tuần cho nhà cung cấp Hosting. table_open_cache là số lượng mục trong bộ đệm cho các bảng "Đã mở". Có lẽ có một loạt các mở trong khi sao lưu, nhưng không mở phần còn lại của thời gian? Đối với "Tôi đã đặt table_def định_cache thành 4096 vì tôi không thể chạy truy vấn trên lượt xem cho đến khi tôi tăng nó." - XEM của bạn chạm vào hàng trăm hoặc hàng ngàn bảng? (Yike!)
((key_buffer_size - 1.2 * Key_blocks_use * 1024) / _ram) = (400M - 1.2 * 4180 * 1024) / 4096M = 9.6% - Phần trăm RAM bị lãng phí trong key_buffer. - Giảm key_buffer_size.
(Key_blocks_use * 1024 / key_buffer_size) = 4,180 * 1024 / 400M = 1,0% - Phần trăm của key_buffer được sử dụng. Dấu nước cao. - Hạ key_buffer_size để tránh việc sử dụng bộ nhớ không cần thiết.
(innodb_buffer_pool_size / _ram) = 2.306,867,200 / 4096M = 53,7% -% RAM được sử dụng cho InnoDB buffer_pool - Chỉ với 4GB RAM, điều này có thể ổn, trừ khi bạn có các ứng dụng khác trong cùng một máy chủ.
(table_open_cache) = 4.096 - Số lượng mô tả bảng vào bộ đệm - Hàng trăm thường là tốt. Tuy nhiên, bạn có rất nhiều bảng, vì vậy, điều này có thể ổn, hoặc thậm chí quá nhỏ.
(table_open_cache_instances) = 1 - Đề xuất thay đổi thành 8.
Table_open_cache_overflows và _misses mỗi cái nhỏ hơn 0,1 / giây. - cái bàn_open_cache đủ lớn.
(Open_tables / table_open_cache) = 100% - Nhưng, vì bạn đã Up được vài tháng, điều này không hẳn là xấu.
((Com_show_create_table + Com_show_fields) / Câu hỏi) = (153314 + 9291657) / 543294681 = 1.7% - Khung nghịch ngợm - dành rất nhiều nỗ lực để khám phá lại lược đồ. - Khiếu nại với nhà cung cấp bên thứ 3.
Truy vấn bộ đệm - các giá trị TÌNH TRẠNG khác nhau cho thấy rằng nó khá tốt khi nó đứng.
(Gener_t tránh các đốm màu, vv
(Com_rollback / Com_commit) = 646,634 / 1329015 = 48,7% - Rollback: Tỷ lệ cam kết - Rollback rất tốn kém; thay đổi logic ứng dụng
(Chọn_scan) = 16,557,535 / 12609914 = 1,3 / giây - quét toàn bộ bảng - Thêm chỉ mục / tối ưu hóa truy vấn (trừ khi chúng là các bảng nhỏ)
(Chọn_scan / Com_select) = 16,557,535 / 57256550 = 28,9% -% số lượt chọn thực hiện quét toàn bộ bảng. (Có thể bị đánh lừa bởi các thói quen được lưu trữ.) - Thêm chỉ mục / tối ưu hóa truy vấn
((Com_stmt_prepare - Com_stmt_c Đóng) / (Com_stmt_prepare + Com_stmt_c Đóng) - Thêm Đóng.
(binlog_format) = MIXED - TUYÊN BỐ / ROW / MIXED. ROW được ưa thích; nó có thể trở thành mặc định
(expire_logs_days) = 1 - Thời gian sớm tự động lọc binlog (sau nhiều ngày này) - Quá lớn (hoặc không) = tiêu tốn dung lượng đĩa; quá nhỏ = cần phản ứng nhanh với sự cố mạng / máy.
(Slow_query_log) = OFF - Có ghi nhật ký truy vấn chậm hay không. (5.1.12)
(long_query_time) = 10,000000 = 10 - Ngắt (Giây) để xác định truy vấn "chậm". - Gợi ý 2
(max_connect_errors) = 10.000 - Một bảo vệ nhỏ chống lại tin tặc. - Có lẽ không quá 200.
(Kết nối) = 28.367.185 / 12609914 = 2.2 / giây - Kết nối - Tăng Wait_timeout; sử dụng tổng hợp?
(Max_use_connections / max_connections) = 167/410 = 41% - Đề xuất hạ max_connections xuống, giả sử, 200.
(innodb_io_capacity_max) = 800 - Điều này khá thấp, nhưng có lẽ OK.
(report_port) = 1 - Điều này có thể xấu, nhưng tôi không có kinh nghiệm để cụ thể hơn. Hầu hết mọi người để nó ở 3306.
Com_create_db cứ sau 4 phút và Com_drop_db cứ sau 2 phút - Rất cao; chuyện gì đang xảy ra vậy
Com_optizes = 4.9 / giờ - TỐI ƯU hầu như vô dụng, đặc biệt là trên InnoDB.