Pourquoi mes applications Heroku de base prennent-elles deux secondes à charger?

J’ai créé deux applications Heroku très simples pour tester le service, mais il faut souvent plusieurs secondes pour charger la page lors de ma première visite:

  • Cropify – Basic Sinatra App ( sur github )
  • Textile2HTML – Encore plus basique Sinatra App ( sur github )

Tout ce que j’ai fait, c’est créer une application Sinatra simple et la déployer. Je n’ai rien fait pour perturber ou tester les serveurs Heroku. Que puis-je faire pour améliorer le temps de réponse? C’est très lent en ce moment et je ne sais pas par où commencer. Le code pour les projets est sur github si cela vous aide.

  • Si votre application est inutilisée pendant un certain temps, elle est déchargée (de la mémoire du serveur).
  • Au premier coup, il est chargé et rest chargé jusqu’à ce que le temps passe sans que personne n’y accède.

Ceci est fait pour économiser les ressources du serveur. Si personne n’utilise votre application, pourquoi occuper les ressources et ne pas laisser quelqu’un qui en a réellement besoin?
Si votre application a beaucoup de trafic continu, elle ne sera jamais déchargée.

Il y a une note officielle à ce sujet.

Vous pouvez également rechercher les options de mise en cache que vous avez sur Heroku w / Varnish et Memcached. Ceux-ci sont persistants indépendamment des dynos.

Par exemple, si votre page d’accueil est inchangée, vous pouvez la mettre en cache pendant de longues périodes dans Varnish en ajoutant des en-têtes Cache-Control à la réponse. Ensuite, vos utilisateurs ne connaîtront pas le chargement tant qu’ils ne veulent pas “faire quelque chose” plutôt que d’arriver.

J’ai le même problème. J’ai déployé une application Rails 3 (1.9.2) hier soir et c’est lent. Je sais que 1.9.2 / Rails 3 est en version BETA sur Heroku mais que le ticket de support a indiqué que cela devrait aller à l’aide de certaines instructions qu’ils m’ont envoyées.

Je comprends que la première demande après un long moment prend le plus de temps. Logique. Mais le simple fait de charger des pages qui ne se connectent même pas à une firebase database en 10 secondes est parfois très mauvais.

Quoi qu’il en soit, vous voudrez peut-être essayer ce que je vais faire. C’est le profil de mon application et voir combien de temps cela prend localement. Si cela prend 400ms alors quelque chose ne va pas. Mais si je reçois 50ms localement et que cela prend encore 10 secondes sur Heroku, alors quelque chose ne va pas.

De toute évidence, la mise en cache est utile, mais vous ne recevez que 5 Mo gratuitement et encore une fois, une personne utilisant le site ne devrait pas être si lente.

Vous devriez vérifier la réponse de Tom Robinson à “l’évolutivité: comment fonctionne Heroku?” sur Quora: http://www.quora.com/Scalability/How-does-Heroku-work

Heroku répartit les ressources de serveur parmi de nombreux clients / applications différents. Votre application dispose de blocs de puissance informatique. Partitions Heroku basées sur la demande de ressources. Lorsque vous avez une application populaire qui demande plus de puissance, vous pouvez payer pour plus de «dynos» (conteneurs d’applications), puis obtenir une plus grande part du gâteau en retour.

Dans votre cas, cependant, vous exécutez une application gratuite que peu de personnes, en dehors de vous, visitent ou utilisent. Par conséquent, Heroku réduit les ressources que vous obtenez en déchargeant votre application – en la mettant en veille prolongée – jusqu’à ce qu’une demande soit faite à votre adresse. Lorsque cela se produit et que votre application est inactive depuis longtemps, le rechargement prend du temps.

Ajoutez 1 dyno supplémentaire pour éviter que votre application ne s’endorme, si ce temps de rechargement est important.