是否有可能防止交換單一進程?
該進程是記憶體資料庫,不應移動到虛擬記憶體中。
所有其他進程仍應可交換。
我需要類似 SQL-Server 的“鎖定記憶體頁面”選項。
答案1
如果一個進程開始交換,那麼它要么編碼非常糟糕,並且在應該釋放 RAM 時沒有釋放 RAM,要么您的伺服器沒有足夠的 RAM 來處理它當前正在執行的所有任務,您應該擴展 RAM 容量。
如果這確實不是一個預算明智的選擇,或者如果機器已經達到最大 RAM 容量,您可以安排一個任務,每小時左右(或如果需要更頻繁)殺死並重新啟動該進程。請注意,這實際上應該是最後的手段和臨時解決方案,因為它不是真正的解決方案,而只是一種解決方法。
至於你問題的核心,據我所知,沒有辦法阻止程式交換。當進程耗盡物理記憶體以防止電腦崩潰時,這是基本的作業系統行為。