0%

问题及其罪魁祸首

WEB服务器: apache-tomcat-8.0.33 JDK: jdk1.8.0_66 **操作系统: Linux SHB-L0064049 2.6.32-642.6.2.el6.x86_6 **

运维反馈CPU抖动异常,如下。

CPU时不时的会从0%抖动到50%,定位到时tomcat的热部署导致的问题。最终通过显式的加上reloadable=“false” 的配置解决了该问题。

注: 这里有一个坑,tomcat 的热部署默认是关闭的,具体请看[(文档)[http://tomcat.apache.org/tomcat-8.0-doc/config/context.html]] 中的reloadable说明, 然而我的服务器并没有显示配置reloadable 为true,tomcat却还是执行了对应的热部署相关的行为!

下面说说定位流程。

阅读全文 »

问题描述

简要说明下,系统是一个微信第第三方平台,用于托管微信公众号和小程序的。 在一个普普通通的晚上,19点开始有公众号管理员向我们反馈,托管在我们平台的公众号一直提示 “该公众号提供的服务出现异常,请稍后再试“。

问题排查

验证问题

自己去对应的公众号验证,发送消息,确确实实提示”该公众号提供的服务出现异常,请稍后再试“,影响到了公众号的正常服务。并且每次都是这个返回,说明服务其实是普遍性的异常了(这点其实挺重要,不过当时没引起注意)。

阅读全文 »

重构决定

  • 需要提前做好新旧系统的切换方案的规划
  • 要高度重视对数据的重构,对数据的调整和兼容是重中之重
  • 重构是为了解决实际的项目问题,而不只是作为程序员的一个代码洁癖。所以,需要对新系统有可以量化的指标(eg. 性能提升5个点、开发工作量减少30% 等)
  • 技术选型时,不要盲目最求新技术,需要尽量使用成熟、简单的方案,选择成熟简单的方案在遇到问题时多能在网上找到对应的解决方案。文档相对也会更完善。
阅读全文 »

为啥出现一致性问题

在传统单体架构中,数据状态的处理都在同一个服务和数据库中,而具有**ACID特性的数据库支持强一致性,就是说数据库本身是不会出现不一致的状态的,比如我们常用的关系型数据库MySQL就是通过多版本控制协议(MVCC)的实现来保证了强一致性。 但是随着互联网的发展,用户增多&服务也越来越多越来越复杂,数据量和请求的并发量都上来了。为了满足这一变化,越来越多的系统从单体架构投入到服务化或者微服务架构。然而,微服务是把双刃剑,虽然能通过对服务的有效拆分来实现敏捷开发和自动化部署,并提高系统的水兵伸缩能力;但是微服务模式下,服务之间通过网络来通信(**网络并不是可靠的),那么当网络异常时,就很容易引起各个系统之间的不一致。

阅读全文 »

问题描述

项目使用Jasperreports来转换导出PDF,不过在转换过程中有时会出现OOM的异常。将直接导致线上系统不可使用。主要导致OOM的问题有如下两种:

  1. jasper模板文件设计不合理导致Jasperreports进入死循环
  2. 需要转换的文件确实很大,超过了系统所支持的内存范围

此前就有遇到过上述情况导致系统不可用的情况,这明显影响了程序的健壮性。是需要处理的。此前对该的处理排查描述请查看之前的博文:线上java程序CPU占用过高问题排查

阅读全文 »