• 几个性能问题的记录


    1、Cpu压10个就100%了,想问一下,为什么100%了,请求还不会报错?
    100%不一定会报错,只是代表使用率高
    2、我没测时是400兆,测完变成了600多兆,是不是要达到一定使用量才会释放呀
    对,你可以持续压测,主要看内存使用量在长的时间尺度上是否成锯齿装,如果是逐步上升的锯齿状则代表应用有内存没释放,这个就得排查代码了,如果是平缓的锯齿状就代表应用在内存使用上没问题
    3、Cpu100% 意味着响应时间会增加,tps会减少吧,如果再持续运行一段时间是不是就会报错啦?

    嗯,这个只能说如果继续加大压力,可能会出现报错,保持现状不一定会报错
    4、服务器2核4G,分配多大的jvm比较合适呀?
    看你这个机器上是否还需要运行别的东西  最大不超过3.6G就可以了,使用内存需要低于90%  最好低于80%  ,

    如果分配的是最小2G-最大4G,会怎么样呢?

    你是在虚拟机上吧   虚拟机上问题不大    可能出现的问题就是内存不足  程序出现异常

    容器里如果使用的内存超出容器允许的最大内存,jvm进程可能会被kill掉
    jvm进程kill掉了之后会有啥结果呢?
    容器会重启   在k8s环境的话会重新部署

    5、内存下不来:

    嗯  那基本上就是JVM申请了没有还给系统,相对于JVM 容器就是操作系统 
    那JVM申请了不还给系统,实际上内存还是被占用的状态吧,没办法再利用的吧?
    JVM自己可以再利用 ,就是你java程序可以再用  但是系统的其它进程用不了
    哦,那我再压测的话,按理来说还是会用这些内存,不会再升高了吧。?

    嗯  你的线程数不增大 理论来说是不会继续升高了

    对比上次又高出了一点点,我还是做的150 200的并发,上次最多也是200?

    肯定不会完全一致的 
    每做200的并发都会上升一点点,?

    会有少量上升 然后在GC时会不会下降
    一般什么时候会GC?

    这个就得看JVM的配置了

    6、那我可以在内存高位的时候,持续性运行一段时间,看会不会报错或者重启,然后再去定位什么问题么?

    可以,这个时候可以让开发去分析JVM的情况

    7、场景 1、场景 2 随着压测并发数的增加,内存也不断增加,增加到 741 兆后,不再继续增
    加,且压测停止后,内存占用没有减少,需进一步排查确认?

    这个就得看JVM的配置了;内存没下来是正常的,这个要涉及到jvm内存回收机制,没跑认为之前,java认为所需的内存足够,就会稳定在一个区间,跑任务的时候,java会一直去消耗内存,到达峰值或者认为合理的值就i会稳定下来。过一段时间后,认为自己不需要太多的内存,就会进行回收 。到时就降下来了。不会立马降下来的
    如何判断没有内存溢出呢?
    如果是内存泄漏的话,系统就会报错了,看系统日志  是否有内存异常的日志

    就是会报错对吧,报内存溢出的错误?是的

    有内存泄漏的话,日志中可以查看错误日志,但接口是一定会报错么?
    不一定,接口可能是没有反应,卡在那里;如果异常全部捕获了 接口也不一定报错

    那会返回捕获后的结果,可以通过message判断吧?

    这个得问具体得开发 看是如何处理得

     8、查询接口有缓存,是按照有缓存测,还是非缓存测:

    按缓存测,缓存也是提高性能的一种优化;看优化后的性能如何。

  • 相关阅读:
    日期时间工具类
    jQuery 使用attr()方式设置 checked 失效原因及解决方法
    vue总结
    【笔记】golang中使用protocol buffers的底层库直接解码二进制数据
    【笔记】对golang的大量小对象的管理真的是无语了……
    【记录一个问题】thanos receiver在更换tsdb文件后,内存并未显著下降
    【笔记】论文阅读:《Gorilla: 一个快速, 可扩展的, 内存式时序数据库》
    【分享】thanos receiver的grafana报表配置
    【采坑小计】thanos receiver的官方文档中,并未说明tsdb落盘的配置方式
    【记录一个问题】thanos receiver在tsdb切换期间,导致remote write接口失败增加
  • 原文地址:https://www.cnblogs.com/lelexiong/p/16134574.html
Copyright © 2020-2023  润新知