• 如何设置高并发系统的jvm堆内存大小


    要解决的问题

    • 系统要部署多少台机器
    • 每台机器的内存空间
    • 每台机器jvm堆内存大小
    • jvm内存空间要多少,才能支撑这么多对象的创建 不至于进程直接奔溃

    内存压力计算

    1. qps估算
      日活用户数量、高峰期时段多久、用户行为涉及到的接口、接口中创建的对象大小
      举例:
      (1) 假设用户系统高峰期 1w+qps 时, jvm内存要在一秒内能容纳下这一万多个用户信息实例
      (2) 每天100万支付订单的交易系统,高峰期几个小时,平均到高峰期就是每秒100订单左右,要能容纳下这些订单对象
      处理耗时比较长的场景会比较复杂,进行minor gc的时候会有 qps * n * timeout 多个对象还存活着(n为接口一次处理过程产生的对象个数)

    2. 计算每个对象的大小

    3. 处理流程耗时

    4. 然后计算出系统大概多久会进行一次 minor gc(年轻代多久会塞满)

    对于高并发的系统,如果请求耗时突然变成秒/十几秒(或者有个别接口耗时久),就很容易进入老年代: 系统并发较高 eden区很快就填满,然后进行 minor gc,慢接口引用的对象回收不掉,在多次minor gc后这些慢接口的对象就进入到老年代了

    实际场景

    其实一般公司运维提供的机器配置是固定的几档,如4核8G、8核16G 然后会有对应的较为通用的jvm参数配置模板
    而且线上服务情况错综复杂、不会说一个时刻就只有一个链路在执行,需要根据预期要抗的qps、目标rt进行压测,确定保证机器负载在健康水平下达到目标需要多少台机器,同时观察gc情况,然后再具体根据minor gc stw、老年代增长速率、fullgc频率和时长等进行调整

    本文来自博客园,作者:mushishi,转载请注明原文链接:https://www.cnblogs.com/mushishi/p/14546418.html

  • 相关阅读:
    Pandas的基础用法
    独热编码处理文本属性
    DataFrame数据输出时因行、列太多显示不全
    pandas中iloc与loc的区别
    “第五空间”智能安全大赛Misc-wp
    Mac 终端$ 与%切换
    01.数据分析介绍
    02.指标数据库设计
    【杭州城市数据大脑规划2018-2022】学习记录
    【京东基于spark的风控系统架构实践和技术细节】学习记录
  • 原文地址:https://www.cnblogs.com/mushishi/p/14546418.html
Copyright © 2020-2023  润新知