Sonar 是一套专门为企业设计的代码质量管理系统,之前尚未有人将它应用在互联网之上。而开源中国做了第一个吃螃蟹的人后,便遇到各种“坑”,其中最大的坑(这个坑估计是原子弹砸出来的)迫使我们不得不下线 Sonar@OSC 服务,将之转成只读状态。经过同事们整整一个星期的辛苦处理后,目前 Sonar@OSC 服务已经重新上线。
简单描述一下这个大坑:
之前由于估计不足,我们并不认为 Sonar 会对数据库造成多大压力,因此将 Sonar 的数据库和 OSC 的主数据库放在同一个 MySQL 服务器上。之后我们发现 OSC 主站访问经常卡得很厉害,检查了各个环节没有找到原因。该现象一直持续了两三天,直到我执行了 du -sh sonardb 命令之后才发现 sonardb 数据库目录将近 200G!这TM才几天啊,查看了 Sonar@OSC 的项目也才一千多个,为了不影响 OSC 主站的运行,只好暂时将 Sonar@OSC 下线,变成只读状态。
填坑:
下线之后深入了解 Sonar 的数据库,共有三四个表的 size 在 30G 以上,其中一个表的 size 超过 100G,记录数最多的表达 2 亿条数据。OSC 的数据库服务器只能应对 OSC 本身的数据存储要求,磁盘空间不足以支撑如此爆炸式的增长。
接下来就是迁移 Sonar 数据库到新的机器上,简化代码检测策略等诸多措施,其目的是将这个大坑变成一个极小坑,然后通过硬件上的支持去填掉它!哦耶!
当然,接下来我们还会进一步完善该平台,敬请期待!
好了,如果你还不熟悉 Sonar@OSC 的,可以查看 Git 的代码质量检查示例: