2012-04-13 16 views
12
Düşünüyorum yerine kullanıyoruz

:Web sunucusu, Tomcat, Apache ile karşılaştırıldığında uzun vadede kararlılık açısından performans kararlılığı nasıldır?

  • Tomcat
  • Apache
  • Hafif web sunucusu
  • PHP
  • Yakut
  • JSP

Neden benim projeler arasında geçiş değil Dil git. Orada Çünkü ben vardır: FreeBSD, Linux, Solaris üzerinde çalışır (Windows'da:

  • web sunucusu
  • inşa ı bile PHP, Ruby, JSP
  • git gibi çapraz platform çözer bağlıdır gerekmez (Mac, Android, Tizen)
  • ne Apache ne Tomcat ne de diğer web sunucusu bakımları
  • tarayıcı hızının diğer web sunucusu komut dosyası dilleri için daha hızlı olması gerekir.

Ama endişelendiğim bir şey var, diğer web sunucularına kıyasla Go web sunucusunun istikrarsızlığı.

Bunu daha önce yapmış mıydınız yoksa sadece üretim sürümleri için böyle projeler inşa ediyor muyum?

+0

Ruby'de standart kitaplıktaki bir web sunucusu da var ('webrick' gerektiriyor), ancak bunu doğrudan kullanıcılara göstermem. –

+0

Go's gibi çoğu web sunucusu, tam özellikli sunucular olarak tasarlanmamıştır; insanlar genellikle Apache veya nginx gibi bir şeyin arkasında uygulama sunucuları olarak çalışırlar.Bu şekilde, daha yapılandırılabilir ön kısım, önbellekleme, yük dengeleme, statik veri sunma vb. Şeyleri üstlenebilir. –

+0

"Kertenkele Bill" sadece StackOverflow üzerinde gerçekten yararlı olan _love_ kapanış soruları değil mi ?! Bazı aptal tekniklere dayanarak. Bu site, gerçek dünyadaki geliştiriciler için pratik bir soru-cevap forumu olmayı amaçlamaktadır ve bu soru, bir olmak için harika bir iştir (ve cevabı da vardır). Eminim hayatında inanılmaz derecede faydalı bir şey yaptığını düşünüyor. Bu, bu duruma ilk kez girdiğim zaman değil - bu yüzden de eski bir yıl olan wat 'den gelen bu yorum. –

cevap

20

hiçbir stabilite problemi vardır.

Bazı web sunucularında, aylarca çalıştırılan, ayda bir milyon sorguya ihtiyaç duymadan ayda bir kez (genellikle Json, GET, POST ve websockets) hizmet veren birkaç web sunucum var.

64 bitlik ubuntu sunucularındalar ama sanırım özellikle bir web sunucusuyla 32 bitlik böceğin bu kadar çok dedikodu üretmesini zorlaştırıyorsunuz.

Belirli bir nedeniniz yoksa bir ön uç kullanmayın: Yalnızca Go özelliğini kullanarak eksiksiz bir web uygulaması yapmak çok kolay.

Yalnız olmaktan uzak olacaksınız. Bence Go, özellikle uzun süredir çalışan sunucular kurmak için çok uygundur. Goroutines ve kanallar, hem kullanıcı isteklerini hem de uzun vadeli görevleri ele almayı gerçekten kolaylaştırır (örneğin, php'de çok kolay olmayan ve çok fazla LOC olan http sorgusunu yanıtladıktan sonra kullanıcı sorgularının işlemden geçirilmesini sağlar. eğer bunu doğru yapmak istiyorsanız).

+2

+1 Yerdeki deneyimlerden konuşmak için. – Flavius

+0

Yaşamak ve Ubuntu'da süreçleri izlemeyi izlemek için özel bir araç kullanıyor musunuz? – Blacksad

+0

Bugün olmaz. Bir cevap vermiyorsa beni uyarıyor, ama prod'da hiç çökme yaşamadığım için, şimdi baskıyı hissetmiyorum. Gerekirse standart bir araç kullanabilirsin. Hata ayıklama döngüsünün, örneğin, java veya php'den farklı olduğunu buldum: hataların çoğunu derlerken ya da ilk sınamalarda (çoğunlukla dizi dizin hataları ya da haritanın ayrılmamış olması ... Diğer diller hataları genellikle gizlidir. "Git testi" işlevini de kullanıyorum. Derlemenin hızlı ve operasyonda yer alması daha kolay hale geliyor. –

1

Nginx'i ön uç olarak kullanın ve Go'nun 64 bit sürümünü kullandığınızdan emin olun. 32bit sürümü, uzun süreli süreçler için bir gösteri durdurucu olan ciddi stabilite problemlerine sahiptir.

+1

Lütfen ilgili hata raporlarına ve/veya haber gruplarına/ML tartışmalarına bir çift link verebilir misiniz? Ben de orijinal soruyu araştırmakla ilgileniyorum ve ifadeniz güçlü olsa da, biraz el sallıyor gibi görünüyor; Bunun gibi iddiaların veri ile desteklenmesi bekleniyor. – kostix

+0

İşte 32 bit ile ilgili sorunları tartışan bir iş parçacığı. http://groups.google.com/group/golang-nuts/browse_thread/thread/ab1971bb9459025d/64241d28b02fa0db?lnk=gst – kristianp

+0

Lütfen bu hatanın 64 bit sunucularında da ortaya çıkabileceğini unutmayın, ancak bu kadar nadirdir. 32 biti bile gör. Bunu tespit etmek yıllar ve belirli bir hafıza kullanım modelini aldı. –

2

Neden Web Sunucusunda Oluştur kullanılmıyor ve Varnish gibi bir Ters Proxy kurmuyorsunuz veya Nginx Proxy olarak işlev görsinler?

http://wiki.nginx.org/ReverseProxyCachingExample

+3

Neden? Neden yapardın Saklanması ve güncellenmesi gereken başka bir soyutlama katmanı ekler. Ve bu, sorgunun kaçınmaya çalıştığı şeydi. Önbelleğe alma eklemek, yalnızca performansta kararlılık konusunda yardımcı olmaz. Sadece önbellek ömrü için ek “stabilite” sağlayabilir; zamanını saklıyor. – Kissaki

İlgili konular