![](https://img-blog.csdnimg.cn/20201112142510137.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
日常开发遇到的坑
文章平均质量分 91
日常开发遇到的坑,Bug天天有!今天再少一点~
码农架构
专注于系统架构、高可用、高性能、高并发类技术分享
展开
-
年轻代频繁ParNew GC,导致http服务rt飙高
背景介绍某日下午大约四点多,接到合作方消息,线上环境,我这边维护的某http服务突然大量超时(对方超时时间设置为300ms),我迅速到鹰眼平台开启采样,发现该服务平均QPS到了120左右,平均RT在2秒多到3秒,部分毛刺高达5到6秒(正常时候在60ms左右)。qps情况:rt情况问题解决该服务是一个对内的运营平台服务(只部署了两台docker)预期qps个位数,近期没做过任何的线上发布,核心操作是整合查询数据库,一次请求最多涉及40次左右的DB查询,最终查询结果为一个多层树形结构原创 2020-10-18 01:35:17 · 4405 阅读 · 27 评论 -
码农架构 | Spring Boot 实现通用 Auth 认证的 4 种方式
文章介绍了 spring-boot 中实现通用 auth 的四种方式,包括 传统 AOP、拦截器、参数解析器和过滤器,并提供了对应的实例代码,最后简单总结了下他们的执行顺序。原创 2022-01-11 15:10:57 · 669 阅读 · 2 评论 -
RandomAccessFile 解决多线程下载及断点续传
在针对文件处理当网络环境不好,出现上传失败的时候,可以对失败的 Part 进行独立的重试,而不需要重新上传其他的 Part;中途暂停之后,可以从上次上传完成的 Part 的位置继续上传。或者要上传到 OSS 的本地文件很大的时候,可以并行上传多个 Part 以加快上传;再或者面对一些文件比较大时,我们需要对大文件进行切割分批上传完后再合并处理。原创 2021-12-29 14:56:05 · 1809 阅读 · 1 评论 -
微服务架构 | 怎样解决超大附件分片上传?
当我们的文件特别大的时候,上传是不是需要很长的时间啊,这么长时间的长连接,如果网络波动了呢?中间网络断开了呢?在这么长时间的过程中如果出现不稳定的情况,本次上传的所有内容就全部失败了,又要重新上传。分片上传、断点续传,这两个名词对于做过或者熟悉文件上传的朋友来说应该不会陌生,总结本篇文章希望对从事相关工作的同学能够有所帮助或者启发。原创 2021-12-26 12:02:13 · 3009 阅读 · 2 评论 -
微服务架构 | 如何利用好日志链路追踪做性能分析?
做性能分析听到最多的歪理就是,服务做水平、垂直扩容、分表分库、读写分离、XX中间件、资源静态化等等但是归根到底这些方案都是为了尽可能减少对数据库的访问以及堆栈的释放,提高数据库IO的读写速度和程序的运行效率。原创 2021-12-14 13:57:54 · 2272 阅读 · 3 评论 -
SpringCloud 跨域资源共享(cors)到底解决了什么?
跨域资源共享(cors)可以放宽浏览器的同源策略,可以通过浏览器让不同的网站和不同的服务器之间通信。同源策略同源策略在浏览器安全中是一种非常重要的概念,大量的客户端脚本支持同源策略,比如JavaScript。同源策略允许运行在页面的脚本可以无限制的访问同一个网站(同源)中其他脚本的任何方法和属性。当不同网站页面(非同源)的脚本试图去互相访问的时候,大多数的方法和属性都是被禁止的。这个机制对于现代web应用是非常重要的,因为他们广泛的依赖http cookie来维护用户权限,服务器端会根.原创 2021-09-20 14:10:18 · 554 阅读 · 0 评论 -
记一次线上OOM问题分析与解决,涨知识了!
导读:以前写过几篇篇关于线上服务器cpu 100%了,该如何排查问题?一些粉丝私信说能不能结合案例来讲解。大好的周日被钉钉消息疯狂@,然后钉钉电话就开始轰炸,同事开发的一程序爆出内存溢出,压测环境居然被通过了,然后就是大型救火现场。我将线上的dump文件和核心的错误日志整理出来,这是问题的复盘总结分享。查看日志看到这个报错java.lang.OutOfMemoryError我相信很多人都会先拷贝谷歌一下,但是真的没用必要!开发这么久或多或少见过不少这种错误。内存溢出~这里原创 2021-07-07 11:29:54 · 748 阅读 · 0 评论 -
线上服务器cpu 100%了,该如何排查问题?
cpu使用率是如何统计出来的?这里的cpu使用率与linux 命令top-H-p<pid> 的线程%CPU类似,一段采样间隔时间内,当前JVM里各个线程的增量cpu时间与采样间隔时间的比例。工作原理说明:首先第一次采样,获取所有线程的CPU时间(调用的是java.lang.management.ThreadMXBean#getThreadCpuTime()及sun.management.HotspotThreadMBean.getInternalThreadCpuTimes().原创 2021-06-16 16:12:39 · 1942 阅读 · 8 评论 -
迎接双十一,YGC问题排查,又让我涨姿势了!
在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大。不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The World问题,因此很容易导致服务超时,引发性能问题。我们团队负责的广告系统承接了比较大的C端流量,平峰期间的请求量基本达到了上千QPS,过去也遇到了很多次GC相关的线上问题。这篇文章,我再分享一个更棘手的Young GC耗时过长的线上案例,同时会整理下YGC相关的知识点,希望让你有所收获。内容分成以下2个部分:从一次YGC耗时过长原创 2020-11-04 10:00:56 · 240 阅读 · 1 评论 -
由多线程内存溢出产生的实战分析
一日凌晨,手机疯狂报警,短信以摧枯拉朽之势瞬间以百条的速度到达,我在睡梦中被惊醒,看到短信的部分内容如下:Caused by: java.lang.OutOfMemoryError: unable to create new native thread at java.lang.Thread.start0(Native Method) at java.lang.Thread.start(Thread.java:597) at java.util.Timer.<init&g原创 2020-11-02 13:38:33 · 783 阅读 · 2 评论 -
内存迟迟下不去,可能你就差一个GC.Collect
背景我们有一家top级的淘品牌店铺,为了后续的加速计算,在程序启动的时候灌入她家的核心数据到内存中,灌入完成后内存高达100G,虽然云上的机器内存有256G,然被这么划掉一半看着还是有一点心疼的,可怜那些被挤压的小啰啰程序????????????,本以为是那些List,HashSet,Dictionary需要动态扩容虚占了很多内存,也就没当一回事,后来过了一天发现内存回到了大概70多G,卧槽,不是所谓的集合虚占,而是GC没给我回收呀。windbg验证一下为了验证我的说法,我就不去生产抓这个庞然大原创 2020-10-29 13:41:49 · 399 阅读 · 2 评论 -
踩坑:一次年轻代GC长暂停问题的解决与思考
规则引擎系统,在每次发版启动会手动预热,预热完成当流量切进来之后会偶发的出现一次长达1-2秒的年轻代GC(流量并不大,并且LB下的每一台服务都会出现该情况)在这次长暂停之后,每一次的年轻代GC暂停时间又都恢复在20-100ms以内2s虽然看起来不长,但是对比规则引擎每次10ms左右的响应时间来说,还是不可以接受的;并且由于该规则引擎响应超时,还会导致出单超时失败问题分析在分析该系统GC日志后发现,2s暂停发生在Young GC阶段,而且每次发生长暂停的Young GC都会伴随着新生代对象的晋原创 2020-10-17 20:54:27 · 666 阅读 · 2 评论 -
内存溢出及解决方案
什么是内存溢出JVM运行过程中,程序不断的申请内存空间用于保存运行时数据,当程序申请的内存空间系统无法满足时,就会抛出内存溢出错误。内存溢出发生的区域以及相应的解决方案都不相同,下面我们逐一分析内存溢出类型及解决方案。OutOfMemoryError与StackOverflowErrorJVM内存溢出分为两种情况,OutOfMemoryError和StackOverflowError。OutOfMemoryError是在程序无法申请到足够的内存的时候抛出的异常。 StackOverflow原创 2020-10-21 22:05:54 · 698 阅读 · 1 评论