Jeroen - thanks for the advice. Yeah, SNAPSHOTS in prod is a poor practice anyway, this gives me a good incentive to find them and kill them.
Static files on boot... dang. When I was first investigating our slow boot time I swear I checked Enlive, but another quick glance at the source indicates it's almost certainly a contributor. Expletive! I will start capturing some metrics on how much time we're spending loading HTML templates at init. We're not loading a godawful number of separate HTML files, so I'd like to avoid a bunch of delays throughout my views if possible. Thanks a bunch Jeroen. -SP On Wed, Jan 23, 2013 at 11:19 AM, Jeroen van Dijk < jeroentjevand...@gmail.com> wrote: > Hi Scott, > > We had some issues as well. SNAPSHOTS are likely to be an issue because > they are re-checked at least once a day. So if your app needs a restart > this will be re-checked and might slow down boot time. We also had problems > due to this in combination with failing maven mirrors. It is probably best > to just not use SNAPSHOT versions in production. > > Another thing that can have impact on boot time is the reading of static > files on booting. We solved this by using '(def resource (delay > (expensive-task ))) and @resource to post-pone this execution for after > booting. > > We also use this feature > https://devcenter.heroku.com/articles/labs-preboot/ to minimize possible > downtime between deploys (not sure if this works for restarts as well) > > On top of that, we always have a minimum of two dynos for redundancy if > one is down. > > HTH, > Jeroen > > > > On Wed, Jan 23, 2013 at 5:00 PM, Scott Parker <scott.p.par...@gmail.com>wrote: > >> Anyone else running a production website with Clojure in Heroku and >> struggling with boot time problems? After digging through our logs >> from the past month, I've noticed it's not uncommon to have a dyno >> crashed for awhile because of boot time problems. It seems especially >> likely when dynos are cycling once/day - I'm guessing because of >> additional delays in picking up latest snapshot dependencies. >> >> Has anyone else run into this problem and has a bright idea? I have >> already verified we're using lein compile :all at deploy (by virtue of >> being on lein2), running in the production profile, and I am working >> on removing those snapshot dependencies. I've checked the app for >> obvious bottlenecks like web/DB/IO requests during initialization with >> no luck. We don't have a ton of code or dependencies right now, so I'm >> a bit skeptical that we can remain on Heroku as we grow. As a last >> resort, I suppose we could try a proxy bound to a Unix socket as in >> https://github.com/dblock/heroku-forward but I'd rather avoid that if >> possible. >> >> If not advice specifically in the context of pleasing Heroku, advice >> on troubleshooting slow app init times generally would also be >> welcome. I've done some minimal code benchmarking in Clojure >> previously, but never specifically towards resolving time-to-init. >> >> Thanks, >> -SP >> >> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> >> >> > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > > > -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en