Linux web sunucusu takasını tamamen kapatmalı mıyım?


22

Son zamanlarda arkadaşım, linux web sunucularında takasın yeterli hafızayla kapatılmasının iyi bir fikir olduğunu söyledi. Sunucumun 12 GB'ı var ve şu anda en yüksek yük altında 4 GB (önbellek ve arabellek saymıyor) kullanıyor.

Argümanı, normal bir durumda sunucunun tüm RAM'lerini asla kullanmayacağıydı, bu yüzden OutOfMemory durumuyla karşılaşabilmesinin tek yolu bir hata / ddos ​​/ etc. Yani durum takas açıldığında kapalı sonunda programın hogging hafızayı (büyük olasılıkla web sunucusu işlemi) ve muhtemelen diğer bazı süreçleri kilitlenmesine bellek tükenecek sisteme. Durumda takas açıldığında üzerindeHem RAM'i hem de takasını yiyecek ve sonunda aynı çökmeye yol açacak, ancak bundan önce sshd gibi önemli süreçleri değiştirecek ve büyük yavaşlamalarla sonuçlanan çok sayıda takas işlemi yapmaya başlayacaktır. Bu şekilde ddos ​​sistemi altında, büyük gecikmeler nedeniyle tamamen kullanılamaz bir duruma geçebilir ve muhtemelen giriş yapıp web sunucusu işlemini öldüremez veya gelen tüm trafiği reddedemez (ssh hariç).

Bu doğru mu? Bir şeyleri özlüyor muyum (takas bölümünün yeterli RAM’im olsa bile bir şekilde çok kullanışlı olması gibi)? Kapatmalı mıyım?


6
Bu nedenle, tüm cevaplar daha fazla sanal belleğin koşulsuz olarak daha az ve daha iyi olduğunu ifade eden ifadelere dayanıyor.
NekojiruSou

2
Takas işleminin sadece “yedek” hafıza için olduğunu düşünmek yanlış yönlendirilir. Değiştirme, kullanılmayan hafızanın yerleştirileceği bir yer anlamına gelir (böylece gerçek hafızanızı daha verimli kullanabilirsiniz). Her zaman takas yapmalısın. Bellek yetersizse, bellek yetersiz - döneminiz. Bu bir kapasite yönetimi sorunudur - takas eğilimi değil. Sanal bellek niyetlerini daha iyi açıklamaya çalışan serverfault.com/a/332205/75118 adresinde oldukça uzun bir yanıtım var.
Matthew Ife

Yanıtlar:


27

Kullanım durumunuza bağlı olduğunu ve cevapların geri kalanının bu durumu oldukça iyi karşıladığını söyleyebilirim. 4G takas bir güvenlik satın almak için ucuz bir yöntemdir. Ve bu ucuzluğun, insanları kapatmak istememelerini sağlayan şey olduğunu hissediyorum.

Ama retorik bir soruyla cevap vereyim. Eğer para sorun değilse ve biri 12G RAM ve 4G takaslı, diğeri 16G RAM ve takassız olmak üzere iki sistem arasında bir seçeneğiniz varsa hangisini tercih edersiniz? Maalesef çoğu insan 16 G RAM seçtiklerini ve hala 4 G takas eklediklerini belirttiler.

Ve başka bir kayda göre, şahsen çarptığım sistemden daha kötü bir takas sistemi buluyorum. Düşen bir sistem, çok daha kısa sürede devralması için yedek bir yedekleme sunucusunu tetikler. Ve aktif olarak aktif (veya yük dengeli bir kurulumda), çökmüş bir sistem çok daha kısa sürede dönmeden dışarı alınacaktır. Takassız sistem için tekrar bir kazanç.


14

Yeterli belleğiniz olsa bile takas kapatmanız önerilmez. Sunucunuz daha fazla belleğe ihtiyaç duyuyorsa ve alamadıysa çökecektir. Ancak, bir takas alanınız olduğunda bu (bir dereceye kadar) önlenebilir.

Evet, takas kullanırken sunucu performansınız düşecek, ancak en azından operasyonel ve erişilebilir olacaktır. Ardından, sunucunuz takas kullanmaya başlarsa gerektiğinde daha fazla bellek eklemeyi planlayabilirsiniz.

Bu sayfayı takas hakkında konuşurken buldum . 3. bölüme bakınız.

Bunun yerine takas kapatarak, sen kontrol edebilirsiniz swapiness .


1
Durumda, hem takas hem de RAM tüketeceğini ve çökeceğini de tarif ettim . Birkaç aydır çalışıyor ve hiçbir zaman% 30'dan fazla bellek kullanmıyordu. Bu nedenle normal çalışma sırasında% 100'e bu kadar hızlı sıçraması pek olası değildir. Bu yüzden eğer bazı işlemler çıldırıp 8 GB tüketirse, bu işletim sisteminin alabileceği kadar bellek tüketeceği anlamına gelir, hepsi bu demektir.
Poma

@Poma, takas yapmanın başka faydaları da var. Ayrıca, bir takas yaptığınızda sistemin daha uzun süre çalışmasına izin verebilirsiniz. Bunun nedeni, takasın ucuz HD sürücülerin mevcudiyeti göz önüne alındığında bellekten daha büyük olabilmesidir.
Khaled

6

Hayır, bu iyi bir fikir değil. 'bazı işlemler delirdi' demek, önceden proaktif olarak adlandırılmış olman gerektiği anlamına geliyor

ulimit -d

işlem veri segmenti belleği başına bir limit ayarlamak için işlem oluşturma zamanında veya öncesinde - Ve belki de iş parçacığı sayısında bir sınır

ulimit -T

işlem başına. Ulimit senin arkadaşın. Lütfen, takas kapatmadan önce hafıza ayarlama kılavuzlarından birini okumayı düşünün. DOS saldırıları veya kötü programlarla başa çıkmak için bazı bölümleri çekirdek çekirdeklerini de değiştirebilirsiniz.

Şuna bakın: Sisteminizdeki toplam bellek RAM + takas. Eğer 12GB'lık bir takasınız varsa, takas özelliğini devre dışı bırakarak sistem VM kapasitesini yarı yarıya azaltabilirsiniz. Kötü bir fikir. Bu bir tartışma değil, aslında, başkalarının önceki kötü deneyimlerden yıllarca bildiklerini okuyor. Arkadaşınızın da biraz okuma yapması gerekebilir.


5

Diğerlerinin de dediği gibi, "swappiness" parametresiyle kesinlikle ilgilenmemeniz haricinde, sunucunuzu takas kullanarak etkili bir şekilde durdurabilirsiniz. Bu, çekirdeğin bellek sayfalarını ne kadar agresif bir şekilde değiştireceğini kontrol eder.

Şu anda neyle ayarlanmış olduğunu görebilirsiniz:

cat /proc/sys/vm/swappiness

ve "live" u (root olarak) ile düzenleyebilirsiniz:

# echo "10" > /proc/sys/vm/swappiness

ve devam ettirmek için, /etc/sysctl.conf dosyasına şunu ekleyin:

vm.swappiness=10

2

Yapabileceğiniz bir başka iyi şey de zRAM kullanarak RAM'e geçmektir. Bunun harika bir fikir olduğunu düşünüyorum! Performans için, hiç takas yapmamak gibi, aynı zamanda sistem çok yüklü olduğunda çökmeleri önler!

Şuna bak:

http://www.webupd8.org/2011/10/increased-performance-in-linux-with.html

Tecrübelerim: Şu anda yazdığım bu makinede, takas işlemini devre dışı bıraktım, çünkü 4Gb RAM'im var (2009'da çok fazlaydı!). Sadece birkaç sorun yaşadım, bir tanesi aynı anda 127 fotoğraf gibi açılıyordu!

AMA .. bu bir iş istasyonudur ve takılırsa yeniden başlatmayı göze alabilirim. Bir sunucuda takas için daha iyi olduğunu düşünüyorum ve RAM takas bana iyi geliyor.


1

Zaten açıkça açıkça belirtildiği gibi, bu iyi bir fikir değil. Başka bir şey yoksa, takas işler oldukça normal olmadığında size biraz nefes verir. Örn, normalde günde sadece birkaç ziyaretçinin olduğu bir sistemde, bir dergide bir sayfanın gösterilmesinden kaynaklanan büyük bir trafik artışı yaşandı. Bu, web sunucusunun hizmete alındığından beri ilk kez takas alanı kullanmasına neden oldu. Bu takas alanı olmasaydı işler iyi gitmezdi.


0

İyi bir fikir değil. 2 adet takas dosyasını farklı önceliklerde tanımlayabilirsiniz. Kullanımda olanlardan bir tanesi, birincinin dolması durumunda kullanılacak bir tanesi daha küçüktür.

Ayrıca vm.swappiness, disk değiştirmenin ne kadar agresif bir şekilde gerçekleştiğini kontrol etmenize yardımcı olabilir.


0

Vm.swappiness değerini 0 ile değiştirirseniz, bu mutlaka sistemin değişmeyeceği anlamına gelmez. Bu ne kadar agresif kerne eğiliminin değiş tokuş olacağını belirlemek için bir parametredir ancak değiş tokuş yapmaz.

Yine, takas fena değil ama thrashing. Sysstat verilerine bir göz atın ve bu konuda oldukça iyi bir işaretçi olmalıdır.

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.