由JDK bug引发的线上OOM
由JDK bug引发的线上OOM
最近生产环境的一个应用忽然发生了OOM,还好是业务低峰期,没有导致什么严重问题,下面记录下本次排查的过程;
故障临时处理
在某天下午,正在愉快的写代码时,忽然看到业务反馈支付服务不能用的消息,因为最近没有发布,所以感觉不会是什么大事,十有八九是网络波动啥的,毕竟之前遇到过好多次,那剩下的就是找证据了,先看看日志,有没有报错(暂时还未接告警,所以要人肉看),结果不看不要紧,一看吓一跳,日志密密麻麻全都是OOM报错
阅读全文- 26 Aug 2023
- 88,053 人阅读
- JoeKerouac
- 2 条评论
feign-eureka-ribbon的协作原理
feign-eureka-ribbon的协作原理
在我们的项目中使用了feign、eureka、ribbon这三个组件,最近想要在负载均衡上做些文章,需要了解这三个组件底层是如何协作的,这样才能找到突破口,所以给这三个组件的源码大概翻了一遍,最终整理出该笔记,希望对同样对这三个组件是如何协作感兴趣的读者一些帮助;
文中使用的spring cloud版本为
Greenwich.SR6
PS: 本文为纯源码分析,所以配合源码阅读本文最佳;
阅读全文
- 09 Apr 2023
- 39,774 人阅读
- JoeKerouac
- 2 条评论
架构师的核心能力-抽象能力
架构的核心是管理复杂度,架构师的核心能力是抽象能力,什么是抽象能力?抽象能力就是一种化繁为简的能力。何为化繁为简?就是把一种复杂的事情变得简单的能力,比如通过打比喻让别人很容易听明白你说的意思就是一种抽象能力。如何锻炼抽象能力?我觉得有三种方法,第一种是用归纳法找共性,从多个问题中找到共同的问题提炼通用解决方案,去其糟粕取其精华。第二种通过演绎法找关系,从多个问题中找关系,把多个问题串成一个问题,系统化解决问题!第三种是通过归纳法找特性。化繁为简需要不断的思考,不断的看清一件事的本质,这个事的解决方案越容易。
阅读全文Nginx unexpected end of file 配置证书遇到问题,如何解决?
原文链接 https://bysocket.com Illusion Diffusion Web、Google Maps Scraper
一、Nginx unexpected end of file 问题
通过 letsencrypt 申请证书后,默认服务器安装了 Nginx 1.8 Decompiler 发现,在默认的 /etc/nginx/sites-enabled/default 内容配置 SSL 的 site.com.key 后。重启 Nginx 出现一下错误:
Google Maps Extractor、WebSite Email Extractor、Facebook Group Extractor、Instgram Export Tool、AI text-to-speech model
阅读全文资产管理数字化建设的思考
声明
本文涉及到的仅限于个人对资产管理数字化的一些思考,并非代表某家公司。其中涉及到的一些公开信息都来自互联网,如果涉及到隐私,请联系作者删除。
前言
我们经常听到的有"财富管理数字化转型","资产管理数字化转型","大资管数字化转型","投研数字化转型","资管数字化转型"等等名词。在做数字化转型前,我们需要先清晰的定义要解决的业务领域,抽象出问题域。那么我们先从"大资管"出发,逐步抽象出问题域,最终根据问题域来匹配对应的解决方案。
阅读全文- 04 Dec 2022
- 57,482 人阅读
- fenglvming
- 只有一条评论
分布式场景下的稳定性保障
1、什么是稳定性保障
稳定性保障简单理解就是不让系统出现不可用的情况,或者不可用的情况每年只能发生几十分钟。为什么要稳定性保障?因为现在很多的电商和支付系统已经属于社会基础系统,持续一段时间不可用会影响比较大,同时也损失了用户的信任。
稳定性保障的场景非常多,只要流量非常大的业务就需要系统性的进行稳定性保障,包括直播、电商秒杀、电商大促等场景。2022年9月3日晚刘德华"把我唱给你听"线上演唱会,最终这场线上演唱会的在线观看人次达到3.5亿,那么支持3.5亿人次观看就是一种稳定性保障场景。每年电商网站618、99、双11和双12大促。除了大促以外,还有很多亿级用户的产品也需要稳定性保障,如电商交易、第三方支付、演唱会直播等场景。还有很多秒杀的场景,如每晚8点某电商网商1499秒杀茅台、在12306网站提前N天抢票。
阅读全文分布式场景下的资损防控
资损的定义
资损是在指在业务活动中,业务规则和实际资金流动不一致,导致业务参与方中的任何一方或多方遭受了资金损失。简单理解就是系统的某个功能出现了BUG,导致用户或者公司出现了资金的损失,比如在营销过程中多给某个用户发了10元红包,或者是用户领取了10元红包无法使用,用户在支付时看到的订单金额是100元,结果支付了101元或99元,这些情况都属于资损,用户支付了101用户资损1元,用户实际支付了99元公司资损了1元。
为什么要重视资损防控?因为资金损失如果金额巨大会直接毁掉一个业务,比如在某个业务一次运营活动中把9折的优惠券配成1折,然后发给了几百万个用户,这里面可能涉及到几千万的资金损失,但是这个业务本身就没有盈利几千万,所以只要业务涉及到资金流动一定是非常重要的事情。
阅读全文使用了lombok后如何生成正确源码包
使用lombok后,如果没有任何配置,则打包的源码与实际class文件是不符合的,此时打开源码IDEA会提示Library source does not match the bytecode for class,而解决该问题也很简单,只需要pom中增加如下配置即可,打包时指定maven参数-Prelease即可生成正确的源码包:
- 06 Sep 2022
- 34,236 人阅读
- JoeKerouac
- 发表评论
聊聊动态线程池的9个场景
大家好,我是小马哥。
线程池是一种基于 池化思想管理线程 的工具,使用线程池可以减少 创建销毁线程的开销,避免线程过多导致 系统资源耗尽。在 高并发以及大批量 的任务处理场景,线程池的使用是必不可少的。
如果有在项目中实际使用线程池,相信你可能会遇到以下痛点:
- 线程池随便定义,线程资源过多,造成服务器高负载。
- 线程池参数不易评估,随着业务的并发提升,业务面临出现故障的风险。
- 线程池任务执行时间超过平均执行周期,开发人员无法感知。
- 线程池任务堆积,触发拒绝策略,影响既有业务正常运行。
- 当业务出现超时、熔断等问题时,因为没有监控,无法确定是不是线程池引起。
- 原生线程池不支持运行时变量的传递,比如 MDC 上下文遇到线程池就 GG。
- 无法执行优雅关闭,当项目关闭时,大量正在运行的线程池任务被丢弃。
- 线程池运行中,任务执行停止,怀疑发生死锁或执行耗时操作,但是无从下手。
java服务器调试指南
java服务器调试指南
在实际开发中,总会遇到程序启动不起来或者运行结果不符合期望的情况,如果是在本地,直接debug就行了,几乎人人都会,但是如果到了远程,大多数情况下我们可以看日志,通过日志排查定位到问题,但是如果你的日志不多,或者日志中看不出问题,此时情况就比较难以处理了,而实际上我们仍然可以通过debug的形式来解决,只不过由原来的本地在ide中通过GUI来debug变为通过命令行来debug;
阅读全文- 27 Jul 2022
- 38,803 人阅读
- JoeKerouac
- 2 条评论
如何利用 RPA 实现自动化获客?
一、RPA 是什么?难吗?
RPA 对大家来说,可能挺陌生的,其实它很简单。
Robotic Process Automation(简称 RPA )机器人流程自动化,是一种技术,是以软件机器人 + AI / OCR 等科技能力结合,在软件上的某些业务操作场景中,达到机器替人,实现重复的工作自动化。
RPA 通过模拟人在电脑、平板和手机上的操作方式,包括 Web 自动化、桌面软件自动化、手机 APP 自动化、鼠标键盘自动化等等,实现不需要人工,替人将操作流程自动化。
阅读全文- 21 May 2022
- 26,536 人阅读
- JoeKerouac
- 发表评论
k8s中部署traefik并开启https支持
k8s中部署traefik并开启https支持
k8s现在已经是容器编排领域的事实标准了,而在我们部署k8s集群时,ingress组件是必不可少的,在k8s领域,做的比较好的ingress组件就是traefik了,原生支持k8s,配置简单,上手极快,下面我们就来讲讲如何部署traefik并开启https支持;
阅读全文- 17 May 2022
- 13,698 人阅读
- JoeKerouac
- 发表评论
MySQL驱动中关于时间的坑
MySQL驱动中关于时间的坑
背景:MySQL 8.0数据库;
最近在做一个小框架,因为本身比较精简,就没有引入太多依赖,直接用了JDBC来操作数据库,因为我的表中有一个datetime类型的字段,对应的Java代码中使用的是java.time.LocalDateTime,在处理这个日期字段的时候,就遇到了一个有趣的问题;
在我的数据库表建好后,在Java中使用JDBC原生API实现了一个repository,包含一些数据库的操作,因为代码中有java.time.LocalDateTime字段,在使用java.sql.PreparedStatement的时候不确认java.sql.PreparedStatement.setObject(int, java.lang.Object)方法接收java.time.LocalDateTime类型的入参后是否可以正确处理,就写了一小段测试用例来测试,核心代码如下:
preparedStatement.setObject(1, LocalDateTime.now());
一行简单的JDBC调用设置参数,参数类型是LocalDateTime,最终发现没有报错,如果一切OK,那么事情到这里就结束了,但是…….
阅读全文- 26 Feb 2022
- 22,813 人阅读
- JoeKerouac
- 3 条评论
热门文章
- Google Guava官方教程(中文版) 1,057,539 人阅读
- Java NIO系列教程(一) Java NIO 概述 743,904 人阅读
- Java NIO 系列教程 514,942 人阅读
- Java并发性和多线程介绍目录 495,396 人阅读
- Java NIO系列教程(十二) Java NIO与IO 419,489 人阅读
- Java NIO系列教程(六) Selector 368,716 人阅读
- Java NIO系列教程(三) Buffer 366,038 人阅读
- Java NIO系列教程(二) Channel 352,522 人阅读
- 69道Spring面试题和答案 343,344 人阅读
- Java8初体验(二)Stream语法详解 322,980 人阅读
- 并发框架Disruptor译文 300,997 人阅读
- Netty 5用户指南 250,774 人阅读
- [Google Guava] 2.3-强大的集合工具类:ja... 237,689 人阅读
- [Google Guava] 3-缓存 236,627 人阅读
- 聊聊并发(三)Java线程池的分析和使用 236,342 人阅读
- 《Storm入门》中文版 234,161 人阅读
- 面试题 231,561 人阅读
- [Google Guava] 1.1-使用和避免null 221,707 人阅读
- Java NIO系列教程(八) SocketChannel 218,798 人阅读
- 如何创建并运行java线程 206,989 人阅读
近期文章
- 由JDK bug引发的线上OOM
- feign-eureka-ribbon的协作原理
- 架构师的核心能力-抽象能力
- Nginx unexpected end of file 配置证书遇到问题,如何解决?
- 资产管理数字化建设的思考
- 分布式场景下的稳定性保障
- 分布式场景下的资损防控
- 使用了lombok后如何生成正确源码包
- 聊聊动态线程池的9个场景
- java服务器调试指南
- 如何利用 RPA 实现自动化获客?
- 关于证书,这里有你想知道的一切
- k8s中部署traefik并开启https支持
- 领域事件 disruptor 使用场景之实现Spring事件驱动模型 ApplicationEvent
- MySQL驱动中关于时间的坑
- 2FA双因子认证之OTP算法
- HMAC算法
- SHA1算法详解
- Innodb之快照读原理实现
- JDK17都出来了,你还在用JDK8?
- ZIP(32位)文件格式详解
- Nacos 本地单机版部署步骤和使用
- Docker基础介绍
- Java 内存模型
- 教程:Go入门
- Java 并发之 Fork/Join 框架
- Spring Cloud 整合 Feign 的原理
- 看山聊并发:Java 中 Vector 和 SynchronizedList 的区别
- 看山聊并发:认识 Java 中的队列:Vector、ArrayList、CopyOnWriteArrayList、SynchronizedList
- 看山聊并发:如果非要在多线程中使用 ArrayList 会发生什么?(第二篇)
分类
- Android (4)
- Architecture (4)
- C++ (14)
- CPU (2)
- Framework (74)
- akka (20)
- GO (7)
- groovy (6)
- guava (24)
- JAVA (1,079)
- JVM (50)
- linux (10)
- microservices (5)
- Netty (33)
- Python (2)
- react (6)
- redis (26)
- Scala (11)
- spark (19)
- Spring (24)
- storm (44)
- thinking (3)
- Velocity (10)
- Web (18)
- zookeeper (1)
- 公告 (5)
- 区块链 (3)
- 大数据 (35)
- 好文推荐 (37)
- 并发书籍 (97)
- 并发译文 (421)
- 感悟 (6)
- 技术问答 (12)
- 敏捷管理 (6)
- 本站原创 (91)
- 架构 (43)
- 活动 (5)
- 网络 (8)
- 面试 (2)