前幾天線上環境出現線程池滿,經排查,發現:
jackson-databind:version 2.4.1.1 | 2.4.1
有死循環bug。
https://github.com/FasterXML/jackson-databind/issues/503
https://libereco.cn/posts/study/2016/03/17/jackson-lock/
解決方案:
建議把有問題的版本直接禁用,有問題的版本是這個區間:[2.4.0, 2.4.1.1]
低于 2.4.0 的,LRUMap 的訪問被 synchronized 保護,沒有問題,只是性能低點。
有問題的版本,LRUMap(實事上是一個 LinkedHashMap) 被讀寫鎖保護,但因為 LinkedHashMap 的讀操作里有寫操作,所以事實上沒有保護住。
高于 2.4.1.1,換成了 ConcurrentHashMap.