LAMP sunucusunda Swap bölümüne ihtiyacımız var mı?


14

Aslında LAMP ile ubuntu sunucusunda bir takas bölümüne ihtiyacımız var mı? Sanırım buna ihtiyacım yok, ama beklenmedik davranışlara neden olup olmayacağından emin olmak daha iyi.
Aslında düşüncelerim şunlardı:

  • Sunucu asla hazırda bekletilmez
  • Eğer takas ediliyorsa, yük dengeleme / trafik şekillendirme vb.

Üretim sunucusu için swap'ı kapatabilir miyim?

Teşekkürler!

Yanıtlar:


14

Üretim sunucusu için swap'ı kapatabilir miyim?

Hayır. Her zaman takas alanı var.

Bir ve yaklaşık bir hafta sonra bir üretim sunucusu takas etmeyi denedim, bir Wordpress güncellemesinden sonra PHP, hesapladığımızdan çok daha fazla RAM yemeye başladı. RAM'iniz bittiğinde ve swap'ı etkinleştirdiğinizde, işler yavaşlar (bazen çok fazla, bazen biraz, orada neyin itildiğine bağlı olarak) ama giriş yapabilirsiniz, sorunu bulup düzeltmeye çalışabilirsiniz o.

RAM'iniz bittiğinde ve takasınız olmadığında, işlemler ölür, işler durur ve çoğu zaman tek seçeneğiniz yeniden başlatılır. Ama siz yeniden başlatıncaya kadar, işler muhtemelen kırılacak.

Benim dünyamda, kırık yavaştan çok daha kötüdür.

Tabii ki sisteminizin sürekli olarak büyük miktarda swap kullandığını fark ederseniz (genellikle önbelleğe alınmış eski şeyleri taşımak için bazılarını kullanacaksınız ), açıkça bir sorununuz var ("RAM takın lütfen"), ancak bir güvenlik ağı kesinlikle önerilir.


SpamapS'nin yorumuna yanıt olarak:

"Başarılı web siteleri" dünyasında, sıcak yük devretme, yük dengeleme ve bir makinenin patlamasına izin veren ve sitenin geri kalanında sıfır etkiye izin veren diğer araçlara sahipsiniz. Ama bu çok fazla para gerektiriyor. Fazladan donanıma sahip olmak, para çekse bile çoğu site için ekonomik değildir.

Çalışma süresi hakkındaki yorumunuza tamamen katılmıyorum. İnsanların sitenizi göremiyorsanız geleneksel e-ticaret setinde çekim, onlar olamaz sizden satın. Bu sadece e-ticaret değil, herhangi bir dönem için işiniz bittiğinde tüm çevrimiçi ticari çıkarlar çok daha fazla kesintiye neden olur. Biliyorum çünkü şirketler için siteler ve hizmetler barındırıyorum ve kendi sitelerimi işletiyorum. Yavaş = huysuz ama Aşağı = öfke. Bir seferde yalnızca bir dakika aşağı inseniz bile, bir kullanıcı birkaç defadan fazla "bakım için kapalı" bildirimi görürse, siteyi koruyamayacağınızı varsayar.

Yavaş bir sunucu idealden daha azdır, ancak takas her zaman çalıştırılamaz, bunları düzeltirken işlerin devam etmesine izin vermek için son çare.

Ayrıca, makinede çalışan tek bir hizmet olduğunu varsayabilirsiniz. Yine, her şeyi bölmek için megabucks'ınız varsa, ancak gerçek dünyada işler bir araya toplanırsa, bu doğru olabilir. Birden fazla web sitesi, ssh artalan süreçleri, ftp sunucuları, e-posta sunucuları vb. Takaslara sızan bir işlem başka bir hizmeti bile etkilemeyebilir. Takas olmadan, her şeyin anlık, rastgele sonlandırma şansı eşittir. Bunun üzerinde kontrolünüz yok.

Elbette takas tek cevap değil. Koçtan çıktığında sizi uyarmak için izlemeye ihtiyacınız var, ancak sadece fişi çekmek ve yeniden başlatmak insanların çoğunun cevabı değil. Eminim bu, hangi çok uluslu web sitesinden sorumlu olduğunuz için çalışır, ancak bizim için sadece internetin çoğunluğunu oluşturan ölümlüler, bunu yapmak ticari intihardır.


Burada da aynı tecrübeler var ... benim tarafımdan kasıtlı bir karar değil bir hataydı. Takassız bir sunucu, özellikle sshd'yi öldürmeye karar verirse, tamir edilmesi bir cehennemdir.
Javier Rivera

Yaklaşık 16Gb RAM'im var, yarısı hızlı IO için önbelleğe alındı, geri kalanı LAMP için, Takas her zaman ücretsiz veya bazen birkaç megs var, ama her zaman kapalı olduğunu düşünüyorum ...
Arman

3
Başarılı web siteleri dünyasında, tepkisizlik kırılmasından daha kötüdür. Kullanıcılar aslında bir HIZLI başarısızlık takdir edecektir (ki, javascript ön uç kodunuz btw'yi iyi işlemesi gerekir), ancak yavaş olduğunuz için sizi nefret edecektir. Değiştirmeyi bırakın, kaçınılmaz olanı geciktirir. -1
SpamapS

1
@Oli: N + 1 çalıştırmak artık megabucks, hatta çok fazla para almaz. Aslında özel beceriler bile gerektirmiyor. Bir sunucunun herhangi bir nedenle aşağı inmesi kaçınılmazdır ve bunun bir sorun olmamasını önlemek zor değildir. Her şeyi yapan bağımsız bir LAMP sunucunuz varsa, o zaman daha pahalıya mal olur; İki tane daha ve bir yük dengeleyici (t1.micros ve EBS anlık görüntülerine sahip EC2'de, bu ÇOK ucuz olabilir) mi yoksa siteniz en büyük gününde alışılmadık derecede yavaş mı? Google'dan veri kontrol edin ... Bence onun açık bit.ly/hB1AD1
SpamapS

1
Gerçek dünyadaki sunucu durumlarını kapsayan harika yanıt. Yedek donanım, LB, izleme, RAM önbellekleri vb. Eklemek son derece önemlidir ve takas alanında ucuzlandığınız için etrafta fütür değilseniz, bunları ayarlamak ve hata ayıklamak için zamanınız olacaktır.
ImaginaryRobots

4

Üretim sunucularını takas etmeye katılmıyorum.

Benim tecrübelerime göre, dönel disk takası sisteminizi daha az öngörülebilir hale getirir ve tüm sistem arızasını sinir bozucu hale getirir. Yerel bir yavaş diskle herhangi bir şey yapan yüksek yüklü, popüler bir sunucu, başarısız durumdan çok daha kötü bir şeye hızla sarılır. Tepki süreleri normal seviyelerinin 100 katına çıkar ve konsol veya ssh yoluyla oturum açmak gibi basit şeyler birkaç dakika sürebilir.

SSD swap özel bir durumdur ve en azından genellikle sistemi öldüren arama süresini yavaşlatır. Bununla birlikte, yazma işlemleri hala yavaştır, bu yüzden yine de kontrol dışı bir süreçten kurtulmak için uzun, uzun bir süre beklersiniz.

Takas olmadan, LAMP sunucunuz RAM'i boşaltmak için işlemleri sonlandırır. Düzgün izleme sizi bu konuda uyarmalı ve kritik süreçler öldürülürse sunucuları üretimden kaldırmalıdır. Buradaki en kötü durum, giriş yöntemlerinizin tamamının öldürülmesi ve sabit bir sıfırlama / güç döngüsü yapmanız gerektiğidir. Bu en kötü durum hala kontrol dışı takas makinesinde olduğu gibi, ancak tespit edilmesi çok daha zordur.

PHP kullanıyorsanız, bellek sınırlarını etkinleştirin ve günlüklerinizi hataları açısından izleyin. İşte bir hile, dev sunucunuzda üretimden daha düşük limiti ayarlayın . Apache altında mod_php kullanıyorsanız, MaxRequestsPerChild'i birkaç bine ayarlayın, böylece httpd zaman içinde çok büyük büyümeden önce ölür. Her şeyden önce, bellek kullanımını izleyin! Çoğu zaman bellek zamanla kaybolur ve sorunu giderirken sızdıran bir hizmeti düzenli aralıklarla yeniden başlatmanız gerekir.


1
Deneyiminizi paylaştığınız için teşekkür ederiz. Ben benzer sorunları, ssh Inf alırken muhasebe. İşlemleri sadece sınırlı belleğe sahip olmaya zorladım, bu da ssh'yi çalıştırmamı ve buggy komut dosyalarını düzeltmemi sağlıyordu.
Arman

Üretimde takas alanı konusunda internette gördüğüm en ilginç tartışmalardan biri. (tüm konu, pro ve eksileri)
dpb

3

Takas alanı, sisteminiz etkin işlemler için fiziksel belleğe ihtiyaç duyduğuna ve yetersiz kullanılmayan fiziksel bellek olmadığına karar verdiğinde kullanılır. Sistemin daha fazla bellek kaynağına veya alana ihtiyacı olursa, fiziksel bellekteki etkin olmayan sayfalar takas alanına taşınır, böylece fiziksel belleği diğer kullanımlar için boşaltır.

Bu durum sunucuda birçok kez olacaktır.

a). Optimize edilmemiş bir komut dosyası büyük miktarda bellek tüketebilir
b). Yedekleme gibi komut dosyaları her zaman çok büyük bellek tüketir
c). ağır trafik

Bu yüzden takas alanı olması iyi bir uygulamadır.

Daha fazla detay: https://help.ubuntu.com/community/SwapFaq


Açıklama için teşekkürler. Eğer bir adamcağız komut dosyası varsa, o zaman her durumda sunucuyu çökertecek, sistem sınırları komut dosyalarını kontrol etmelidir, değil mi?
Arman

aneeshep, yoğun trafik sırasında takas ediyorsanız, sisteminiz normalde olduğundan 100 kat daha yavaş olacaktır. Bu genellikle kabul edilemez.
SpamapS

2

Takas kullanmak, sunucu kararsızlığına karşı bir ek koruma sağlayacaktır. RAM'in bittiği ve takas olmadan sunucuda yumuşak bir çökmeye neden olabilecek zamanlar olabilir.

Muhtemelen azınlıktayım diyorum, hala eskiden olduğu gibi, ana hafızanızdan iki kat daha fazla takasın olması mantıklı. 96 GB RAM'e sahip bir sistemde bile.

Çok pahalı değil ve bir güne ihtiyacınız varsa, aldığınız için mutlu olacaksınız. Takas yapılmasının nedeni sadece çok basit bir maliyet-fayda analizidir. Yap! :-)


0

Oli'ye güzel - eski biliyorum - cevap için teşekkür etmek istiyorum. Bölümleme her zaman yeşil bir konudur! Ben tamamen Oli'nin yazı hattı ile katılıyorum ve sunucularımın takas kullanımını izlemek için kullandığım bu - tabii ki geliştirilebilir - komut dosyasını paylaşmak istiyorum.

Sunucuları ve hizmetleri her zaman takas oluşmadan çalışacak şekilde yapılandırırım. Ne zaman olacak, bir şeyin yanlış gittiğinden ya da en iyi ihtimalle ilk planlarınızın üzerinden geçtiğinden emin olun.

Bu senaryoyu üretim ortamında her yarım saatte bir crontab ediyorum. Takas kullanımı! = 0k ise bana bir bildirim gönderecektir. Çoğu zaman, işler gerçekten yanlış gitmeden önce , konuyla ilgili derhal araştırma / işlem yapabileceğim .

Herhangi bir kontrol yapmadan bash, top, echo, awk ve çalışan bir posta komutuna sahip olmanızı bekler.

Umarım yardımcı olur.

#!/bin/bash
CURRSWAP=$(top -b -n1 |grep Swap |awk '{print $4}')
ECOMM="echo $CURRSWAP means healthy, I wont take any action."
CURRDATE=$(date)
MAILDST="your@email.addr"

case $CURRSWAP in
  [0]k) $ECOMM
        exit 0
        ;;
  *)    echo -e "Server: $HOSTNAME \n Date: $CURRDATE \n Current Swap partition usage: $CURRSWAP" | mail -s "Warning from $HOSTNAME" -- $MAILDST
        exit 0
        ;;
esac
exit 0
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.