在纯内存的配置下,多线程压测发现cpu使用率不到100%,于是打印线程栈
发现好多线程都block。进去看了一下DefaultDeploymentCache
用的是LinkedHashMap,而且Collections.synchronizedMap同步包装一下,LinkedHashMap每次get的时候都会调整链表结构,所以他读的时候一定是相互排斥的,才能保证线程安全!
优化一下,增加一层,类似于读写分离的做法
然后cpu使用率达到100%了
在纯内存的配置下,多线程压测发现cpu使用率不到100%,于是打印线程栈
发现好多线程都block。进去看了一下DefaultDeploymentCache
用的是LinkedHashMap,而且Collections.synchronizedMap同步包装一下,LinkedHashMap每次get的时候都会调整链表结构,所以他读的时候一定是相互排斥的,才能保证线程安全!
优化一下,增加一层,类似于读写分离的做法
然后cpu使用率达到100%了