問題描述
測試機上的數據庫老是鏈接不上,提示數據庫的連接數太多,沒法連上。查了下機子的狀況,發現buff/cache一直居高不下,整整占了3 40%的內存。
解決思路
當在Linux下頻繁存取文件后,物理內存會很快被用光,當程序結束后,內存不會被正常釋放,而是一直作為caching。
解決方案
注意:執行以下操作,可能會影響數據庫服務(重啟即可恢復正常運行)。建議最好做好數據庫的備份。
手動執行以下shell命令,手動清除緩存即可。
#清除pagecache
echo 1 > /proc/sys/vm/drop_caches
#清除回收slab分配器中的對象(包括目錄項緩存和inode緩存)。
#slab分配器是內核中管理內存的一種機制,其中很多緩存數據實現都是用的pagecache。
echo 2 > /proc/sys/vm/drop_caches
#清除pagecache和slab分配器中的緩存對象。
echo 3 > /proc/sys/vm/drop_caches