大多数时候是软件的Bug,但是... 有时候的确是硬件的问题!
在我们性能最好的服务器中,有一台是从之前的64位测试项目中遗留下来的。那台机器配有皓龙250双核处理器,内存有8 GB。服役了一年之后,那种配置仍然是相当不错的。它还有贴心的升级方案可选:它的泰安Thunder K8W主板最多能支持16GB内存,也能支持最新的皓龙双核处理器。
然后,我们把这台机器配成了虚拟机,让它跑Windows Server 2003 x64。可是,我们碰到了一些诡异的情况:
- 虚拟服务器总是报告一种古怪的出错消息:“这台机器的一些节点没有本地内存。这可能导致虚拟机性能下降。”
- 这台机器时不时会自动重启。
这台服务器我们已经使用了一年多,之前从来没有碰到过这些问题。上述诡异现象是在我们改变它的用途后才开始出现的。
为了解决问题,我们采取的第一招是:将机器的BIOS升级到最新版本,并且确保我们为所有的64位芯片和平台安装了最新的驱动程序。在排除故障的过程中,这一步的成效首屈一指——这相当于给硬件吃了两片阿司匹林(解热镇痛药),并且设置了晨间的叫醒服务。果不其然,“这台机器的一些节点没有本地内存”的错误消失了。然而,纵然我们安装了最新的BIOS和驱动程序,这台机器还是时不时地在半夜重启。
到这时候,我开始怀疑是硬件问题了。排除硬件的稳定性故障可能比较困难。不过,如果用对了工具(比如Memtest86+和Prime95),你也许能事半功倍。
1. 用Memtest86+测试内存的稳定性
之所以用Memtest86+,是因为我们已经怀疑是内存问题了。Memtest86+不是诊断内存问题的唯一工具,但它可能是最出名的。微软也提供了类似的工具,用起来大同小异。Memtest86+在它的官方网站(http://www.memtest.org/#downiso)上有多种形式供用户下载。我们选择了ISO镜像,然后把它刻到一张CD上。用这张CD启动机器,测试随后就自动开始了。
检测完4GB的内存花了大概30~45分钟。在顶部右侧的进度条可以为你指示整个测试将运行多长时间。在一轮标准的测试过程中,总共会进行8次测试。注意了,在首次测试通过之后就会有报告输出!
2. 用Prime95测试CPU的稳定性
在电脑稳定性测试的众多工具中,我对Prime95情有独钟。让Prime95在你的电脑上跑一晚上,如果通不过,那你的机器肯定有硬件问题。(出问题的往往不是CPU本身,通常是与之相关的散热或电力供应设备的故障。)尽管Prime95主要测的是CPU,但它在内存测试方面也相当不错。你可以打开Options(选项)菜单,然后选择Torture Test(耐力测试)。
- 如果你只想测试CPU的稳定性,那就选择“Small FFTs”。
- 如果你想同时测CPU和内存的稳定性,那就选择“Blend”。
如果你的机器是双CPU的(或者有4个CPU),为了测到每个CPU,你必须运行Prime95的多个实例。最简单的方法就是把包含Prime95的文件夹复制多份,然后在各个独立的文件夹中运行Prime95的EXE文件。你可能想通过任务管理设置每个Prime95实例与所测CPU的关系,不过你大可以放心,调度程序会自动把所有CPU安排得妥妥当当。
一点小小的警告:当Prime95提示说“lots of RAM tested”(测试大量内存),他们可没开玩笑哦!我们的服务器只装了4 GB的内存,我们尝试了运行两个Prime95的实例,并且让它们工作在“Blend”(混合)模式下,结果我们差一点把虚拟内存文件撑爆了——两个实例都分配了6 GB的内存!
根据我的经验,如果你的CPU或内存不稳定,Prime95几乎会立即报错而停止工作。这对于故障排除来说是绝佳的,因为你很快就知道了问题的所在。如果你让Prime95在“SmallFFTs”模式下运行一个小时(而不出问题),很可能你的CPU就是没有问题。如果你让它跑一晚上都没事,那么CPU问题绝对可以排除在外。
回来再说说我们那台“任性的”服务器吧。Memtest86+诊断出来是“偶发的、间歇性内存问题”。但我们让Prime95在“Blend”模式下运行时,它总是立刻报错。而如果让Prime95切换到“Small FFTs”模式,即使我们启动两个实例,并让它们运行一个小时,结果还是安然无恙。很明显就是内存问题了!通过组合使用Memtest86+和Prime95,我们最终发现,我们的服务器在安装4 GB内存时非常稳定,而当我们把内存增加到8 GB时,机器就通不过测试了。
考虑到8GB大的内存对于虚拟服务器来说是至关重要的,我们不能通过减少内存来解决问题。直觉告诉我,我应该在BIOS里把内存速度从200MHz降到166 MHz。果然,Prime95和Memtest86+的测试都顺利通过了。
尽管软件是不可靠的(这已经臭名昭著了),但我们不能总是把矛头指向软件。有时候,你面对的确确实实是一个硬件问题。
大多数时候是软件的Bug,但是... 有时候的确是硬件的问题!的更多相关文章
- 软件测试之BUG分析定位概述(QA如何分析定位BUG)
你是否遇到这样的场景? QA发现问题后找到DEV说: 不好了,你的程序出问题了! DEV(追查半小时之后): 唉,是你们测试环境配置的问题 唉,是你们数据不一致 唉,是你们**程序版本不对 唉,是** ...
- 软件测试之BUG分析定位概述(QA如何分析定位BUG)【转自 https://blog.csdn.net/kaka1121/article/details/51538979】
你是否遇到这样的场景? QA发现问题后找到DEV说: 不好了,你的程序出问题了! DEV(追查半小时之后): 唉,是你们测试环境配置的问题 唉,是你们数据不一致 唉,是你们**程序版本不对 唉,是** ...
- 关于Linux Mint下的pluma软件打开txt文本文件有时候乱码的解决办法
解决方法: 1.在终端输入“dconf-editor”回车(见图2).(如果没有安装用“sudo apt-get install dconf-tools”安装.) 图2 2.展开org/gnome/g ...
- BUG克星:几款优秀的BUG跟踪管理软件
Bug管理是指对开发,测试,设计等过程中一系列活动过程中出现的bug问题给予纪录.审查.跟踪.分配.修改.验证.关闭.整理.分析.汇总以及删除等一系列活动状态的管理.,最后出相应图表统计,email通 ...
- 历史上的重大软件BUG启示录第9篇---微软的硬件尝试
(图片来源于网络) 2001年苹果公司发布第一代iPod,它的推出在当时引起了轰动,它拥有大容量存储空间和全新的操作方式,并且还非常漂亮(在当时看来),因此在市场上大受欢迎,苹果公司也因此赚的盆满钵满 ...
- 发现护考上机考试的一个bug:附软件截图(模拟软件)
目录: 一.文章主旨 二.问题发现的起因 三.bug(问题)描述 四.软件截图 五.我的思考 六.一点期盼 一.文章主旨: 2019年5月18.19.20日,又是一年一度的护资考试(上机考),考试前夕 ...
- FastDFS并发会有bug,其实我也不太信?- 一次并发问题的排查经历
前一段时间,业务部门同事反馈在一次生产服务器升级之后,POS消费上传小票业务偶现异常,上传小票业务有重试机制,有些重试三次也不会成功,他们排查了一下没有找到原因,希望架构部帮忙解决. 公司使用的是Fa ...
- 修改BUG心得
修改BUG心得 分类: 项目管理/CMMI2013-01-14 22:06 845人阅读 评论(0) 收藏 举报 目录(?)[-] 一 二 三 一. 1.写第一版时就杜绝这些的发生. 2.思维要开 ...
- 为什么程序员老在改 Bug,就不能一次改好吗?
程序员的日常三件事:写Bug.改Bug.背锅.连程序员都自我调侃道,为什么每天都在加班?因为我的眼里常含Bug. 但是真的有这么多Bug要改吗?就不能一次改完吗? 程序员听这问题后要拍键盘了,还!真! ...
随机推荐
- spring cloud 入门系列四:使用Hystrix 实现断路器进行服务容错保护
在微服务中,我们将系统拆分为很多个服务单元,各单元之间通过服务注册和订阅消费的方式进行相互依赖.但是如果有一些服务出现问题了会怎么样? 比如说有三个服务(ABC),A调用B,B调用C.由于网络延迟或C ...
- Hibernate异常之Integer转float(自动类型转换错误)
错误代码: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Float at org.hiber ...
- 03_OGNL
1.值栈: 解答Struts能够直接获取属性值: 原因:Struts并不是直接通过request隐式对象中获取,而是将整个对象封装到了ValueStack值栈中,直接匹配是否存在这个属性,找到了就取出 ...
- android JNI的.so库调用
在一篇博客中看到一篇文章,感觉描述的还可以: 在前面的博客中介绍的都是使用java开发Android应用,这篇博客将介绍java通过使用jni调用c语言做开发 为了更加形象的介绍jni,先观察下面的图 ...
- sublime text 2 解决错误 [Decode error - output not utf-8]
以win 10 为例, 找到文件C:\Users\xxzx\AppData\Roaming\Sublime Text 2\Packages\Python\Python.sublime-build 添加 ...
- Android开发技巧——大图裁剪
本篇内容是接上篇<Android开发技巧--定制仿微信图片裁剪控件> 的,先简单介绍对上篇所封装的裁剪控件的使用,再详细说明如何使用它进行大图裁剪,包括对旋转图片的裁剪. 裁剪控件的简单使 ...
- 【我的书】《Unity Shader入门精要》出版上市
重要的事 先说重要的事,就是我的书籍<Unity Shader入门精要>在经过无数次跳票后,终于出版上市了(泪目-)! 购买传送门: 亚马逊 当当 京东 截止到我写这篇文章的时候,京东是没 ...
- JAVA面向对象-----extends关键字
继承使用extends关键字实现 1:发现学生是人,工人是人.显然属于is a 的关系,is a就是继承. 2:谁继承谁? 学生继承人,发现学生里的成员变量,姓名和年龄,人里边也都进行了定义.有重 复 ...
- android view事件分发机制
首先我们先写个简单的例子来测试View的事件转发的流程~ 1.案例 为了更好的研究View的事件转发,我们自定以一个MyButton继承Button,然后把跟事件传播有关的方法进行复写,然后添加上日志 ...
- 4.0、Android Studio配置你的构建
Android构建系统编译你的app资源和源码并且打包到APK中,你可以用来测试,部署,签名和发布.Android Studio使用Gradle,一个高级的构建套件,来自动化和管理构建进程,同时可以允 ...