Temel Heroku uygulamalarımın yüklenmesi neden iki saniye sürüyor?


100

Hizmeti test etmek için çok basit iki Heroku uygulaması oluşturdum, ancak sayfayı ilk ziyaret ettiğimde yüklemek genellikle birkaç saniye sürüyor:

Tek yaptığım basit bir Sinatra uygulaması oluşturmak ve onu dağıtmaktı. Heroku sunucularını karıştırmak veya test etmek için hiçbir şey yapmadım. Yanıt süresini iyileştirmek için ne yapabilirim? Şu anda çok yavaş ve nereden başlayacağımı bilmiyorum. İşe yarayacaksa projelerin kodu github'da.

Yanıtlar:


176
  • Uygulamanız bir süre kullanılmazsa, kaldırılır (sunucu belleğinden).
  • İlk vuruşta yüklenir ve kimse erişmeden bir süre geçene kadar yüklü kalır.

Bu, sunucu kaynaklarını korumak için yapılır. Uygulamanızı kimse kullanmıyorsa, neden kaynakları meşgul tutup gerçekten ihtiyacı olan birinin bunları kullanmasına izin vermiyorsunuz?
Uygulamanız çok fazla sürekli trafiğe sahipse, hiçbir zaman yüklenmez.

Bununla ilgili resmi bir not var.


51
Bunu düzeltmenin en kolay yolu, dinozorlarınızı 2'ye çıkarmaktır.
Bölüm

5
@diegopau Tam olarak ihtiyacınız olanı yapan güzel bir uygulama ( wekkars.com ) buldum . Şu an için beta olarak görünüyor ama burada mükemmel çalışıyor.
SteenhouwerD

68
Boşta kalmasını önlemek için sunucunuza ping atmak, kendi yuvanızda çöker. Bahsettiğiniz bu hizmetler ücretsizdir . Kaynakları korumaları gerekir. Herkes sunucusuna ping atarsa, hiçbiri değiştirilmez ve sağlayıcı ölçeklendirmek zorundadır. Bu paraya mal olur .... hoşçakal ücretsiz hizmet. Sanırım bu cevabın göndericisi, sunucuya ping gönderme önerisini silmeli.
GreenAsJade

32
Uptimerobot.com'u her 5 dakikada bir Heroku uygulamama ücretsiz ping göndermek için kullanıyorum - bana 200 OK (ve daha da önemlisi, yoksa) olduğunu söylüyor ve uygulamayı duyarlı tutuyor. Bunun için hiçbir özür dilemiyorum; Çoğu geliştirme veya demo uygulamaları olan 10 heroku uygulamam var, ancak bu özellikle canlı / prodüksiyon ve düşük trafiğe rağmen istendiğinde hızlı yanıt vermesi gerekiyor. Bu, Heroku'nun iş modeli için bir tehdit olsaydı, bizi durdururlardı. Binlerce küresel kullanıcım olduğunda, başka bir dinamoyu çalıştıracağım ve harika bir hizmet için ödeme yapmaya başlayacağım. Bu yüzden suçluluk duygusundan vazgeç! :)
ED-209

3
Tokn ile birlikteyim. Site o kadar yavaş yüklenirse, yeni uygulamaların kullanıcıları, yayından kalkmadan ayrılırlarsa nasıl çekmeleri gerekir?
Deborah

14

Ayrıca Varnish ve Memcached ile Heroku'da sahip olduğunuz önbelleğe alma seçeneklerini de araştırmak isteyebilirsiniz. Bunlar dynolardan bağımsız olarak sürdürülür.

Örneğin, değişmeyen bir ana sayfanız varsa, yanıta Cache-Control üstbilgileri ekleyerek bunu Varnish'te uzun süre önbelleğe alabilirsiniz. Böylece kullanıcılarınız, geldiklerinde değil "bir şeyler yapmak" isteyene kadar yük vuruşunu yaşamazlar.


4

Tom Robinson'un "Ölçeklenebilirlik: Heroku Nasıl Çalışır?" Sorusuna verdiği cevaba göz atmalısınız. Quora'da: http://www.quora.com/Scalability/How-does-Heroku-work

Heroku, sunucu kaynaklarını birçok farklı müşteri / uygulama arasında paylaştırır. Uygulamanız, tahsis edilmiş bilgi işlem gücü bloklarıdır. Kaynak talebine göre Heroku bölümleri. Daha fazla güç gerektiren popüler bir uygulamanız olduğunda, daha fazla 'dynos' (uygulama kapsayıcıları) için ödeme yapabilir ve ardından karşılığında daha büyük bir pasta parçası alabilirsiniz.

Sizin durumunuzda olsa da, birkaç kişinin (eğer sizin dışınızda varsa) ziyaret ettiği / kullandığı ücretsiz bir uygulama çalıştırıyorsunuz. Bu nedenle Heroku, adresinize bir talep gelene kadar uygulamanızı kaldırarak - esasen hazırda bekletme moduna alarak - elde ettiğiniz kaynakları azaltır. Bu olduğunda ve uygulamanız uzun süredir boşta kaldığında, yeniden yüklenmesi zaman alır.

Yeniden yükleme süresi önemliyse uygulamanızın uykuya dalmasını önlemek için fazladan 1 dyno ekleyin.


3

Ben de aynı sorunu yaşıyorum. Dün gece bir Rails 3 (1.9.2) uygulaması kurdum ve yavaş. 1.9.2 / Rails 3'ün Heroku'da BETA'da olduğunu biliyorum, ancak destek bileti bana gönderdikleri bazı talimatları kullanarak iyi olacağını söyledi.

Uzun bir süre sonra ilk talebin en uzun sürdüğünü anlıyorum. Mantıklı. Ancak bazen 10 saniye süren bir veritabanına bağlanmayan sayfaları yüklemek oldukça kötüdür.

Her neyse, yapacağım şeyi denemek isteyebilirsin. Bu benim uygulamamın profilini çıkar ve yerel olarak ne kadar sürdüğünü gör. 400ms sürüyorsa bir sorun var demektir. Ancak yerel olarak 50ms alırsam ve Heroku'da hala 10 saniye sürerse, kesinlikle bir şeyler yanlıştır.

Açıkçası, önbelleğe alma yardımcı olur, ancak yalnızca ücretsiz olarak 5 MB alırsınız ve bir kez daha siteyi BİR kişi kullandığında, bu kadar yavaş olmamalı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.