Sekitar 4 bulan yang lalu kami bermigrasi dari MS SQL Server ke MySQL 5.5 . Sejak itu kami telah mengalami masalah sekali sekitar 25 hari sejak CentOS kehabisan memori dan akibatnya membunuh MySQL. Aman MySQL me-restart mysql sehingga database hanya benar-benar turun selama satu atau dua menit, tetapi kita bisa menderita kerugian kinerja dan konektivitas selama berjam-jam sebelum CentOS membunuh thread mysqld.
Kami biasanya melihat masalah dari jam 1 pagi hingga jam 5 pagi , tetapi tidak pernah pada siang hari ketika lalu lintas tertinggi yang merupakan apa yang benar-benar membingungkan tentang situasi ini. Meskipun biasanya melihat masalah konektivitas dan kinerja dari jam 1 pagi sampai jam 5 pagi, server mysql biasanya terbunuh sekitar jam 4 pagi atau 5 pagi, sekitar waktu yang sama saat mysqldump berjalan.
Kami pikir mysqldump
mungkin penyebabnya. Namun itu dimulai pukul 4 pagi setiap hari, tetapi kami melihat masalah sedini jam 1 pagi pada beberapa malam. Juga mysqldump
berjalan dengan --opt
saklar, jadi seharusnya tidak buffering banyak data selama proses dump.
Kami juga mempertimbangkan aplikasi cadangan yang kami gunakan yang mendapatkan file dump dan mendukungnya hingga direkam. Kami mengubah waktu berjalan hingga 6 pagi dan masalahnya tidak berubah.
Kami memiliki beberapa pekerjaan yang berjalan secara berkala sepanjang malam, tetapi tidak ada yang sangat intensif sumber daya dan tidak butuh waktu lama untuk berjalan sama sekali.
Berikut adalah beberapa statistik untuk apa yang kami kerjakan dan entri saat ini dalam my.cnf
file. Setiap bantuan atau saran untuk hal-hal yang dapat kita coba akan sangat dihargai.
STATUS SERVER :
- Intel (R) Xeon (R) CPU E5530 @ 2.40GHz
- core cpu: 4
- Memori: 12293480 (12 gigs)
OS :
- CentOS 5.5
- Linux 2.6.18-274.12.1.el5 # 1 SMP Sel 29 Nov 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
Jawaban:
Anda harus memeriksa log kesalahan MySQL
Periksa apakah nilai ini sama dengan
ulimit -a
file terbuka:sumber
Konfigurasi Anda bermasalah.
Di sini gunakan alat ini . Ini memberi tahu Anda berapa banyak memori RAM yang Anda butuhkan untuk konfigurasi khusus Anda?
RAM Anda saat ini seperti yang Anda sebutkan adalah
12GB
tetapi Anda membutuhkan31.6GB
500 koneksi MySQL aktif.sumber