我对服务器性能调整等了解甚少......所以我想我会把它放在这里,因为我开始对它进行一些研究,只是为了得到一些指导。
我正在将旧服务器迁移到新服务器 - 两台都是 64 位机器。一台是几年前的,另一台是全新的(PowerEdge R410)。
旧服务器规格为:2 个 CPU、3.4GHz Pentium、8G RAM,当前安装 Fedora 11
新服务器的规格为:16 个 CPU、3.2 GHz Xeon、16G RAM、安装 CentOS 6.2。新服务器上还有 RAID10 - 旧服务器上没有 RAID。
两台服务器当前具有相同的数据库(MySQL),并且迁移了相同的数据。
我编写了一个 Perl 脚本,它简单地遍历数据库中表的每一行(大约 18000 行)并更新该行中的值。表中的每一行都会更新。
出于好奇,我在两台机器上运行了这个 perl 脚本,只是想看看新服务器与旧服务器的性能相比如何,结果很有趣:旧服务器的完成速度是新服务器的两倍。
查看数据库,两个配置完全相同(新的是旧的转储......)...
有人知道为什么会出现这种情况,因为两者之间的硬件差距很大吗?
正如我所说的,我即将开始进行一些挖掘,但我认为我应该把它放在这里,也许可以得到一些好的方向......
提前谢谢了..
编辑:26/9 感谢回复。有人还有其他建议吗?奇怪的是,只有在运行 perl 脚本时,我才看到旧服务器的性能优于新服务器 - 所有其他测试都显示新服务器遥遥领先...
编辑:27/9 好的,我使用 Perls 基准测试了一些基准测试,发现当我进行简单的数字运算测试时,新服务器的表现优于旧服务器,但是在与数据库交互时,旧服务器的表现要好得多。
旧服务器:
开始数字运算测试:timethis 200000:8 挂钟秒(7.51 usr + 0.00 sys = 7.51 CPU)@ 26631.16/s(n=200000)结束数字运算测试:
开始 DB 测试:timethis 20000:163 挂钟秒(9.72 usr + 2.78 sys = 12.50 CPU)@ 1600.00/s(n=20000)结束 DB 测试:
新服务器:
开始数字运算测试:timethis 200000:4 挂钟秒(4.53 usr + 0.00 sys = 4.53 CPU)@ 44150.11/s(n=200000)结束数字运算测试。
开始 DB 测试:timethis 20000:380 挂钟秒(0.86 usr + 0.31 sys = 1.17 CPU)@ 17094.02/s(n=20000)结束 DB 测试:
您可以清楚地看到,新服务器每秒执行的计算量比旧服务器要多,但是在数据库测试(只是更新表中的行)方面仍然需要更长的时间(长很多)。
既然 mysqlslap 显示新服务器的性能优于旧服务器,那么我说问题似乎出在 Perl 与数据库的交互(使用 DBI)上,这样说对吗?另外,如上所述,我使用 PHP 进行了相同的测试,新服务器的性能更好,因此问题似乎出在 Perl 上,特别是当它与数据库交互时。
有人有什么想法吗?
干杯
答案1
数据库操作根本不是多核的,你有 16 个核心,但 mysql 不使用它。你应该一起使用多个表,而不是只在一个表上进行大操作。
raid0 使用什么硬件?(控制器、磁盘)