生產者消費者算法之多線程操作數據庫速度提升

背景:通過客戶反映我們的系統在字串上庫時需要花費的時間在3~4小時以上,然而我們在測試環境上測試通常百萬級的數據量大概只需要十幾分鍾就可以搞定,但是到了我們的正式環境上卻要花費很長的時間。


探索:1.我們在正是環境和測試環境做了大量的測試,通過正式環境與正式環境數據上庫對比之後發現,我們的測試環境確實比我們的正式環境速度快幾十倍,甚至我們的正式環境有可能會出現線程堵塞的情況

    2.我們通過用同樣的代碼同樣的數據庫去比較數據,最終在比較之後發現我們正式環境和測試環境的速度任然是相差差很大

    3.最後我們通過比對我們服務器的硬件數據,發現我們兩臺服務器的硬件幾乎差不多,相比之下我們的正是環境還要好很多

    4.最後在不經意間發現我們的mysql數據庫啓動跟我們一般安裝的mysql數據庫啓動還不一樣,正是環境的數據庫是裝在本機的,按理來說這種做法是不對的,最後通過測試數據比對之確實是數據庫啓動方式有問題,正是環境的數據庫不是通過服務啓動的,是通過進程啓動。


改進:最後我們換了一臺內存64G硬盤2.5T的服務器,加上域名解析我們的服務器跑起來溜溜的。


問題:1.同時併發跑32個線程JDK總是包內存溢出?

       換成最新的JDK 跑起來溜溜的。

    2.以前的catalina內存配置的是4G,還是很慢?

     換成65G內存,配置catalina20G內存跑起來溜溜的。

展望:還是希望以後能優化代碼,換一個效率更高的算法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章