Gần đây phát hiện ra máy chủ MySQL của tôi chạm 90% sử dụng CPU cao khi mô phỏng trên đồng thời 100-500 đề nghịthread_cache_size giảm CPU và kết nối tối đa?
với các thiết lập mặc định cộng sau trong my.cnf
max_connections = 500 max_allowed_packet = 16M
tôi nhận thấy các max_connection có thể nhấn lên đến 500, threads_created cũng có thể đi cao 200-500 và tôi đang nghĩ đến điều này đã thực sự gây CPU cao bất thường
Do đó thay vì sử dụng các thiết lập mặc định tôi điều chỉnh
innodb_buffer_pool_size = 2G #32bit linux server innodb_log_file_size = 256M innodb_log_buffer_size = 8M innodb_thread_concurrency = 16 innodb_flush_method = O_DIRECT innodb_additional_mem_pool_size = 20M table_cache = 1028 thread_cache_size = 16 key_buffer_size=32M query_cache_size=32M join_buffer_size=1M
Với cùng một thử nghiệm tải, CPU đã giảm xuống 10% trở xuống ... Tuy nhiên tôi nhận thấy max_connection không bao giờ chạm 500 nữa. Hiện chưa đến 50 giờ ...
Điều này có phải do thread_cache_size tôi đã điều chỉnh không? theo mặc định nó là 0. Hoặc có điều gì đó sai ở đâu đó ... Tôi tự hỏi trong trường hợp đó nếu máy chủ mysql được kiểm tra chính xác với kết nối tối đa. Tôi muốn kiểm tra làm thế nào nếu chủ đề đồng thời có thể đạt max_connections nhưng bằng cách nào đó nó không bao giờ trúng với số tiền tương tự tôi đã thử nghiệm trước đây. Kể từ khi thay đổi, nó không bao giờ chạm trên 50 bây giờ.
Bất kỳ ý tưởng nào?
Tôi biết đã quá muộn để hỏi nhưng cấu hình cũ của bạn nghĩa là giá trị cũ của các thông số trên là gì? – ursitesion