我有几百台电脑在运行一个应用程序。在一台计算机上,我已经看到两个实例,其中一个位被错误地设置在我从 SQLite 中提取的某些字符串上。如果这是我的开发计算机,我会假设我在某个地方有错误,但肯定有一些安装在这一点上我会开始看到罕见的基于硬件的错误。
这当然取决于我进行了多少 IO,但是是否有任何经验法则可以判断何时有机会看到这种情况?例如,对于 TCP 数据包,this paper确定“大约 1600 万到 100 亿个数据包中有 1 个”会发生无声的、未被发现的损坏。
不幸的是,不太可能在有问题的机器上运行内存/磁盘检查器。
最佳答案
当我注意到奇怪的事情发生时,我的策略是:
- 检查代码是否有bug
- 检查所使用的库/工具(SQLite,此处)是否存在错误
- 检查编译器是否有bug
- 然后,并且只有在那时,检查硬件故障
在我长达 10 年的职业生涯中,99.99% 的错误都与软件相关。
希望这对您有所帮助。
关于sqlite - 硬件相关磁盘或内存损坏的可能性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/172219/