Khoảng 4 tháng trước, chúng tôi đã chuyển từ MS SQL Server sang MySQL 5.5 . Kể từ đó, chúng tôi đã gặp phải sự cố một lần trong khoảng 25 ngày kể từ khi CentOS hết bộ nhớ và kết quả là nó giết chết MySQL. MySQL an toàn khởi động lại mysql để cơ sở dữ liệu chỉ bị hỏng hoàn toàn trong một hoặc hai phút, nhưng chúng ta có thể bị mất hiệu năng và mất kết nối trong nhiều giờ trước khi CentOS giết chết luồng mysqld.
Chúng ta thường thấy các vấn đề từ 1 giờ sáng đến 5 giờ sáng , nhưng không bao giờ trong ngày khi lưu lượng truy cập cao nhất, đó là điều thực sự gây trở ngại cho tình huống này. Mặc dù thường thấy các vấn đề về kết nối và hiệu suất từ 1 giờ sáng đến 5 giờ sáng, máy chủ mysql thường bị giết vào khoảng 4 giờ sáng hoặc 5 giờ sáng, cùng khoảng thời gian mysqldump chạy.
Chúng tôi nghĩ mysqldump
có thể là thủ phạm. Tuy nhiên, nó bắt đầu lúc 4 giờ sáng hàng ngày, nhưng chúng tôi thấy có vấn đề sớm nhất là 1 giờ sáng vào một số đêm. Cũng mysqldump
đang chạy với công --opt
tắc, vì vậy nó không nên đệm nhiều dữ liệu trong quá trình kết xuất.
Chúng tôi cũng đã xem xét ứng dụng sao lưu mà chúng tôi đang sử dụng để lấy các tệp kết xuất và sao lưu chúng thành băng. Chúng tôi đã thay đổi thời gian chạy đến 6 giờ sáng và vấn đề không thay đổi.
Chúng tôi có một số công việc chạy định kỳ suốt đêm, nhưng không có công việc nào rất tốn tài nguyên và không mất nhiều thời gian để chạy.
Dưới đây là một số thống kê cho những gì chúng tôi đang làm việc và các mục hiện tại trong my.cnf
tệp. Bất kỳ trợ giúp hoặc đề xuất cho những thứ mà chúng tôi có thể thử sẽ được đánh giá rất cao.
TRẠM MÁY CHỦ :
- CPU (R) Xeon (R) Intel E5530 @ 2.40GHz
- lõi cpu: 4
- Bộ nhớ: 12293480 (12 hợp đồng biểu diễn)
HĐH :
- CentOS 5.5
- Linux 2.6.18-274.12.1.el5 # 1 SMP Thứ ba ngày 29 tháng 11 13:37:46 EST 2011 x86_64 x86_64 x86_64 GNU / Linux
MY.CNF:
[client]
port = 3306
socket = /var/lib/mysql/mysql.sock
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-name-resolve
ssl-ca=<file location>
ssl-cert=<file location>
ssl-key=<file location>
back_log = 50
max_connections = 500
table_open_cache = 2048
table_definition_cache = 9000
max_allowed_packet = 16M
binlog_cache_size = 1M
max_heap_table_size = 64M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
thread_cache_size = 130
thread_concurrency = 16
query_cache_size = 64M
query_cache_limit = 1M
ft_min_word_len = 4
default-storage-engine=INNODB
thread_stack = 192K
transaction_isolation = REPEATABLE-READ
tmp_table_size = 64M
log-bin=/log/mysql/mysql-bin
expire_logs_days=7
binlog_format=mixed
key_buffer_size = 32M
bulk_insert_buffer_size = 64M
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size = 10G
myisam_repair_threads = 1
myisam_recover
innodb_additional_mem_pool_size = 16M
innodb_buffer_pool_size = 7G
innodb_thread_concurrency = 16
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 256M
innodb_log_files_in_group = 3
innodb_max_dirty_pages_pct = 70
innodb_lock_wait_timeout = 120
[mysql]
no-auto-rehash
[mysqld_safe]
open-files-limit = 8192