加入收藏 | 设为首页 | 会员中心 | 我要投稿 济宁站长网 (https://www.0537zz.cn/)- 行业智能、边缘计算、专有云、AI硬件、5G!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

边缘和云如何解决延迟

发布时间:2021-02-13 14:51:39 所属栏目:外闻 来源:互联网
导读:抱歉很久没写新文章了 , 这段时间一直在学习扩大自己的知识盲区 , 工作上也挺忙的 , 拖更了好久 答应了朋友要出个 JVM 系列 , 应该会有几篇文章 , 我会努力在保证质量的前提下进行输出~ So 进入今天的主题 前言 有被 JVM 相关问题刁难过吗? 上个月朋友去面某

抱歉很久没写新文章了 , 这段时间一直在学习扩大自己的知识盲区 , 工作上也挺忙的 , 拖更了好久

答应了朋友要出个 JVM 系列 , 应该会有几篇文章 , 我会努力在保证质量的前提下进行输出~

So 进入今天的主题

前言

有被 JVM 相关问题刁难过吗?

上个月朋友去面某东说被 JVM 难哭了

面试官上来就是素质三连:

有没有 高并发项目经验、频繁 gc 怎么解决、有没有搞过 JVM 调优

我那个朋友公司做的是 to b 方向 , 系统流量不是很大 , 加上才工作 2 年直接被问懵逼

回来就问我高并发系统怎么玩 , 为了避免重复劳动 , 遂有此文~

一、亿级流量系统回顾

接下来做个回顾:

OTA 平台 4亿 用户

高峰期 百万 订单

高峰期 12 小时 1.8亿 访问量

每小时的流量是:1.8亿 / 12 = 1250w

每分的流量是:1250w / 60 = 20.8w

每秒的流量是:20.8w / 60 = 3472

2 个集群 32 台 8C/16G 的机器

一次核心接口查询平均占用 5mb 内存

每秒钟 JVM 会有 550mb 的新生代堆内存空间被占用

二、系统的 JVM 参数

基于G1垃圾收集器

这里我截取了这个服务生产环境的 JVM 参数:

  1. -Xmx12288m 初始堆大小.
  2. -Xms12288m 最大堆大小
  3. -Xss256k 每个线程的栈内存大小
  4. -XX:MetaspaceSize=256m 元空间初始大小
  5. -XX:MaxMetaspaceSize=1g 元空间最大大小
  6. -XX:MaxGCPauseMillis=200 每次YGC / MixedGC 的最多停顿时间 (期望最长停顿时间)
  7. -XX:+UseG1GC java8 指定使用G1垃圾回收器
  8. -XX:-OmitStackTraceInFastThrow 对异常做的一个优化,抛出异常非常快,但是看不到异常的堆栈信息(仅供参考)
  9. -XX:MinHeapFreeRatio=30 GC后java堆中空闲量占的最小比例,小于该值,则堆内存会增加
  10. -XX:MaxHeapFreeRatio=50 GC后java堆中空闲量占的最大比例,大于该值,则堆内存会减少
  11. -XX:CICompilerCount=4 设置的相对较大可以一定程度提升JIT编译的速度,默认为2
  12. -XX:SoftRefLRUPolicyMSPerMB=0 任何软引用对象在下一次 GC 都尽快释放掉,给内存释放空间。
  13. -XX:+PrintGC 输出GC日志
  14. -XX:+PrintGCDetails 输出GC的详细日志
  15. -XX:+PrintGCDateStamps 输出GC的时间戳(以基准时间的形式)
  16. -XX:+UseGCLogFileRotation 开或关闭GC日志滚动记录功能
  17. -XX:NumberOfGCLogFiles=5 设置滚动日志文件的个数
  18. -XX:GCLogFileSize=32M 设置滚动日志文件的大小,当前写日志文件大小超过该参数值时,日志将写入下一个文件
  19. -XX:+HeapDumpOnOutOfMemoryError JVM会在遇到OutOfMemoryError时拍摄一个堆转储快照,并将其保存在一个文件中

注意


(编辑:济宁站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读