gulimall知识点
性能压力测试
软件:Jmeter + VisualVM
中间件影响
以50个线程循环请求为例:经由Gateway网关转发的请求(3126次/s)对比直接请求(11341次/s)吞吐性能降低约70%,而由Nginx→Gateway→请求的全链路(800次/s)性能更是下降了约90%
中间件越多,性能损失越大,大多损失在网络交互了,所以要把静态资源放nginx里,不要去服务访问
多级目录递归影响
以200个线程共同发送100个请求为例:
原始吞吐量 562次/s
静态资源缓存+日志优化
1568次/s
索引优化(给访问三级分类目录时加上父节点id的索引)
2567次/s
内存崩溃模拟
-Xmx1024m:表示设置 JVM 最大堆内存为 1024MB。堆内存是 JVM 中用于存储对象实例和数组等数据的区域,当应用程序创建大量对象时,需要足够的堆内存来存储这些对象。如果对象占用的内存超过了最大堆内存限制,JVM 可能会抛出OutOfMemoryError异常。
-Xms1024m:表示设置 JVM 初始堆内存为 1024MB。即 JVM 在启动时分配的堆内存大小。一般来说,为了避免 JVM 在运行初期频繁地进行内存分配和回收操作,-Xms和-Xmx可以设置为相同的值,这样可以让 JVM 在启动后就拥有稳定的内存资源。
-Xmn512m:表示设置 JVM 新生代内存大小为 512MB。新生代是堆内存的一部分,主要用于存储新创建的对象。新生代通常分为 Eden 区和两个 Survivor 区,大部分对象在 Eden 区中分配内存,当 Eden 区满时,会触发新生代垃圾回收,将存活的对象移动到 Survivor 区或老年代。
虽然吞吐量不高,但解决了内存崩溃,JVM GC运行正常
缓存
缓存穿透
缓存雪崩
缓存击穿
线程池