我对 Percona/数据库服务器还很陌生,我不知道如何解决以下问题。
几天前,我用更优越的硬件升级了 Percona 集群(3 个节点)服务器的硬件。
以前硬件的规格:
Vendor: OEM
cpu: i7-3930K 3.2 GHz(12 cores)
RAM: 64G (8 x 8GB DIMM DDR3 1334Mhz)
I/O: software RAID
新硬件规格:
Vendor: DELL PowerEdge™ R730 DX291
cpu: Intel(R) Xeon(R) CPU E5-2630v3 2.4GHz (32 cores)
RAM: 128G (8 x 16GB DIMM DDR4 1866Mhz)
I/O: Hardware raid ( raid10 - 1024M Non-Volatile cache - Adaptive Read Ahead - Writeback)
数据库工作负载:
writes (inserts-updates): 25 per second
reads (select): 350 per second
服务器之间的差异很大,我原本期望 percona(mysql)的性能会显著提升,然而在查看了 new relic 的各种统计数据后,我注意到了相反的情况。
例如,一些查询的响应时间从 2ms 增加到了 6ms。其他一些选择查询的查询时间从 50ms 增加到了 75ms。
有什么想法可以解决这个问题吗?
答案1
首先,如果不更好地了解您的工作负载和手头的硬件,很难回答您的问题。例如:
- 您的工作负载是以读取为中心还是以写入为中心?
- 您的硬件 RAID 有非易失性写入缓存吗?如果有,它配置为回写模式还是直写模式?
- 您的 DRAM 模块速度是多少?
- 等等...
无论如何,让我们做一些有根据的猜测:我想象您的工作负载以读取为中心,并且 Xeon 的 RAM 是密度更高但速度更低的版本。如果是这样,您可能会受到以下因素的影响:
- 时钟频率较低:i7-3930k 具有 3.2/3.8 GHz 速度(基本/涡轮),而 Xeon 2630v3 运行频率较低,为 2.4/3.2 GHz
- 内存速度较慢:由于密度和 ECC 要求较高,Xeon 延迟应该明显高于 i7
- 双插槽与单插槽:为了获得最大性能,需要仔细调整多插槽系统以避免不必要的进程迁移、缓存破坏、多余的远程节点内存访问等。
换句话说,你需要跟踪应用程序的特定需求前改变集群基础设施。否则,您可能会冒着购买高吞吐量硬件的风险,而实际上您需要的是低延迟硬件,反之亦然。