[草稿] 如何选择db服务器的硬件配置

如何根据业务规模来选择CPU、内存、磁盘、以及网络带宽,是一件复杂的事情。

一个最真实的评估,是建立一个接近真实业务应用的操作环境,进行各种压力测试,测算出不同的用户数量下,系统的响应时间和吞吐量,并得出当时服务器的各种资源的利用率情况,完成对硬件资源的整体评估。

[TOC]

cpu

  • 1、cpu 平均使用率建议维持在 20% 以下,以免业务高峰或突发请求把cpu拉满

  • 2、通常,建议cpu核数越多越好,若运行 SQL Server 还要考虑 License 的限制

注:SQL Server 2008 R2及以前,License 是按每处理器(Per Processor)计数,只计算物理处理器的数量,与物理处理器的内核数量无关。而 SQL Server 2012 及以后,License 是按每核(Per Core)计数,每2核(超线程之前的Core)为一个计费单位,同时计算物理CPU(插槽)的数量,单个插槽最低需要购买4核。

  • 3、业务方面,要考虑SQL逻辑的复杂性

  • 4、若是迁移老业务,则可以参考现有服务器的cpu平均使用率

例如,老服务器CPU(4 Cores)最近30天的平均使用率约40%,那么新机器则建议8 Cores(理论情况下,平均使用率应为20%)

内存

  • 1、由于数据库是内存型业务,本着将所有热点数据常驻内存的原则。通常,建议物理内存越大越好。
数据库大小 建议内存大小 解释
< 64 GB = DB大小 可以认为“所有数据都在内存中”
> 64 GB = DB大小 x 80% 可以认为“热点数据都在内存中”
  • 2、若用户连接数过多,也会占用大量内存

注:SQL Server 默认为每个用户连接分配约 (3 * network_packet_size + 94 kb) = 106 KB的内存(默认的数据包大小为 4 KB,由“网络数据包大小”配置选项控制),用来存放线程的数据结构和相关信息(参考内存管理体系结构)。假如2000个并发,则需要207 MB的内存。而 MySQL 建立一个连接需要多大内存,可参考公式:sort_buffer_size + join_buffer_size + read_buffer_size + read_rnd_buffer_size + thread_stack

磁盘

  • 1、磁盘的大小,要考虑数据库的存量大小和日增长量
  • 2、磁盘的性能,要满足iops、tps、连接数的要求
  • 3、关于磁盘设备,首推PCIe卡,如果是多块磁盘,磁盘阵列建议 RAID 10

以下是一份不同设备利用sqlio及diskspd压测的64K随机写(64K随机读更好)的性能数据:

设备类型 IOPS 吞吐量(64K随机写) 设备型号
SATA 机械盘 x 1 70^90 10 MB/s SATA 7400 rpm
SAS 机械盘 x 1 150^180 13 MB/s SAS 15000 rpm
SSD 800GB x 8 + RAID 10 27000 1700 MB/s Intel SATA SSD 800GB
PCIe卡 3.2 TB 65773 4110 MB/s Memblaze 3.2TB

网络

通常网络不存在性能瓶颈,遵循如下几点即可:

  • 1、性能考虑,建议万兆或光纤网卡,多网卡则配置bond。
  • 2、安全考虑,不建议开通公网地址
  • 3、管理考虑,建议双网卡,一个用于业务访问,一个用于数据备份
Copyright © www.sqlfans.cn 2023 All Right Reserved更新时间: 2022-09-19 11:13:37

results matching ""

    No results matching ""