當您使用 AWS Lightsail 時, 您很可能會遇到內存限制問題,因為 lightsail 只關心您的 CPU 使用率. 如果您的應用程序是一個內存吞噬者並且您選擇了一個便宜的, 由於缺乏資源,您最終會遇到實例隨機恐慌.
然而, 此時, 這通常意味著您升級實例的提示. 但是CPU使用率還是低於 10%, 不需要更高的薪資等級, 對? 所以我們可以通過設置交換內存讓內存大一點.
交換內存
交換內存是一種可以藉用硬盤驅動器的一部分以獲得額外內存的技術. 當然, 與實際內存相比它會很慢. 然而, 它只是工作😂
創建交換內存
讓我們使用命令 自由的 -H 查看當前內存使用情況:
1 2 3 |
total used free shared buff/cache available Mem: 966Mi 344Mi 61Mi 12Mi 560Mi 447Mi Swap: 0B 0B 0B |
目前, 看起來不錯, 但我可以告訴你,即使是一點點爆發也會讓我的實例崩潰,因為空閒內存不足以讓我的應用程序處理請求.
所以讓我們創建交換內存.
第一的, 我們創建一個用於交換的文件. 大小將是交換內存大小, 這通常與您的實際內存大小相同. 這裡, 1G.
1 2 |
sudo fallocate -l 1G /swapfile sudo chmod 600 /swapfile |
現在我們已經創建了交換文件並為該文件設置了正確的權限. 讓我們告訴系統使用它!
1 2 |
sudo mkswap /swapfile sudo swapon /swapfile |
我們首先標記 交換文件 文件作為特殊交換使用文件. 然後我們告訴系統使用這個文件作為交換.
1 2 3 4 5 |
sudo free -h total used free shared buff/cache available Mem: 966Mi 342Mi 60Mi 12Mi 562Mi 449Mi Swap: 1.0Gi 0B 1.0Gi |
現在你可以看到交換空間不再為零.
最後, 我們告訴系統, 除非真的沒有內存,否則不要使用交換. 我知道交換真的很慢, 所以只在必要時使用它.
1 2 |
sudo sysctl vm.swappiness=10 cat /proc/sys/vm/swappiness |
確保交換性是 10 而不是默認 60. 較少的 swappiness 將使系統不太傾向於使用 swap.
使交換永久
終於, 我們必須使此更改持續存在以防實例重新啟動.
編輯文件 /等等/穩定表 文件, 添加新行:
1 |
/swapfile swap swap defaults 0 0 |
然後我們改變swappiness, 編輯文件 /等等/的sysctl.CONF , 添加新行:
1 |
vm.swappiness=10 |
包起來
現在, 希望你的服務器不會再次恐慌. 然而, 這只是解決小突發導致內存不足的問題. 如果您的代碼/服務隨著您的業務增長而開始佔用更多內存, 遷移到更大的實內存實例是最好的選擇.
參考
如何在 AWS Lightsail 服務器實例上添加交換空間
本文由 落格博客 原創撰寫:落格博客 » 將交換內存添加到 lightsail 實例
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/3833.html