我們可以看到influxdb這個進程中目前VIRT是15G便贵,RES是6.2G九府,SHR是6.1G。那么我們需要弄清楚這三個指標分別代表了什么
RES=SHR+程序自身內(nèi)存占用(堆棧相關內(nèi)存占用)星持,通過上圖的TOP來看抢埋,常駐內(nèi)存中大部分都是共享內(nèi)存,那么到底共享了什么督暂?
通過smaps揪垄,確定共享內(nèi)存中的內(nèi)容
通過查看/proc/pid/smaps來確定具體的內(nèi)存占用
a. influxdb啟動時會調(diào)用文件存儲層打開對于文件等的引用
基于上面的分析斩狱,我們可以對TOP中的VIRT耳高、RES、SHR 這三個的值進行分析驗證:
這個值再加上influxdb自身的堆棧以及其他的共享庫文件的占用陆蟆,基本上為15G。
SHR:共享內(nèi)存大小惋增,在TOP中顯示的值是6.1 G叠殷。上文我們就通過smaps拿到了映射進入內(nèi)存的文件的大小是6.1G,基本上是一致的诈皿。
RES:常駐內(nèi)存大小林束,在TOP中顯示的值是6.2G。自身堆棧的占用可以通過influx工具進入查詢稽亏。
RES=SHR+自身堆棧占用=6.1G+0.15G=6.15G壶冒,這個值四舍五入和6.2G是持平的。
influxdb內(nèi)存消耗分析及性能優(yōu)化【追蹤篇】