개발용 MySQL Docker 컨테이너의 메모리 소비가 크고 힘들었기 때문에 performance_schema를 무효로 하고 얼마나 줄어든지 조사한 메모
이하, 얼마나 줄어든지를 조사한 메모입니다.
※ 무효로 해 문제가 없는가 하는 점에 대해서는 단정을 피해(자세하지 않기 때문에), 이 기사에서는 무효로 했을 때에 얼마나 메모리 소비가 줄어든지 조사한 것에 대해서만 씁니다. 다만, 가볍게 조사한 한에서는, 장애의 조사나 퍼포먼스 튜닝을 하지 않는다면, 개발 용도에서는 무효로 해도 불편함은 없을 것 같았습니다.
결과
※ 이하, "ps"라고 쓰고 있는 것은 performance_schema 의 약어입니다.
부팅 후 메모리 사용량( docker stats
로 표시되는 값):
MySQL 버전
ps=ON(MiB)
ps = OFF(MiB)
5.6.61
464.6
59.8
5.7.34
194.3
62.7
8.0.24
335.9
118.6
5.6.61에서는 비활성화하여 88 % 감소했습니다
또한 5.7에서 성능 스키마의 메모리 소비가 상당히 개선되었음을 알 수 있습니다.
show engine performance_schema status
에서 성능 스키마 전체에서 메모리 사용량을 살펴보면 다음과 같아서 위에서 줄인 양과 거의 일치했습니다.
MySQL 버전
performance_schema.memory (MiB)
5.6.61
403.9
5.7.34
131.3
8.0.24
208.4
조사 방법
사용한 것
사용한 것
디렉토리 파일 배치
- (作業用ディレクトリ)
- sakira-db/
- 0_sakila-schema.sql
- 1_sakila-data.sql
- conf.d/
- my.cnf
conf.d/
와 sakila-db/
를 각각 마운트하고 로드했습니다. 아래 스크립트 참조.conf.d/my.cnf
[mysqld]
# デフォルトでは ON
performance_schema=OFF
조사용 스크립트
client.sh
#!/bin/bash
CONTAINER_NAME=mysql-sakila
docker exec -it -e MYSQL_PWD=root $CONTAINER_NAME \
mysql --protocol=tcp -uroot -Dsakila "$@"
restart.sh
#!/bin/bash
CONTAINER_NAME=mysql-sakila
TIMEOUT_SEC=120
# MYSQL_VER=5.6.51
# MYSQL_VER=5.7.34
MYSQL_VER=8.0.24
# 動いていたら止める
if (docker ps --format "{{.Names}}" | grep '^'${CONTAINER_NAME}'$' > /dev/null); then
docker stop $CONTAINER_NAME
fi
# mysqld 起動
docker run --rm -it \
-e MYSQL_ROOT_PASSWORD=root \
-v "$(pwd)/conf.d:/etc/mysql/conf.d" \
-v "$(pwd)/sakila-db:/docker-entrypoint-initdb.d" \
--name $CONTAINER_NAME \
-d \
mysql:$MYSQL_VER
# mysqld の起動完了を待って exit
for i in $(seq $TIMEOUT_SEC); do
if (./client.sh -e "select 1" > /dev/null 2>&1); then
printf "\n"
echo "ok"
exit 0
else
printf "."
sleep 1
fi
done
echo "failed"
exit 1
ps_info.sh
#!/bin/bash
set -o xtrace
./client.sh -e "
show variables like 'performance_schema'
"
# パフォーマンススキーマ全体でのメモリ使用量
./client.sh -e "
show engine performance_schema status
" | grep 'performance_schema.memory'
참고
Reference
이 문제에 관하여(개발용 MySQL Docker 컨테이너의 메모리 소비가 크고 힘들었기 때문에 performance_schema를 무효로 하고 얼마나 줄어든지 조사한 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sonota88/items/53df2b29ca77dad14122텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)