MySQL은 약 25일마다 운영 체제에 의해 종료됩니다.

MySQL은 약 25일마다 운영 체제에 의해 종료됩니다.

우리는 약 4개월 전에 시작했습니다.마이크로소프트 SQL 서버도착하다MySQL 5.5. 그 이후로 CentOS의 메모리 부족 문제와 MySQL이 약 25일마다 종료되는 문제가 발생했습니다. MySQL은 mysql을 안전하게 다시 시작하므로 데이터베이스는 1~2분 동안만 완전히 종료되지만 CentOS가 mysqld 스레드를 종료하기 전에 몇 시간 동안 성능 및 연결 손실이 발생할 수 있습니다.

우리는 일반적으로 오전 1시에서 오전 5시 사이에 문제를 봅니다., 하지만 교통량이 가장 많은 낮에는 절대 그렇지 않습니다. 이것이 바로 이 상황에 대해 정말 혼란스러운 부분입니다. 연결 및 성능 문제는 일반적으로 오전 1시에서 5시 사이에 발생하지만 mysql 서버는 일반적으로 mysqldump가 실행되는 오전 4시 또는 5시쯤 종료됩니다.

우리는 mysqldump이것이 범인일지도 모른다고 생각합니다. 그러나 매일 오전 4시에 시작되었지만 어떤 밤에는 새벽 1시에 문제가 발견되었습니다. 또한 mysqldump스위치와 함께 실행되므로 --opt덤프 중에 많은 양의 데이터가 버퍼링되지 않아야 합니다.

또한 덤프 파일을 가져와서 테이프에 백업하는 백업 응용 프로그램도 고려했습니다. 런타임을 오전 6시로 변경했는데 문제는 바뀌지 않았습니다.

밤새 주기적으로 실행되는 작업이 여러 개 있지만 그 중 리소스를 많이 사용하지 않고 실행하는 데 시간이 오래 걸리지 않습니다.

다음은 우리가 작업 중인 작업과 my.cnf파일의 현재 항목에 대한 일부 통계입니다. 우리가 시도할 수 있는 것에 대한 도움이나 조언을 주시면 감사하겠습니다.

서버 통계:

  • 인텔(R) 제온(R) CPU E5530 @ 2.40GHz
  • CPU 코어 수: 4
  • 메모리: 12293480(12GB)

운영 체제:

  • 센트OS 5.5
  • Linux 2.6.18-274.12.1.el5 #1 SMP Tue Nov 29 13:37:46 EST 2011 x86_64 x86_64 x86_64 GNU/Linux

내 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

답변1

  1. MySQL 오류 로그를 확인해야 합니다.

  2. ulimit -a값이 열린 파일과 동일한지 확인하십시오.

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

답변2

구성에 문제가 있습니다.

여기를 사용하세요도구. 사용자 정의 구성에 필요한 RAM 용량을 알려주나요?

언급한 대로 현재 RAM은 괜찮지 만 500개의 활성 MySQL 연결이 12GB필요합니다 .31.6GB

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

관련 정보