MySQL wird etwa alle 25 Tage vom Betriebssystem beendet

MySQL wird etwa alle 25 Tage vom Betriebssystem beendet

Vor etwa 4 Monaten migrierten wir vonMS SQL ServerZuMySQL 5.5. Seitdem haben wir etwa alle 25 Tage ein Problem, bei dem CentOS nicht genügend Arbeitsspeicher hat und MySQL dadurch beendet wird. MySQL startet MySQL sicher neu, sodass die Datenbank nur für ein oder zwei Minuten vollständig ausfällt. Wir können jedoch stundenlang Leistungs- und Verbindungsverluste erleiden, bevor CentOS den MySQLD-Thread beendet.

Normalerweise sehen wir Probleme zwischen 1 Uhr morgens und 5 Uhr morgens, aber nie tagsüber, wenn der Verkehr am höchsten ist, was das wirklich Verblüffende an dieser Situation ist. Obwohl normalerweise zwischen 1 und 5 Uhr morgens Verbindungs- und Leistungsprobleme auftreten, wird der MySQL-Server normalerweise gegen 4 oder 5 Uhr morgens abgestürzt, ungefähr zur selben Zeit, wenn mysqldump ausgeführt wird.

Wir dachten, mysqldumpdas könnte der Übeltäter sein. Es beginnt jedoch täglich um 4 Uhr morgens, aber in manchen Nächten sehen wir schon um 1 Uhr morgens Probleme. mysqldumpLäuft auch mit dem --optSwitch, also sollte es während des Dump-Prozesses nicht viele Daten puffern.

Wir haben auch die von uns verwendete Backup-App geprüft, die die Dump-Dateien abruft und auf Band sichert. Wir haben die Ausführungszeit auf 6 Uhr geändert und das Problem war unverändert.

Wir haben mehrere Jobs, die regelmäßig die ganze Nacht über laufen, aber keiner davon benötigt besonders viele Ressourcen und die Ausführung dauert auch nicht sehr lange.

Hier sind einige Statistiken zu dem, womit wir arbeiten, und den aktuellen Einträgen in der my.cnfDatei. Wir sind für jede Hilfe oder jeden Vorschlag, was wir ausprobieren können, sehr dankbar.

SERVERSTATISTIKEN:

  • Intel(R) Xeon(R) CPU E5530 @ 2,40 GHz
  • CPU-Kerne: 4
  • Speicher: 12293480 (12 GB)

Betriebssystem:

  • CentOS 5.5
  • Linux 2.6.18-274.12.1.el5 #1 SMP Dienstag, 29. November 2011, 13:37:46 EST x86_64 x86_64 x86_64 GNU/Linux

MEINE.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

Antwort1

  1. Sie sollten das MySQL-Fehlerprotokoll überprüfen

  2. ulimit -aÜberprüfen Sie, ob dieser Wert mit den geöffneten Dateien von übereinstimmt :

    int my.cnf 
    [mysqld_safe]
    open-files-limit = 8192
    

Antwort2

Ihre Konfiguration ist fehlerhaft.

Hier verwenden Sie diesWerkzeug. Es sagt Ihnen, wie viel Arbeitsspeicher (RAM) Sie für Ihre benutzerdefinierte Konfiguration benötigen.

Ihr aktueller RAM beträgt, wie Sie angegeben haben, 12GBaber Sie benötigen ihn 31.6GBfür 500 aktive MySQL-Verbindungen.

Session variables
max_allowed_packet 16.0 MB
sort_buffer_size 8.0 MB
net_buffer_length 16.0 KB
thread_stack 192.0 KB
read_rnd_buffer_size 16.0 MB
read_buffer_size 2.0 MBSession variables
max_allowed_packet 16.0 MB
sort_buffer_size 8.0 MB
net_buffer_length 16.0 KB
thread_stack 192.0 KB
read_rnd_buffer_size 16.0 MB
read_buffer_size 2.0 MB
join_buffer_size 8.0 MB
Total (per session)50.2 MB
Global variables
innodb_log_buffer_size 1.0 MB
query_cache_size 64.0 MB
innodb_buffer_pool_size 7.0 GB
innodb_additional_mem_pool_size 16.0 MB
key_buffer_size 32.0 MB
Total 7.1 GB
Total memory needed (for 500 connections): 31.6 GB

verwandte Informationen