记生产环境的又一次bug

博客详细记录了一个由代码中不当使用System.gc()引起的CPU使用率高和频繁垃圾回收(GC)的问题。通过调整代码并禁用特定服务,成功解决了系统性能瓶颈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

距离上一次大bug过去了两三个月, 稳定了一段时间后, 最近出现的bug情况是:

            堆使用正常, 线程正常, tomcat 日志也正常没报错。   但是cpu使用率频繁百分之百, 频繁gc.导致用户反应程序使用时会卡顿。 。

现象为:

              jvm 参数设置为: 最大堆 -Xmx4096m,初始化 -Xms4096m, 新生代 -Xmn2048m,   GC回收器是  CMS.

 新生代内存是 一个   eden + survivor,   默认比例是 8:1, eden区内存大小为: 1658112kb,  survivor区内存大小为:207232kb.

内存分配及使用这一块是没什么问题, 然后加上   -XX:+PrintGCDateStamps -XX:+PrintGCDetails  -Xloggc:/soft/gclog/gc.log

打印gc的日志分析后,找到了原因: 

     同事在代码的catch中  加入了   system.gc   方法。 这个接口是第三方接口,调用有时候会报错。 所以导致  发生  full  gc,   

     而  full  gc  是会触发   stw (stop-the- word) ,也就是 在full gc时  会让应用程序停顿。 所以会导致  cpu 百分之百, 频繁gc.

 

解决方法就是: 将代码中的System.gc 注释, 然后将备机的 tomcat的war包下载, 替换 class后上传到tomcat.  在备机重启后。在dubbo-admin中将这个接口服务的主机服务禁用, 主备机接口调用全都 调用备机的。

 

gc日志:

 

 

新生区的  eden区:

  

 

新生区的  survivor区: 

 

在备机重启后的状态就恢复正常:

 

 

 

 

 

 

 

 

 

<think>好的,我现在需要帮用户编写一个关于输入框的bug报告。首先,用户的具体需求是希望根据bug出现的版本、环境、步骤、预期结果和实际结果来编写报告。我需要确保这些部分都涵盖到,并且结构清晰。 首先,用户可能是在测试一个软件或应用时遇到了输入框的问题,比如无法输入、格式错误或者提交异常等。作为测试人员或开发人员,他们需要一份规范的bug报告来跟踪和修复问题。用户可能希望这个报告足够详细,方便其他人复现问题,并理解问题的影响。 接下来,我需要确定bug报告的标准格式。通常包括标题、版本、环境、步骤、预期结果、实际结果、优先级、附件等部分。标题需要简洁明确,比如“输入框特殊字符处理异常导致数据提交失败”。版本号要具体,比如v2.3.1。环境部分需要涵盖操作系统、浏览器、设备等,确保覆盖不同的测试环境。 出现的步骤需要详细且步骤分明,确保其他人能按照步骤复现bug。例如,第一步打开页面,第二步输入特定字符,第三步点击提交等。预期结果和实际结果要对比明确,突出bug的影响。比如预期是正常提交,实际却出现错误提示。 还需要考虑优先级,根据问题的严重程度来划分,比如P1表示严重问题。附件部分可能需要截图或日志,帮助开发定位问题。可能用户没有提到,但附加信息如重现频率、是否必现等也是有用的。 另外,用户可能希望报告专业且易于理解,避免使用技术术语过多,但又要足够详细。需要检查是否有遗漏的部分,比如是否在特定浏览器或设备上才会出现,是否需要更多的测试数据支持。 最后,确保整个报告结构清晰,用列表和分点来组织内容,方便阅读。可能需要提醒用户根据实际情况调整内容,比如版本号或测试环境的具体信息。同时,注意模板的通用性,适用于不同的输入框bug,用户可以根据具体情况修改细节。</think>以下是一个标准化的输入框Bug报告模板,包含关键要素及示例说明: --- ### **Bug报告:输入框特殊字符处理异常导致数据提交失败** #### **1. 影响版本** `v2.3.1`(仅限生产环境构建版本) #### **2. 出现环境** ```markdown - 操作系统:Windows 11 22H2 / macOS Ventura 13.4 - 浏览器:Chrome 115.0.5790.110 / Safari 16.5 - 设备类型:PC端(移动端无此问题) ``` #### **3. 复现步骤** ```python 1. 访问用户注册页:https://example.com/signup 2. 在「用户名」输入框键入:`test_user@2023#` 3. 其他字段填写有效内容(如邮箱、密码) 4. 点击「提交」按钮 ``` #### **4. 预期结果** ```json { "状态": "提交成功,跳转至个人中心页", "数据校验规则": "允许包含@/#等特殊字符(符合RFC 5322标准)" } ``` #### **5. 实际结果** ```diff - 错误提示:”用户名包含非法字符,仅允许字母和数字” - 控制台报错:Uncaught SyntaxError: Invalid regular expression - 网络请求:未触发/submit API调用 ``` #### **6. 优先级评估** `P1`(阻塞核心流程,影响20%用户注册) #### **7. 附加证据** ```markdown - 截图:[输入框报错截图链接] - 日志:[2023-08-20_15:23_error.log] - 测试数据:复现率100%(5/5次尝试均失败) ``` --- #### **关键分析维度** | 维度 | 说明 | |-------|--------| | **前端校验缺陷** | 正则表达式未兼容RFC标准符号 | | **服务端同步问题** | 前端校验与服务端规则不一致 | | **错误提示误导** | 实际允许字符与提示文案矛盾 | --- **报告撰写建议**: 1. 若涉及敏感信息(如URL),需进行脱敏处理 2. 复杂场景建议补充Fiddler/Charles抓包数据 3. 需明确标注是否影响历史数据(本例仅影响新注册用户) 此模板可直接用于Jira/Tapd等项目管理平台。根据实际测试结果调整参数即可生成规范化的缺陷追踪录。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值