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、查询接口有缓存,是按照有缓存测,还是非缓存测:
按缓存测,缓存也是提高性能的一种优化;看优化后的性能如何。