记自动化测试发现的一个因表空间不足引发的BUG

0  背景介绍

    这是一个BS架构的项目,数据库是SQL Server,前端浏览器呈现数据,操作数据。

1  现象介绍

    功能为发送消息,类似广播,相关人员在系统中都可以接收到。之前功能都正常,这两天跑自动化测试时,发现测试不通过。

    即:WO中的内部交流,用户A发送后,在编辑界面可以看到已发送内容;在内部交流小部件上未显示内容,切换WO或刷新,又显示正常。

    通过调用浏览器F12打开开发调试模式,未发现有报错,但发现少了一个接口请求。

2  重现

    此问题在开发测试环境中出现,后在生产预发布环境中去验证,但未重现。两套环境的代码完全相同,部分配置文件、硬件环境、数据库环境不同。

3  分析

  检查数据库日志,发现有报错:   

Foresight.Standard.Data.FIDbException:
“Could not allocate space for object 'dbo.MESSAGES_USER'.'idx_msgid_useriid' in database 'FORESIGHT_FLV_IICON004' 
because the 'PRIMARY' filegroup is full.
Create disk space by deleting unneeded files, dropping objects in the filegroup, 
adding additional files to the filegroup, or setting autogrowth on for existing files in the filegroup.”

  原来发送内部交流信息,在信息发送后,会计算有哪些用户会收到,数据库会插入相应的记录到表中,然后再在前端获取呈现;

  出现问题的原因是数据库对应表的空间不足,导致记录插入不进去,走不到下一步,所以前端页面上没有显示发送内容。

4  后记

    现在的系统架构越来越复杂,数据库、缓存、中间件、WEB服务器、前端、网络、消息管理队列等,当出现问题时,排查难度也增加,但只要理清业务逻辑、程序逻辑、对资源、日志有监控,处理起来也会事半功倍。

你可能感兴趣的:(bug,运维)