知识卡片
用开源项目:拒绝"拿来主义",深入研究、仔细测试
内容
很多人使用开源项目,其实是完完全全的”拿来主义”——看了几个Demo,把程序跑起来就直接部署上线,这就好像只看了一下开车指南、知道方向盘转向油门加速刹车减速,然后就开车上路了,非常危险。书中给出两个真实反例:某团队使用Elasticsearch时基本拿来就用,连倒排索引是什么都不太清楚,配置全用默认值,跑起来就上线了,结果遇到节点ping时间太长、剔除异常节点太慢,导致整站访问挂掉;很多团队最初使用MySQL时也没怎么研究过,经常抱怨MySQL太慢,但经过定位发现innodb_buffer_pool_size、sync_binlog、innodb_log_file_size等几个最关键的参数都没配置或配置错误,性能自然慢。真正应该做的深入研究和测试包括五个方面:通读开源项目的设计文档或白皮书,了解其设计原理;核对每个配置项的作用和影响,识别出关键配置项;进行多种场景的性能测试;进行压力测试,连续跑几天,观察CPU、内存、磁盘I/O等指标波动;进行故障测试,包括kill、断电、拔网线、重启100次以上、切换等各种极端场景。
参考来源
- 位置:《从零开始学架构》第48讲《再谈开源项目:如何选择、使用以及二次开发?》"用:如何使用开源项目"之"深入研究,仔细测试"(源文件:_epub-src/OEBPS/text00003.html)
- 结论依据:原文说明"我们有团队使用了 Elasticsearch,基本上是拿来就用,倒排索引是什么都不太清楚,配置都是用默认值……结果就遇到节点 ping 时间太长,剔除异常节点太慢,导致整站访问挂掉""发现最关键的几个参数(例如,innodb_buffer_pool_size、sync_binlog、innodb_log_file_size 等)都没有配置或者配置错误,性能当然会慢""通读开源项目的设计文档或者白皮书……核对每个配置项的作用和影响……进行多种场景的性能测试……进行压力测试……进行故障测试",直接支撑本卡结论。
- 原始内容:我们有团队使用了 Elasticsearch,基本上是拿来就用……结果就遇到节点 ping 时间太长,剔除异常节点太慢,导致整站访问挂掉……发现最关键的几个参数……都没有配置或者配置错误,性能当然会慢