Saya memiliki server dev yang sshd
terkadang berhenti bekerja karena mesin kehabisan RAM. Ya kami kehabisan memori dan peningkatan bukanlah pilihan yang layak saat ini. Apa yang ingin saya lakukan adalah memberi tahu mesin: "Lakukan apa yang Anda inginkan, tetapi tinggalkan 20MB dan beberapa CPU untuk sshd
!".
Bagaimana itu bisa dilakukan?
performance
limit
phhehehe
sumber
sumber
sshd
berperilaku baik, saya pikir itu akan macet jika tidak ada cukup CPU / RAM untuk digunakan, bukan?Jawaban:
Anda mungkin dapat mencapai sesuatu seperti itu dengan menggunakan cgroup dengan pengontrol sumber daya Memori .
Saya kira Anda akan menempatkan semua tugas yang memakan sumber daya Anda dalam jumlah terbatas (CPU & RAM)
cgroup
, dan biarkansshd
"di luar" sehingga tidak dibatasi.(Menambahkan lebih banyak swap, bahkan dalam bentuk file swap, mungkin merupakan opsi yang baik.)
sumber
Oh tapi cgroup itu mudah :) Instal paket libcgroup. Buat /etc/cgconfig.conf:
Mulai
cgconfig
proses yang akan membuat hierarki, kelompok, dan menetapkan batas. Jika itu berhasil, Anda memiliki dua cgroup, yang keduanya memiliki 50% dari CPU yang ditetapkan dan 1G memori yang tersedia (tidak tahu berapa jumlah aktual Anda dari memori yang tersedia; anggap itu 2G dalam contoh ini). Sekarang Anda hanya perlu memindahkan semua tugas (yaitu semua proses yang berjalan pada sistem) dari grup root ke nosshd cgroup:Maka Anda hanya perlu mendapatkan PID dari
sshd
proses dan memindahkannya info file tugas sshd:Ta-da, kamu sudah selesai. Anda sekarang dapat yakin bahwa sshd akan selalu memiliki 50% dari CPU dan 1G memori.
sumber
Gunakan
renice
untuk mendapatkan prioritas yang lebih tinggi untuksshd
, atau memeriksa akuntansi. (acct) -> dengan ini Anda dapat mengatur sumber daya untuk pengguna, jadi jalankan sshd dengan ssumber
ionice
itu juga, dan mungkin mulai sshd dengan senang tidak mengganti lagi nanti.Solusi yang lebih umum untuk masalah penggunaan sumber daya aplikasi adalah dengan menjalankan aplikasi Anda dalam wadah menggunakan Docker . Anda kemudian dapat menjalankan wadah dengan CPU dan batas penggunaan memori mirip dengan cgroup.
sumber