MySQL ОЗУ использует модуль по умолчанию - PullRequest
0 голосов
/ 21 апреля 2020

Я пытаюсь запустить основную c MySQL 8 капсул в Кубернетесе. Я сделал базовое развертывание c без каких-либо ограничений ресурсов или чего бы то ни было. Что я замечаю, что потребление памяти высокое. У меня есть почти пустая база данных (я думаю, что есть максимум 100 строк с базовыми c данными), и модуль использует 750M памяти.

Есть ли что-нибудь, что вы можете с этим сделать?

apiVersion: apps/v1
kind: Deployment
metadata:
  name: db
  namespace: my-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app: db
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app: db
    spec:
      containers:
        - name: db
          image: mysql:8.0
          resources:
          env:
            - name: MYSQL_DATABASE
              value: mydb
            - name: MYSQL_USER
              value: myuser
            - name: MYSQL_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: secret
                  key: "DATABASE_PASSWORD"
          ports:
            - containerPort: 3306
              name: transport
              protocol: TCP
          volumeMounts:
            - name: db
              mountPath: /var/lib/mysql
              subPath: mysql
      volumes:
        - name: db
          persistentVolumeClaim:
            claimName: db

Best Pim

Ответы [ 3 ]

1 голос
/ 21 апреля 2020

В будущем, пожалуйста, добавьте больше информации о вашей среде (локально, kubeadm, minikube, cloud) и сценарии. Было бы проще воспроизвести или устранить неполадки.

Я бы не сказал, что 750M RAM - это высокое потребление. Для тестирования я развернул MySQL 8.0 на своем кластере GKE, используя HELM на основе этой диаграммы . Я только изменил MySql версию изображения по умолчанию на 8.0.

$ helm install sql stable/mysql

Чистый экземпляр MySQL в моем кластере без limits, requests или data:

$ kubectl top pods
NAME                         CPU(cores)   MEMORY(bytes)
sql-mysql-6c9489d5b9-m8zmh   8m           376Mi

Так что если MySQL работает с реальными данными, нормально потреблять больше ресурсов.

Я бы сказал, что это нормальное поведение.

Для общих ресурсов используйте в MySql вы можете проверить Как MySQL использует память .

Однако если вы работаете в локальной среде с некоторыми ограниченными ресурсами, вы должны указать Limits в ваших YAML .

1 голос
/ 21 апреля 2020

Я только что запустил контейнер docker с MySQL, и он потребляет ~ 400M ОЗУ с пустой базой данных, которая даже не запрашивается каким-либо приложением.

docker run -itd -e MYSQL_ROOT_PASSWORD=password mysql
docker stats
CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
a779ef705921        happy_lumiere       2.22%               373.4MiB / 1.943GiB   18.77%              1.05kB / 0B         0B / 0B             38

В соответствии с этим мне кажется, что 750M не так уж много.

Вы можете ознакомиться с этими рекомендациями по оптимальной настройке MySQL использования памяти .

0 голосов
/ 23 апреля 2020

Что я сделал, чтобы уменьшить потребление в основном, это отключить схему производительности. Кроме того, я уменьшил ограничение по умолчанию для подключения, чтобы гарантировать, что он не резервирует память для тех, кто не используется.

Это действительно будет означать, что он может разрушиться, если есть больше пользователей, но я думаю, это предположение в на одном из этих

  • больше кластера памяти или не удалось запустить его из-за исчерпания памяти плеера
  • достигнуть максимального предела соединения

Надлежащий контроль за всеми сделать трюк

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...