programing

MariaDB / Columnstore 엔진 메모리가 조이는 현상

newstyles 2023. 11. 5. 11:04

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