美文网首页
压测出现的问题

压测出现的问题

作者: 陈阳001 | 来源:发表于2019-03-11 15:41 被阅读0次

    一.3.19大促时的压测:

    1.问题:营销接口采用fastjson的方法序列化和反序列化去实现对象间属性的拷贝,因为营销接口里面有大量的循环,造成序列化和反序列化一秒80万的操作,占用大量cpu资源,造成热线程。

    解决:去除序列化和反序列化操作,用get set替代。这样不会出现占用大量cpu资源的情况。

    2.问题:商品接口用spring的PropertyUtils去操作对象间属性的拷贝。性能太低。

    解决:换成Cglib的 BeanCopier,效率提升的10倍。
    延伸:
    进行了三次测试,最后的结果如下:

    10次测验 第一次 第二次 第三次 平均值 每次平均值
    BeanUtil.copyProperties 54 57 50 53.66667 5.366666667
    PropertyUtils.copyProperties 4 4 4 4 0.4
    org.springframework.beans.BeanUtils.copyProperties 12 10 11 11 1.1
    BeanCopier.create 0 0 0 0 0
    10000次测验 第一次 第二次 第三次 平均值 每次平均值
    BeanUtil.copyProperties 241 222 226 229.6667 0.022966667
    PropertyUtils.copyProperties 92 90 92 91.33333 0.009133333
    org.springframework.beans.BeanUtils.copyProperties 29 30 32 30.33333 0.003033333
    BeanCopier.create 1 1 1 1 0.1
    10000次反转测验 第一次 第二次 第三次 平均值 每次平均值
    BeanUtil.copyProperties 178 174 178 176.6667 0.017666667
    PropertyUtils.copyProperties 91 87 89 89 0.0089
    org.springframework.beans.BeanUtils.copyProperties 21 21 21 21 0.0021
    BeanCopier.create 0 1 1 0.666667 6.66667E-05
    • Cglib的 BeanCopier最高

    3.问题:代码下压测情况下抛出ConcurrentModificationException,经过排查是营销接口的ArrayList.sort()出现并发冲突。

    方案:去除ArrayList.sort()用别的方法排序。
    ArrayList.sort()这个操作虽然没有set,remove等操作,但是改变了数据的顺序,有指针等操作,也会造成ConcurrentModificationException

    相关文章

      网友评论

          本文标题:压测出现的问题

          本文链接:https://www.haomeiwen.com/subject/dxvppqtx.html