MySQL 설정 최적화-mysqld 메모리 부족


15

내 서버에 최적화하기 위해 my.conf 파일에서 어떤 설정을 변경해야하는지 약간 혼란스러워합니다 (MySQL 서버는 트래픽이 많아서 계속 충돌합니다).

다음은 my.cnf 파일입니다.

[mysqld]

user            = mysql
pid-file        = /var/run/mysqld/mysqld.pid
socket          = /var/run/mysqld/mysqld.sock
port            = 3306
basedir         = /usr
datadir         = /var/lib/mysql
tmpdir          = /tmp
lc-messages-dir = /usr/share/mysql
skip-external-locking

key_buffer              = 16M
max_allowed_packet      = 16M
myisam-recover         = BACKUP
#max_connections        = 100
#table_cache            = 64
#thread_concurrency     = 10

query_cache_limit       = 1M
query_cache_size        = 16M

그리고 서버 사양은 다음과 같습니다.

CPU Cores   2 cores
RAM (Memory)    1GB
SSD (Disk Space)    20GB

우분투 12.04 LTS 실행

내 파티션은 다음과 같습니다.

NAME   FSTYPE   SIZE MOUNTPOINT LABEL
vda              20G            
├─vda1 ext4     476M /boot      
├─vda2 swap     477M [SWAP]     
└─vda3 ext4    19.1G / 

도움을 주시면 감사하겠습니다.

오류 로그를 보면 mysqld에 메모리가 부족하다는 것을 알 수 있습니다.

Feb 17 11:02:06 111488 kernel: [8276839.559141] Out of memory: Kill process 20719 (mysqld) score 75 or sacrifice child
Feb 17 11:02:06 111488 kernel: [8276839.559209] Killed process 20719 (mysqld) total-vm:1347424kB, anon-rss:30524kB, file-rss:0kB

답변:


10

serverguide wiki의 일반적인 답변 :

MySQL 튜너 mysqltuner 설치

MySQL Tuner는 실행중인 MySQL 인스턴스에 연결하고 워크로드에 가장 적합한 구성 방법에 대한 제안을 제공하는 유용한 도구입니다. 서버가 오래 실행 될수록 mysqltuner가 제공 할 수있는 조언이 더 좋습니다. 프로덕션 환경에서는 도구를 실행하기 전에 24 시간 이상 기다리십시오. 우분투 저장소에서 mysqltuner를 설치할 수 있습니다 :

sudo apt-get install mysqltuner

그런 다음 설치되면 실행하십시오.

 mysqltuner

최종 보고서를 기다리십시오. 상단 섹션은 데이터베이스 서버에 대한 일반적인 정보를 제공하고 하단 섹션은 my.cnf에서 변경할 튜닝 제안을 제공합니다. 이들 중 대부분은 다시 시작하지 않고 서버에서 실시간으로 변경 될 수 있습니다. 공식 MySQL 문서 (참고 자료 섹션의 링크)를 통해 프로덕션 환경에서 변경 될 관련 변수를 확인하십시오. 다음은 쿼리 캐시 양을 늘리면 이점이있을 수 있음을 보여주는 프로덕션 데이터베이스의 예제 보고서 중 일부입니다.

-------- 권장 사항 ----------------------------------------- ------------
일반적인 권장 사항 :
    성능 향상을 위해 OPTIMIZE TABLE을 실행하여 테이블 조각 모음
    파일 디스크립터 한계를 피하기 위해 점차 table_cache를 늘리십시오.
조정할 변수 :
    key_buffer_size (> 1.4G)
    query_cache_size (> 32M)
    table_cache (> 64)
    innodb_buffer_pool_size (> = 22G)

데이터베이스 튜닝에 대한 마지막 의견 : 특정 설정이 최고라고 말할 수 있지만 성능은 응용 프로그램마다 다를 수 있습니다. 예를 들어, Wordpress에 가장 적합한 것은 Drupal, Joomla 또는 독점 응용 프로그램에 적합하지 않을 수 있습니다. 성능은 쿼리 유형, 인덱스 사용, 데이터베이스 디자인의 효율성 등에 달려 있습니다. 사용중인 응용 프로그램에 따라 데이터베이스 튜닝 팁을 검색하는 데 시간이 많이 도움이 될 수 있습니다. 특정 지점을 지나면 약간의 조정 만 수행하면 응용 프로그램을 개선하거나보다 강력한 하드웨어를 사용하거나 슬레이브 서버를 추가하여 데이터베이스 환경을 확장하는 것이 좋습니다.


  • mysqltuner 보고서의 성능 지표 섹션을보십시오. 가능한 최대 메모리를 50 % 미만으로 유지하십시오.
  • tmp_table_size, max_heap_table_size variable: 동일하고 높게 유지하십시오.
  • join_buffer_size, 소량 증가; 을 곱합니다 max_connections.
  • innodb_buffer_pool_size. 그것을 높이 만드십시오.


0

도커 작성을위한 해상도

mysql:
    volumes:
        - ./config/mysql/my.cnf:/etc/mysql/conf.d/my.cnf

구성 내용 ./config/mysql/my.cnf

[mysqld]
performance_schema = off
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.