“Sunucu yavaş, RAM'i iki katına çıkaralım” hosting dünyasının en pahalı refleksidir. Bazen doğrudur. Çoğu zaman ise makine diski bekliyordur ya da CPU sonuna kadar doludur, yeni bellek de fatura ikiye katlanırken boşta durur.
O yüzden kimin 64 GB'a ihtiyaç duyduğunu konuşmadan önce, size gerçekte neyin eksik olduğunu bulalım. Yalnızca iş yüküne göre tipik bellek rakamları arıyorsanız, dil modelleri için formül de dahil, önceki rehberimiz Bir VPS'e ne kadar RAM gerekir bunları veriyor. Bu yazı ise teşhisle ilgili: RAM mi, disk mi, CPU mu.
Üç komut, iki dakika
Bunları yavaş sunucuda, sunucu yavaşken çalıştırın; hiçbir şeyin olmadığı sabah dörtte değil:
free -m
vmstat 1 10
cat /proc/pressure/cpu /proc/pressure/memory /proc/pressure/io
Ders kitabı olmadan nasıl okunacakları şöyle.
free -m. free sütununu boş verin; Linux boş belleği bilerek disk önbelleğiyle doldurur. available'a bakın. 2 GB'lık bir makinede yalnızca birkaç yüz megabayt görünüyorsa ve swap'teki used sürekli artıyorsa, bellek sıkışıktır.
vmstat 1 10. Hikâyenin çoğunu dört sütun anlatır:
| Sütun | Anlamı | İşaret ettiği |
|---|---|---|
si / so | saniyede swap'e giren ve çıkan sayfalar | RAM |
wa | CPU'nun diski beklediği zamanın yüzdesi | disk |
us + sy | CPU'nun çalıştığı zamanın yüzdesi | CPU |
st | hipervizörün CPU'nuzu başkasına verdiği zamanın yüzdesi | CPU (vCPU başkalarıyla bölüşülür) |
Arada bir si/so'da birkaç sıfırdan farklı değer normaldir. Asıl işaret, saniye saniye süren istikrarlı swap'tir.
/proc/pressure/*. Üçünün en dürüstü. Her dosya, görevlerin o kaynağı bekleyerek durduğu zamanın oranını gösterir. memory dosyasında some avg60=25.00, son bir dakikada bir şeyin zamanın dörtte birinde bellek beklediği anlamına gelir. En büyük rakamlar hangi dosyadaysa darboğazınız odur.
Sorun diskteyse
Yüksek wa, yüksek io baskısı, az swap. Olağan neden, önbelleğe sığandan fazlasını okuyan bir veritabanı ya da bol log üreten bir uygulamadır.
İşin ilginç yanı: daha fazla RAM bunu çözebilir, çünkü Linux diskin daha büyük kısmını önbelleğe alır. Veritabanınız 6 GB ve sıcak kısmı 3 GB ise, 2 GB'tan 8 GB belleğe geçmek disk sorununu ortadan kaldırabilir. Ama veritabanı 300 GB ise ve her sorgu farklı bir kısmına dokunuyorsa, makul hiçbir RAM miktarı onu önbelleğe alamaz. O zaman çözüm daha iyi dizinler, daha küçük sorgular ya da farklı bir veri düzenidir. Buradaki tüm tarifeler NVMe üzerinde çalışır, yani yavaş olan nadiren diskin kendisidir. Genellikle erişim biçimidir.
Sorun CPU'daysa
Yüksek us+sy, cpu baskısı, swap yok, az disk beklemesi. Sıkıştırma, derleme, video kodlama, görüntü işleme, kriptografik hesaplama. Daha fazla bellek burada hiç işe yaramaz.
st'ye de dikkat edin. Bir VPS'te vCPU, fiziksel bir çekirdeğin zamanından bir paydır, çekirdeğin tamamı değil: tarifedeki sayı ani yükler için bir tavandır ve uzun süreli tam yük, makinedeki herkes için adil kalsın diye kısılabilir. İşiniz saatlerce tüm çekirdekleri %100'de kullanmak istiyorsa bu iş yükünün sorunudur ve bunu daha büyük bir tarife aldıktan sonra değil, şimdi söylemeyi tercih ederiz.
Sorun gerçekten RAM'deyse
İstikrarlı swap, artan bellek baskısı, dmesg'de OOM killer. Şimdi soru şu: ne kadar.
2 GB, çoğu zaman yıllarca yeter: bir ya da birkaç bot, küçük bir API, bir VPN, Nginx arkasında statik bir site, birkaç cron scraper'ı, bir izleme ajanı. Micro, NAT'ta ayda 5 $'a ya da kendi IPv4'üyle 10 $'a 2 vCPU, 2 GB ve 25 GB verir.
4–8 GB rahat ortadır: veritabanıyla birlikte bir web uygulaması, küçük bir arama dizini, headless tarayıcı otomasyonu, yan yana çalışan birkaç ajan.
32–64 GB, bellekte yaşaması gereken veriler içindir:
- çalışma kümesi onlarca gigabayt olan bir veritabanı, ki önbellek sıcak veriyi gerçekten tutabilsin;
- her şeyi yavaşlatmadan diske taşamayacak büyük bir bellek içi önbellek ya da kuyruk;
- milyonlarca parça üzerinde arama için bir vektör dizini (gerçek rakamlar Büyük ölçekte kendi RAG'iniz yazısında);
- ağırlıkların RAM'e sığması gereken, orta boy bir dil modelinin CPU üzerinde çıkarımı;
- birleştirme: eskiden on küçük sunucuda yaşayan on hizmet.
Pro-64 tam olarak bunun için var: ayda 70 $'a 12 vCPU, 64 GB RAM, 600 GB NVMe ve özel bir IPv4. Aradaki basamaklar 40 $'a Pro-32 ve 55 $'a Pro-48; üstünde 90 $'a Pro-80. Pro tarifeleri için konum müsaitliği sipariş sırasında görünür.
Büyük bir makinenin uymadığı yerler
Gücünüz yetse bile 64 GB'ın yanlış cevap olduğu üç durum.
GPU işleri. Bu tarifelerin hiçbirinde GPU yok. Modeliniz eğitim ya da hızlı çıkarım için GPU istiyorsa, bol RAM'li bir CPU makinesi onu çalıştırır, ama yavaşça; sabrın bedelini ödersiniz.
Uzun süreli tam CPU işleri. Yukarıda dediğimiz gibi: vCPU'lar ani yük kapasitesidir. On iki tanesini günün her saati %100'de çalıştırmak, bir VPS'in yapıldığı iş değildir.
Ve “ne olur ne olmaz”. Üç komut bellek baskısı göstermiyorsa, fazladan 60 GB okumadığınız dosyalar için önbellek olur. Daha küçükten başlayın. Aynı ağ türünden daha büyük bir tarifeye geçmek vCPU, RAM ve diski yerinde, tek bir yeniden başlatmayla ekler; ayrıntılar Tarife değiştirme bölümünde. Yerinde küçülmek mümkün değil, bu yüzden fazla büyük almak gerçek bir maliyettir: küçülmek için yeni bir sunucuya taşınırsınız ve VPS'i kesintisiz taşımak ihtiyaç duymamayı tercih edeceğiniz bir iştir.
Farklı sağlayıcıların tarifelerini karşılaştırıyorsanız, VPS özelliklerini okumak vCPU, disk ve port rakamlarının gerçekte ne vaat ettiğini anlatıyor.
Yorumlar
Henüz yorum yok. İlk olun.