<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 12, comments - 3, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Tokyocabinet數據存放探秘

    Posted on 2009-12-29 10:22 創意恒動力 閱讀(764) 評論(0)  編輯  收藏
    弄了一段時間的tokyocabinet btree結構數據庫。
    存儲的時候發現,tokyocabinet sync同步時,先讓數據存放在內存,然后對比同步文件和內存的數據,使數據達到一直。
    sync()這個tc方法易用,但不好控制。
    稍有不慎就會使持久化文件容量以幾何級數遞增。

    之前自己用mina框架做了一個btree的網絡鏈接端口,起初內存一直飆升。弄了很久都不明白。
    開始以為是mina造成的,而且cpu占用率居高不下。

    后來拆分測試。發現單獨mina的數據傳輸,內存并不高,非常低。
    但是tc的單獨測試發現,寫文件的cpu占用率特高,多線程寫入的情況下,會有明顯阻塞。
    初步了解了jvm gc的算法,如果cpu占用率搞,gc回收內存的能力會明顯下降。
    為了解決這一點,修改了一下網絡端口的框架結構。

    把數據接受端跟數據處理端分開:
    1.接受端可以接受多個socket多線程傳輸,而數據處理端鎖定只接受從接收端的一個或不超過5個scoket傳輸數據。
    對tc的操作,單線程寫入,感覺上比多線程處理流暢,特別在同步優化文件那一刻。
    優化文件,需要的cpu和內存都比較厲害。
    2.tc接受數據以后,不要馬上寫文本。等接受一批(100-10000)數據后,再使用同步方法。
    3.參照第2條,定期優化文件,這樣不至于文件過大。但是數據量增大,文件雖然優化了,寫入速度不會怎么改變。
    4.優化同步文件后,特別在數據量在不斷增大的情況下。不要以為沒有回收內存,其實gc已經很努力回收(長時間觀察jprofiler的統計數據證明了這一點)當你向tc取數據的時候,你會發現,內存會逐級遞減。


    經過一番調整,用jprofiler測試,自己搭建的網絡框架,內存鎖定在250m左右。
    可能到實際運行的時候,內存占用量會增加,但是只會達到一個相當的穩定值。
    現用于公司的隊列系統,內存總量不超過600m,偶爾超過是由于同步文件造成的,等數據穩定后,內存會回到穩定值。以后再作優化,希望能把內存壓制200m左右。

    初學nio,以此為記。


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲另类春色国产精品| 视频一区在线免费观看| 精品无码国产污污污免费| 色妞www精品视频免费看| 久久久亚洲精品国产| 成年性午夜免费视频网站不卡| 三级片免费观看久久| 久久精品国产亚洲AV无码偷窥| 午夜视频在线观看免费完整版| 97在线视频免费公开视频| 亚洲香蕉久久一区二区| 久久久久亚洲爆乳少妇无| 国产麻豆视频免费观看| 两性色午夜免费视频| 亚洲中文无码卡通动漫野外| 伊人久久综在合线亚洲91| 欧亚精品一区三区免费| 国产精品小视频免费无限app| 亚洲一区精品视频在线| 亚洲人成人一区二区三区| 色吊丝永久在线观看最新免费| 在线毛片片免费观看| 日韩色视频一区二区三区亚洲| 精品亚洲麻豆1区2区3区| 日韩精品亚洲专区在线观看| 成人免费在线看片| 在线免费观看h片| 精品久久久久久亚洲综合网| 91亚洲va在线天线va天堂va国产| 免费在线观看亚洲| 一二三四影视在线看片免费| 国产成人精品免费久久久久| 欧洲美女大片免费播放器视频| 精品国产日韩久久亚洲| 内射少妇36P亚洲区| 国产亚洲精品看片在线观看| 全部免费a级毛片| 国产免费久久精品久久久| 2021免费日韩视频网| 一级毛片免费播放| 最近免费中文字幕中文高清|