Java
文章平均质量分 65
Damon__Wang
这个作者很懒,什么都没留下…
展开
-
抢购活动引起反压
系统做类似秒杀的活动,在18点开启。主要针对已登录用户。根据监控,该时间段大概有19万用户同时在线。在准点开启时,突然用户侧报警群中出现有异常。开始紧急排查。观察本身系统监控、日志正常,说明是从入口处到系统处有异常。观察NG的日志,发现有大量的504。504通常用来被用于反压统一标准错误码。说明有大量请求被反压,无法进入系统。系统当前总流量,未见明显徒增。瞬间流量打到了8万5,大概有3000多流量被504拦截。使用的undertow的容器...原创 2021-11-26 18:55:58 · 1174 阅读 · 0 评论 -
手把手看监控-redis连接数突然增加
背景早晨9点26,接口的95突然升高-报警-自动恢复。再看其他监控,发现限流redis在同一时间也有突然升高。再看该redis的情况,发现再9点26,突然的连接数增高了10倍。什么情况下会造成连接数突然增高,又回归平静?1、问:流量突然增加,用到限流redis,导致连接数增高。 答:根据监控,在早晨没有行情。2、问:是否有其他项目用到了该redis,其他项目有流量导致。 答:本组有两个项目使用该redis,检查都没有量。给运维建t...原创 2020-05-26 10:58:59 · 1786 阅读 · 2 评论 -
手把手看监控--当不设置JVM-Xms时
背景:运维埋的一个坑,在该应用上只配置留-Xmx,没有配置-Xms。表象:堆内存从0.2G开始,最大到0.8G,就开始执行GC,导致频繁GC,大致间隔1分钟/次。从下图左侧即可看到。解决:增加-Xms重新发版本,堆内存、GC间隔明显看着好多了。原因:-Xms为应用初始化部署的时候,向操作系统申请多少内存。如果不设置-Xms后,应用只会申请一小部分的内存,当堆内存使用达到...原创 2020-01-17 15:51:11 · 1573 阅读 · 0 评论 -
网关设计
新网关与旧网关的区别:1.进行了性能优化。 优化内部数据传输,减少使用json传输数据,降低内存开销。 这块可以具体举例2.合并了一个项目-np。减少了链路,降低了故障率。3,对交易推送、订单统一管理。存在的问题:1.大量使用json传输数据,内存开销比较大。导致GC频繁,服务稳定性下降。2.与NP、Broker交互时候存在大对象,1.考虑到行情数据的实时性,...原创 2019-09-02 14:36:55 · 1254 阅读 · 0 评论 -
线上问题排查
单独搭了一套线上环境,用来做周年庆活动。今天收到了超时报警。想着应该是出问题了。登陆堡垒机,连服务器。看logThe last packet successfully received from the server was 180,040 milliseconds ago. The last packet sent successfully to the server wa...原创 2019-01-14 21:31:00 · 312 阅读 · 0 评论 -
中英文混合按首字母排序
以前在外资不涉及到中文排序,目前滴滴有个需求是要按照中文首字母进行排序显示,还会有英文混合其中。用到了一个第三方包。 <dependency> <groupId>com.belerweb</groupId> <artifactId>pinyin4j</artifactId> ...原创 2018-10-04 20:05:46 · 3457 阅读 · 0 评论 -
分布式调用链(一)
调用链的兴起分布式遇到的问题:随着微服务设计理念在系统中的应用,业务的调用链越来越复杂。一个请求可能会涉及到几十个服务的协同操作,涉及到多个团队的业务系统。当遇到问题需要定位时候,也会产生一系列的麻烦。 解决方案:通过调用连,把一次请求调用过程完整的串联起来,实现了对请求调用路径的监控,便于故障快速定位。 调用链显示内容:各个调用环节的性能分析(如各个API使用时间、使用堆栈情况)、在调用...原创 2018-08-25 14:48:11 · 9282 阅读 · 0 评论 -
分布式调用链(二)---Control/Service层插桩埋点实际处理
为什么要在Control/Service 层进行埋点因为请求过来以后,先进入Control,在进入Service。在Control:可以统计某个URL,具体的执行次数、时间、一段时间的流量统计。在Service :可以统计某个方法的用时。当有了数据以后,可以使用kibana来做可视化工具。kibana是属于elasticsearch的一款工具。 采集端执行流程应用系统嵌入监...原创 2018-08-26 18:11:16 · 1649 阅读 · 0 评论 -
JVM-对象(实例)
当虚拟机遇到new指令,会创建一个对象。1. 类加载检测: 检查该指令的参数是否在常量池中定位到一个类的引用,检查该引用代表的类是否已经被加载、解析、初始化过。如果没有,就先执行类加载过程。Student student=new Student(user); 先去看user代表的类加载没有,在去执行new指令。 2. 给新生成的对象(实例)分配内存: ...原创 2018-05-14 16:32:44 · 1020 阅读 · 0 评论 -
JVM-内存模型
JVM虚拟机上的内存模型 线程私有区域。依赖用户线程的启动与销毁。 线程共有区域。随着虚拟机的启动而存在。程序计数器: 理解:可以理解为字节码的指针。是线程私有的区域。 为什么存在:因为一个CPU只会执行一个线程中的指令。为了在线程来回切换中能够恢复到正确的执行位置,设置一个指针来记录执行到哪行字节码。虚拟机栈: 理解:相当于一个栈空间,每个方法在执行的时候会创建一个...原创 2018-05-14 15:58:47 · 238 阅读 · 0 评论 -
分布式下session一致性问题
Nginx轮询后call tomcat,tomcat产生seesion. 当call不同的tomcat会产生seesion不一致的问题解决方案1: 在Nginx采用ip_hash算法。保证同一个ip匹配到同一个tomcat上。缺点:当一个公司是局域网,全部通过一个ip来访问,会匹配到同一个tomcat里。只记录公网IP。 当某个tomcat挂掉以后,其上session丢失,造成用户...原创 2018-05-14 09:53:06 · 485 阅读 · 0 评论 -
深度解析JDK动态代理
动态代理模式,就是在内存中动态生成$Proxy0对象,该对象实现了要被代理对象的接口。如下图,$Proxy0就是在内存中生成的。1. 首先需要写一个class,实现InvocationHandler接口。重写invoke方法。invoke方法有3个参数: 1.第一个参数是Proxy的一个动态实例。只有Proxy实例在InvocationHandler实现类里加载才可以产生第二个参数metho...原创 2018-05-06 00:11:47 · 284 阅读 · 0 评论 -
深度解析Integer
深入解析Integer类型: 补全Swap方法,使a b两值交换。 public static void main(String[] args) { // TODO Auto-generated method stub Integer a=2; Integer b=2; swap(a,b); System.out.println("a value is " +a);...原创 2018-04-11 00:18:37 · 510 阅读 · 0 评论 -
spring解析
由于前期不涉及到Web应用,所以不需要配置web.xml.在src下创建xml(spring-beans.xml)文件。在xml文件中创建beans.1. 当需要调用的时候,使用[java] view plain copyApplicationContext ac=new ClassPathXmlApplicationContext("spring-beans.xml"); ...原创 2018-04-15 20:06:30 · 192 阅读 · 0 评论