MariaDB / Columnstore 엔진 메모리가 조이는 현상
우리는 컬럼 스토어 엔진과 함께 mariadb를 설치했고 지난 몇 주 동안 메모리가 막히고 모든 DML/DDL 작업이 막히는 메모리 초킹 문제에 직면해 있습니다. 서비스를 다시 시작한 후 수정됩니다.
below are the stats :
total used free shared buff/cache available
Mem: 15 2 7 0 5 12
Swap: 4 0 4
[mysqld]
port = 3306
socket = /opt/evolv/mariadb/columnstore/mysql/lib/mysql/mysql.sock
datadir = /opt/evolv/mariadb/columnstore/mysql/db
skip-external-locking
key_buffer_size = 512M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 64M
read_buffer_size = 64M
read_rnd_buffer_size = 512M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 0
# Try number of CPU's*2 for thread_concurrency
#thread_concurrency = 8
thread_stack = 512K
lower_case_table_names=1
group_concat_max_len=512
infinidb_use_import_for_batchinsert=1
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
innodb_buffer_pool_size = 8192M
#innodb_additional_mem_pool_size = 20M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 100M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
여기에 분석이 있습니다.VARIABLES
( suspic우스적인)GLOBAL STATUS
; 흥미로운 것은 없습니다.
관측치:
- 버전: 10.1.26-마리아DB
- RAM 15GB
- 업타임 = 03:04:25; 몇시간 후에 SHOW GLOBAL STATUS를 다시 실행해주세요.
- 이게 SHOW GLOBAL STATUS였나요?
- Windows에서 실행되고 있지 않습니다.
- 64비트 버전 실행 중
- 전체(또는 대부분) InnoDB를 실행하고 있는 것 같습니다.
더 중요한 문제:
업타임 = 03:04:25; 몇시간 후에 SHOW GLOBAL STATUS를 다시 실행해주세요.
이게 SHOW GLOBAL STATUS였나요?
key_buffer_size
크기가 지나치게 큽니다(3G).마이 아이샘이 필요없으시면 50M로 설정해주세요.
확인.infinidb_um_mem_limit
사용자의 애플리케이션에 적합한지 확인합니다.
내리는것을 제안합니다.innodb_buffer_pool_size
"초킹"이 밝혀질 때까지 2G로 전송할 수 있습니다.
세부사항 및 기타 관측치: ( (key_buffer_size - 1.2 * Key_blocks_used * 1024) / _ram ) = (3072M - 1.2 * 0 * 1024) / 15360M = 20.0%
-- key_buffer에서 낭비된 RAM 비율입니다. -- key_buffer_size를 줄입니다.
( Key_blocks_used * 1024 / key_buffer_size ) = 0 * 1024 / 3072M = 0
-- key_buffer 사용 비율입니다.하이워터마크. -- 불필요한 메모리 사용을 방지하기 위해 키_버퍼_크기를 낮춥니다.
( innodb_buffer_pool_size / _ram ) = 6144M / 15360M = 40.0%
-- InnoDB 버퍼_pool에 사용된 RAM 비율(%)
( Innodb_buffer_pool_pages_free * 16384 / innodb_buffer_pool_size ) = 392,768 * 16384 / 6144M = 99.9%
-- 버퍼 풀 없음
( innodb_print_all_deadlocks ) = innodb_print_all_deadlocks = OFF
-- 모든 데드락을 기록할지 여부. - 데드락에 시달리고 있다면, 이 설정을 실행합니다.주의:데드락이 많은 경우 디스크에 많이 쓸 수 있습니다.
( local_infile ) = local_infile = ON
-- local_infile = ON은 잠재적인 보안 문제입니다.
( expire_logs_days ) = 0
-- binlog를 자동으로 삭제하는 시간(이 며칠 후) - 너무 크거나(또는 0) = 디스크 공간을 소비합니다. 너무 작으면 = 네트워크/시스템 충돌에 신속하게 대응해야 합니다. (log_bin = OFF인 경우에는 관련 없음)
( long_query_time ) = 5
-- "느린" 쿼리를 정의하기 위한 컷오프(초) -- 제안 2
비정상적으로 큼:
read_buffer_size = 32MB
Acl_database_grants = 780
Acl_proxy_users = 4
Acl_users = 281
Columstore.xml
메모리의 95%?
<MemoryCheckPercent>95</MemoryCheckPercent> <!-- Max real memory to limit growth of buffers to -->
<DataFileLog>OFF</DataFileLog>
댓글로 남겨놨기 때문에 이건 상관이 없는 것 같은데요?
<!-- enable if you want to limit how much memory may be used for hdfs read/write memory buffers.
<hdfsRdwrBufferMaxSize>8G</hdfsRdwrBufferMaxSize>
-->
Columnstore 이외의 MySQL은 많은 메모리를 사용합니다.
<TotalUmMemory>25%</TotalUmMemory>
<TotalPmUmMemory>10%</TotalPmUmMemory>
언급URL : https://stackoverflow.com/questions/52994610/mariadb-columnstore-engine-memory-getting-chocked
'programing' 카테고리의 다른 글
구글은 AJAX 콘텐츠를 크롤링합니까? (0) | 2023.11.05 |
---|---|
자바스크립트의 익명 함수에 인수를 전달하려면 어떻게 해야 합니까? (0) | 2023.11.05 |
Word press - polylang으로 두 번의 포스트 번역을 수동으로 연결합니다. (0) | 2023.11.05 |
오류 시 디버거를 입력할 수 있는 방법이 있습니까? (0) | 2023.11.05 |
MySQL - 가장 쉬운 방법으로 마지막으로 삽입한 행 선택 (0) | 2023.11.05 |