我试着在库伯奈特斯运行一个基本的MySQL 8舱。我在没有任何资源限制的情况下做了基本部署。我注意到内存消耗很高。我有一个几乎是空的数据库(我认为有最多100行的基本数据),而且这个pod占用了750米的内存。
你能做些什么吗?
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最佳皮姆
发布于 2020-04-23 17:12:49
为了减少消耗,我所做的主要是禁用性能模式。此外,我还减少了默认连接限制,以确保它不会为那些未被使用的人保留内存。
这确实意味着,如果有更多的用户,它可能会崩溃,但我想这是对其中之一的猜测。
对所有的人进行适当的监控就可以了。
发布于 2020-04-21 08:41:04
我刚刚用MySQL运行了一个码头容器,它消耗了大约400米的内存和一个没有被某些应用程序查询的空数据库。
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根据这一评估,在我看来,7.5亿似乎没有那么多。
您可以查看这些配置最佳MySQL内存使用的最佳实践。
发布于 2020-04-21 12:04:56
今后,请添加更多关于您的环境(本地、kubeadm、minikube、cloud)和场景的信息。这样可以更容易地复制或排除故障。
我不会说750M内存消耗很高。为了进行测试,我使用基于MySQL 8.0的HELM在GKE集群上部署了这张图表。我只将默认的MySql映像版本更改为8.0。
$ helm install sql stable/mysql
MySQL在我的集群上的纯实例,没有任何limits、requests或数据:
$ kubectl top pods
NAME CPU(cores) MEMORY(bytes)
sql-mysql-6c9489d5b9-m8zmh 8m 376Mi因此,如果MySQL与实际数据一起工作,那么消耗更多资源是正常的。
我会说这是正常行为。
对于在MySql中使用的一般资源,您可以检查MySQL如何使用内存。
但是,如果您在本地环境中使用有限的资源,则应该在YAML中指定限制。
https://stackoverflow.com/questions/61338318
复制相似问题