我的数据库已达到CPU利用率的100%,并且CPU数量的增加不再起作用。我应该考虑什么样的信息来创建我的谷歌云SQL?如何设置数据库配置?
我掌握的信息:
- 每天10-50分钟,我有120个请求/秒,CPU达到100%的利用率
- 在此关键时期内存使用量最大为2.5GB
- 存储使用率目前约为1.3GB
当前配置:
vCPUs: 10
Memory: 10 GB
SSD storage: 50 GB
不幸的是,没有一个神奇的公式可以确定正确的数据库大小。这是因为查询的负载是可变的——有些查询又小又简单,根本不需要时间,有些查询又复杂又庞大,需要大量资源才能完成。
通常有两种策略来处理高负载:减少负载(使用连接池、优化查询、缓存结果)或增加数据库的大小(添加额外的CPU、存储或读取副本)。
通常,当我们有CPU利用率时,这是因为CPU过载或我们在同一实例中有太多的数据库表。以下是谷歌文档提供的一些常见问题和修复:
如果CPU利用率在6小时内超过98%,则您的实例的大小不适合您的工作负载,并且不在SLA范围内。
如果一个实例上有10000个或更多的数据库表,可能会导致该实例没有响应或无法执行维护操作,并且该实例不在SLA范围内。
当CPU过载时,建议使用此文档在谷歌云控制台的实例详细信息页面上查看实例正在使用的可用CPU的百分比。
还建议监控您的CPU使用情况,并在指定阈值下接收警报,设置Stackdriver警报。
增加实例的CPU数量应该可以减少实例的压力。请注意,更改CPU需要重新启动实例。如果您的实例已经达到CPU的最大数量,请将数据库分片为多个实例。
谷歌有一篇非常有趣的文档,介绍了如何调查高利用率,并确定系统或用户任务是否导致了高CPU利用率。您可以使用它来对实例进行故障排除,并找出导致CPU利用率高的原因。