我在一个数据中心的同一机架上运行两台Dell R410服务器(位于负载均衡器后面)。 两者都有相同的硬件configuration,运行Ubuntu 10.4,安装了相同的软件包,并运行相同的Java Web服务器(没有其他负载),我看到两者之间的性能差异。
两个服务器的平均响应时间(以Java应用程序本身测量,没有networking延迟)的性能差异最为明显:其中一个比另一个快20-30%,非常一致。
我用dstat
弄清楚,如果有更多的上下文切换,IO,交换或任何东西,但我看不出有什么不同。 在相同的工作负载下(不交换,实际上没有IO),一台服务器上的CPU使用率和负载更高。
所以差别似乎主要是CPU的限制,但是使用sysbench
(所有其他负载closures)的一个简单的cpu基准确实产生了一个差异,只有6%。 所以也许不仅是CPU,还有内存性能。
到目前为止,我已经检查:
dmidecode
转储,并没有显示出差异) /proc/cpuinfo
,没有什么区别。 cpufreq-info
的输出,没有什么区别。 另外,几个月前我完全replace了RAM,没有任何影响。
我搞不清楚了。 我能做些什么来弄清楚是怎么回事?
更新 :耶! 现在两台服务器的性能都相同 这是jim_m_somewhere在注释中命名的“powershellCRAP”设置。 “电源pipe理”的BIOS选项在快速服务器上是“最高性能”,另一个是在“Active Power Controller”(Dell的默认设置)上。 显然我忘记了,两年前我做了这个设置,而我并没有在所有的服务器上这样做。 感谢大家的帮助!
两个想法,取决于你想要走多远这个:
交换两台服务器的磁盘,查看速度性能是否保留在硬件上或随软件移动。
比较/opt/dell/toolkit/bin/syscfg -o complete-bios-config.out
如果你能以某种方式欺骗这个软件包进行安装。
更多的可能性输出和差异:
这听起来像它可能是负载平衡器与我有关。 当你说“相同的工作量”,你如何衡量这一点?
您是否通过单独应用testing负载来直接对每个服务器进行基准testing?
或者您是否将一些负载应用于负载平衡器并在两台服务器上查看结果?
如果你正在做后者(通过负载均衡器测量两台服务器上的负载),负载均衡器可能不会在服务器之间精确均匀地分配工作负载(对于一对服务器,20%的偏差并不less见,具体取决于您的负载平衡器决定谁获得哪些请求),这导致一个服务器承担更多的负载,从而performance不佳。
(如果您直接对每个服务器进行基准testing,而不使用负载平衡器作为中介,并且您已经validation两个系统之间的每个组件都是相同的(根据制造商修订),那么我就处于亏损状态,我想不出任何其他相同的服务器之间的这种性能差异的可测量的原因)
尝试一些性能分析工具,像perf或像VisualVM这样的Java分析系统分析。
使用perf,您可以通过PID来分析正在运行的Java进程,或者对基准进行剖析。 看看这两个系统,看看慢速系统在哪里花费时间。
apt-get install linux-tools-common linux-tools
然后是这样的:
perf record -e cpu-cycles -p <pid>
要么
perf record -a -g <benchmark command>
然后
perf report
关于系统如何执行不同的几点想法:
环境:空气温度或气stream不同? 他们在机架吗? 我已经看到系统在不同的机架位置,由振动引起的性能不同。 每个机架都有不同的振动等级。 考虑到你说的几乎没有I / O被使用,这是不可能的。 但是由于机架部件的振动,我看到磁盘的写入速度减慢到2MB / sec。
硬件故障:任何硬件都可能出现故障。 使用分析来查看什么是缓慢的。 这可能是一个坏的CPU或芯片组,一个散热片没有正确连接,不平衡风扇引起振动,失败的风扇,即使是一个坏的PSU。 尝试交换易于交换的东西。
为什么没有人提出'sysprof'..?
这是它的devise目的。
或者ummm第二个想法…尝试在/etc/security/limits.conf中填充一些限制
试试两个。
如果你什么也得不到….你最有可能的安全问题或者是身体的缺陷。
另请参阅: 我的Linux服务器“创build的进程数”和“上下文切换”正在快速增长