Senkronizasyon komutu ne işe yarar?


15

Ne işe yaradığını biliyorum ... Sanırım neden miras aldığım bir uygulamada bir sorunu çözdüğünü merak ediyorum. Bir dizi esnek istemci için Red5 sunucusu olarak çalışan ve sonunda bir ray api'sine akıtılan gerçek zamanlı etkileşim verilerini bir sürü işleyen oldukça büyük bir tomcat uygulamasını devraldım. Sorun zaman içinde bir sürü yük altındaydı bu istemcilere önerileri normalde <100 ms olan 3-400 ms büyüyordu. Müşteri, bunun asla onaylayamadığımız bir hafıza sorunu olduğundan şüphelendi. Bir gün bir evreleme sunucusu ben temelde istekleri alarak durdu bir yük testi çalıştırıyordu ya da son derece yavaştı. Gönderdiğim bir hevesle

sync && echo 3 > /proc/sys/vm/drop_caches

ve sihirli bir şekilde sunucu hayata döndü ve bu bağlantıyı sunarak tam hızda çalışmaya başladı. Bu bir rastlantı mıydı yoksa bu davranış mantıklı mı ve neden?


4
Bunlar iki emirdir. Hangisini fark ettiniz?
Michael Hampton


bu daha da burada yeniden düzenlendi: commandlinefu.com/commands/view/1026/…
j_mcnally

4
Söylemesi zor. Bu komutların, korkunç bir şekilde yanlış kullanılmadığı sürece, sunucuda faydalı bir şey yapmasını beklemezsiniz. Ancak daha dikkatli bir çalışma olmadan kesinlikle göz ardı edilemez. Tekrar olursa, sadece syncveya sadece echo. Sonra bu düzeltmelerde sunucunun neden yavaş olduğunu anlamaya çalışın (CPU maksimum mu? IO maksimum mu? Sistem çağrı yapıyor mu?)
David Schwartz

Yanıtlar:


20

Herhangi bir sabit disk, RAM'inizden daha yavaş büyüklük sıralarıdır, bu nedenle linux, dosya sistemi verilerini önbelleğe almak için yüzer durumda olabileceğiniz yedek RAM'i kullanır. Ancak, sabit diskinizde bir sorun olmadıkça veya sunucunuzdaki hizmetler, sunucunun verileri önbelleğe alamayacağı veya alamayacağı kadar uzun bir süre bu kadar yüksek bir hızda veri yazmaya çalışmadığı sürece, bu durum hiçbir zaman performans sorunlarına neden olmamalıdır. Ayrıca, sabit diskinizin ömrünün sonuna geldiğinin bir işareti olabilir.

Her neyse:

  • koşmak man syncsize senkronizasyonun ne yaptığını söyleyecektir [FS tamponlarını temizler]
  • googling 'linux drop_caches' size 3 sayısını yankılamanızın gereksiz tüm bellek sayfalarını önbellekten bıraktığını söyleyecektir [bu sağlıklı bir sistemde gerekli olmamalıdır]
  • command1 && command2 'command1 başarıyla tamamlanırsa command2 komutunu çalıştırın'
    • bunun ortağı command1 || command2aka 'komut1 başarısız olursa komut2'yi çalıştır'

Size verilen komut en iyi ihtimalle geçici bir düzeltmedir ve sisteminizle ilgili yanlış bir şeyin belirtisidir. Diskleriniz kullanım ömrünün sonuna gelmiş veya sisteminiz bu işlemle ne yaptığınız için çok yetersiz ya da her ikisi birden .


teşekkürler, emin değilim, bunun çok kısa vadeli bir çözüm olduğunu düşündüm. Sanırım bunun neden işe yarayacağına dair bir fikir edinmek istedim. Sunucu EC2 üzerinde yani HD EOL fikri hakkında emin değilim.
j_mcnally

@j_mcnally EC2? O zaman, sadece belirli örneğinizin neye benzediğini tahmin edebilirim, ancak muhtemelen EBS'nin her zaman süper pul pul olması, küçük RAM tahsisleri ve takas bölümünün olmaması gibi faktörlerin bir kombinasyonu.
Sammitch

Yani çözüm gerçekten geçerli lol olabilir diyorsun?
j_mcnally

@j_mcnally, ayda milyonlarca dolarlık IO optimize edilmiş örneklerden birinde değilseniz, potansiyel olarak evet.
Sammitch

5

AWS yürekli değil, ve bunun nedenlerinden sadece biriyle karşılaştınız. AWS'deki zayıf disk G / Ç durumu iyi bilinmektedir ve üstüne uygulama oluşturan herkes için dikkate alınması gereken en önemli faktörlerden biridir. Konuları iyileştirmeye çalışabileceğiniz, disk için optimize edilmiş örnekler ve birkaç başka püf noktası (EBS birimlerinden bir RAID 0 oluşturmak gibi) vardır. Çekirdeğin disk G / Ç'sini arabelleğe alabilmesini sağlamak için daha büyük örnekler (en az m1.large) kullandığınızdan emin olun.


evet m1.large kullanarak. Bu sunucular uygulama için bükülmüş ve daha sonra saat sonra parçalanmış ... bu yüzden disk io için zaman yatırım vb emin değilim. Herkesin girişini takdir ediyorum ve önerilerin düzeltmenin infact olmasa bile geçerli olabileceği gibi görünüyor. Tekrar teşekkürler.
j_mcnally
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.