10 ms·
Heroku shouldn’t be sandbagging paying customers who have low-traffic apps
- bgentry 14y agoI’ve come to the conclusion that Heroku must be using adaptive processes to sandbag us. For example, to save on their resources, they must be creating static caches of the pages which are being requested from these cron pings. They could avoid loading my whole app back into memory with a trick like this. Please correct me if I’m wrong, but I see no other way for these pings to be successful and my app to still have bad initial load times when it is not visited for a while. You are incorrect. We idle single-dyno apps that have not recently received requests. We do no caching, unless you are running an old bamboo app and are therefore going through varnish. See https://devcenter.heroku.com/articles/dynos#dyno-idling https://devcenter.heroku.com/articles/dynos#dyno-idling
- biesnecker 14y agoWell, that's that it seems. Could it be that he's running a single dyno app (with a bunch of add-ons) and that's what explains the behavior he's seeing?
- bgentry 14y agoAddons have no effect on dyno idling behavior.
- dsowers 14y agoI don't understand how my app could be set to idle when I have pings hitting it from three separate sources. Also, the pingdom ping is looking for a specific word on one of my pages. It has to find this word to be considered successful.
- dsowers 14y agoIn my humble opinion, there must be some other process going on in the internals of heroku to keep my app idled. Please explain it to me if I'm wrong.
- lnanek2 14y agoHow often are the pings? Do the pings wait for startup or timeout? A lot of filtering methods on the traffic data could ignore isolated pings as well. They don't have to be using on/off. They could be using a higher threshold. E.g. one ping every 10 minutes, just startup and handle it then shutdown. 10 page loads every 10 minutes? Startup and stay up for 10 minutes. It's weird to even call page loads pings rather than the actual traditional ping as well, but whatever.
- dsowers 14y agoThe pingdom ping is every minute (http check type with a string match optional setting). The heroku scheduler is running once every ten minutes. I'm not sure how often new relic runs.
- Snappy 14y agoHeroku scheduler runs in a separate dyno so that wouldn't impact idling of the web dyno.
- h4rrison 14y agoRegardless of his slight misunderstanding of the technical side of things, he is correct when he says that you can be paying over $100 a month for a service and still be subject to dyno idling, which does seem pretty ridiculous, especially since Heroku takes a 30% cut of all add-on revenue (https://addons.heroku.com/provider/resources/HerokuAddonsLicenseAgreement.pdf https://addons.heroku.com/provider/resources/HerokuAddonsLic...)
- h4rrison 14y agoHaving said this, 30% of $108 is only $32.40, which still doesn't reach the price of another dyno.
- bgentry 14y agoHe is paying $100 for a bunch of add-ons, which have no idling. He is not paying anything for his dyno. The only current way to avoid this behavior is to pay for a dyno. If you don't like this behavior, that's something to complain about. I'm just stating facts to help explain why his assumptions are incorrect.
- imrank1 14y agoIt's interesting. I created a simple app (using the free dyno), use the free new relic monitoring and that keeps the app fresh (no idling). And I have no traffic coming to the site. All i'm paying for is SSL. I would think he would have no idling with multiple services pinging it for uptime.
- dsowers 14y agoEdit: The obvious solution is to buy another dyno. This isn’t the issue, however. I wrote this post to show the unfortunate grey area in their pricing structure. It’s possible for low-traffic customers to pay a lot and still be subject to the poor performance that comes with a dyno being set to idle. The greater underlying problem is there are some customers who only need one dyno (especially those of us who are running unicorn. My dyno can handle three times the number of requests) and we would rather spend a little extra on an upgraded database or some other addons.
- taybenlor 14y agoReposting my comment from the website here (unreadable there): I contacted support about this a while ago (was in a similar situation). Their response was "Use more than one web dyno". I didn't need more than one, but that was the only way they offered to allow my app to not "go to sleep".
- redguava 14y agoApparently you did need more than one, because that's what stops your app idling. I see no problem with their support response, it was accurate.
- dsowers 14y agoThanks for pointing out these issues. This is a new blog for me.
- eli 14y agoWould it help to think of it as "the paid tier dyno is buy one get one free" ? I agree that Heroku could do a better job of explaining their offering, but I don't think they're doing anything wrong.
- deleted 14y ago[deleted]
- hayksaakian 14y agoUnfortunate responsive design. Forcing me to read in landscape. http://www.imgur.com/SVebzkP.png http://www.imgur.com/SVebzkP.png
- hayksaakian 14y agoUnfortunate color choices. http://www.imgur.com/x8wCC8U.png http://www.imgur.com/x8wCC8U.png The same day as a post about about contrast.
- Sander_Marechal 14y agoCheck your browser plugins, especially adblock. The background on the comments should be dark grey #ccc. You're probably blocking or rewriting something from Disqus.
- hayksaakian 14y agoThis is chrome 18 on a nexus 7. There are no browser plugins.
- mrgoldenbrown 14y agoI am having a similar problem, in Chrome and IE, on a XP box. the background is dark grey, and the text is slightly lighter grey. No plugins.
- taf2 14y agofor $108 / month you could have a very nice setup on any number of VPSs, RS, ec2, etc... you could have at least a 2GB setup either split between 2 hosts or all on one depending on how you plan on scaling... but really IMO if you plan on running anything for any matter of time beyond a (hey checkout my neat idea app) get off heroku and figure out how to setup your own systems, nginx/haproxy, etc... sure it's nice to focus only on the app side with heroku so learn stuff there but eventually unless you're getting funded - you'll need to know how to manage your own servers... just my thoughts.. and i do put lots of little projects on heroku but they're mostly none critical services... or ideas
- redguava 14y agoWhy do you need to know how to setup and manage your own services. If it's not your expertise, spend your time where you can add the most value. I think Heroku is a perfectly fine option until you reach the point where you could hire a full time dev ops. It's a pretty cheap way to have servers set up with 24/7 monitoring and technical support.
- jrochkind1 14y agoI do agree that heroku, while not cheap, is a value for what you get. But I wonder if that comparison "I think Heroku is a perfectly fine option until you reach the point where you could hire a full time dev ops" is actually one anyone makes in reality. A full time ops person is going to cost way more than $100 a month, quite a bit more than several thousand a month in fact. Are there really people who would go with heroku until they're paying $5 or $6k a month or more, and somewhere around there (that's a lot of heroku), say "Gee, _now_ we're paying enough (barely) to hire a fulltime person to manage the servers ourselves, let's switch everything to that."
- redguava 14y agoI think so.
- Uchikoma 14y agoI'm running a Hetzner server for 10yrs now. Debian, now Ubuntu. I've installed Redis, Nginx and some other stuff with apt-get and have an basic iptables setup. Could you detail what I would not need to do when I'd chose Heroku? What "expertise" you are speaking of, apt-get? I'm confused these days about cloud and how this would save me "full time dev ops". Could you elaborate?
- redguava 14y agoHeroku don't hide this, it's in their documentation https://devcenter.heroku.com/articles/dynos#dyno-idling https://devcenter.heroku.com/articles/dynos#dyno-idling. Imagine how many free apps are created that are never used again. Should Heroku really devote resources to these apps? I think it's perfectly reasonable to idle them after a period of inactivity. If they didn't, they would need more resources and ultimately the customers would be paying for that. They aren't a charity, they are a business. It's pretty simple, if you don't want your app to idle out after 1 hour of inactivity, buy a dyno for $35 p/month.
- grannyg00se 14y agoFrom the documentation they "...will have that web dyno idled out after one hour of inactivity." The issue is that there is no hour of inactivity because there is web monitoring/querying supposedly going on automatically. So there should be no idling.
- redguava 14y agoThey are trying to "cheat" the system by setting up automated pings to keep it alive. Do you really think that's in the spirit of the offering from Heroku? I don't know why it isn't working but I hope Heroku just "handles" that scenario. Like I said, if Heroku did provide the resources for all these free apps (and there must be so many that aren't used) then that would be reflected in their pricing. I pay for Heroku and don't want to be paying more to compensate resources for their free apps.
- grannyg00se 14y agoI don't think it's in the spirit of the offering, but that's up to individual interpretation. What is very clear is that it doesn't seem to be behaving as documented. That's a problem. Also, bgentry stated "We idle single-dyno apps that have not recently received requests. We do no caching." This also seems to contradict what is happening and adds to the confusion. Why not just clarify what exactly is going on? It's completely reasonable to be handling this kind of situation however they are doing it, but it's not reasonable (IMHO) to repeat and support misleading/incorrect documentation.
- bhauer 14y agoAs an aside, that's a nice site you've built, dsowers.
- ericabiz 14y ago> "I’m employing things like resque, redis-to-go, memcachier, and a dedicated crane database..." Yet you have a 507KB (!) image on your site's home page. Optimizing that would go a long way toward improving the end-user experience.
- dsowers 14y agoFine-tuning an image like that only matters when your site is getting a ton of traffic. I am only employing these other services for the learning experience.
- MichaelGG 14y ago1. Reducing a half-megabyte image is hardly "fine tuning", especially on a basic information page. 2. It matters to every user that loads the page, regardless of how much traffic you're getting. 3. As a side note, this info page is nearly 2MB on wire. Turn on gzip (like 700KB+ of JS/CSS and stuff) and figure out what else is taking up so much transfer.
- grey-area 14y agoYou should look into setting up a small vps. It would be far cheaper, you can run any services you want, and you'd control uptime of processes etc. it's really not hard, and it's quite possible to scale to millions of users a year on a small vps with some caching. Right now you're paying for lots of stuff you're never going to use, and underpaying for the stuff you need ( actual web server processes.) Heroku is not for you, and they're not going to change their policy on free dynos for you because you're trying to use the free trial of this for a real website, which is not going to work or allow you to learn about scaling a website. This could be something as simple as them ignoring pings from pingdom when deciding to spin up workers, have you tried using curl to simulate hits? Heroku would probably be happy with you moving to linode, it suits what you want to do a lot more. Re the image, if you're serious about learning about site optimisation, and dealing with load, yes it does matter, far more than your db until you reach much larger scale.
- 14y ago
- Sami_Lehtinen 14y agoAt least Google isn't doing it, you can enable "warmup requests". https://developers.google.com/appengine/docs/python/config/appconfig#Warmup_Requests https://developers.google.com/appengine/docs/python/config/a... Btw. Heroku and App Engine apps start fast, compared to what ep.io (free) app start took, it was more like 20-30 seconds than 2-5 seconds.
- carsongross 14y agoI feel your pain, as a fellow bootstrapper, but a single paid dyno, which will keep your app unidled, is gonna cost you $35 a month. I did run into a bug recently where one of our dynos was being idled even after we paid up, but it has since been resolved. I'd say just pay them another $35 a month. Considering the miracles Heroku regularly performs as an ops team, it's worth it.
- dsowers 14y agoTo clarify: I understand that getting another dyno would solve this problem. I love heroku but I think that they need to rethink the idle process. Some users only need 1 dyno and a bunch of addons. If we are paying decent money then the idle threshold should be increased, in my opinion.
- twanlass 14y agoIt's just semantics. They are giving away the first dyno. Would you prefer they took that away when you purchased one for real? 2 for the price of 1 seems pretty nice. That and fundamentally (as you noted about being optimistic) you're paying $100+ a month for an app that gets zero traffic. That seems to be the core issue.
- deleted 14y ago[deleted]
- guywithabike 14y agoThey don't. Open a support request.
- ddagradi 14y agoApps with > 1 web dyno are not idled. Please do open a support request if you think your app is being idled incorrectly.
- 1123581321 14y agoWe use Pingdom to keep a couple low-traffic sites alive without issue. I think we could provide you with more help if you posted a condensed sample of your Heroku logs.
- suresk 14y agoThis is kind of an annoying problem if you have a lot of small sites for whatever reason. I think their policy is reasonable and they are upfront about it, so I certainly don't begrudge them, but it is still annoying. What is the best way to host a bunch of low-traffic sites for less than $35 (I believe that is what it costs for the second dyno, required to keep your app from being spun down) each per month? The usual answer is "PHP", but I sometimes wonder if there'd be a market (and way to make money) for Heroku-like ease of deployment/management, billed based on resources (much like a VPS) rather than per application.
- X-Istence 14y agoI host a whole range of applications on a single dedicated server from OVH.com. $40 a month. It hosts email, various domains, static, non-static, Python, Ruby, Postgres, MySQL ... and I don't pay a cent more for each of those services. One of the sites I host on there has been Reddited and it didn't even break a sweat...
- suresk 14y agoVPS and Dedicated Servers certainly work and are usually going to be more economical, but then you are going to have to deal with all of the setup/maintenance tasks that Heroku abstracts away from you. I'd venture that there are far more people using Heroku for its easy deployment and management than its ability to scale quickly and easily.
- khet 14y ago>I'd venture that there are far more people using Heroku for its easy deployment and management than its ability to scale quickly and easily. That's well and good but I wouldn't be so quick to pass off on dedicated. A simple 50-100 line fabric script that takes 30 minutes to write can manage your custom deployment for you. And guess what, your next project will be even easier to deploy because of that same script. If the only reason to use Heroku or other of its kind is easy deployment - maybe we just need better deployment apps that can work seamlessly across servers.
- scottmotte 14y agoI'd be curious what dsower's heroku logs look like. Would you mind posting the portion of this where it happened? The logs should show 'idling' when idling and also show the 'pings' from pingdom and/or new relic. Looking through that it'd give us all something concrete to discuss - because quite possibly this is just a bug with Heroku's dyno idling that could have simply been submitted as a support ticket.
- jtchang 14y agoBest thing to do is provide the logs and see if it is idling. I agree though that if you are hitting the damn thing every second it shouldn't go idle.
- aaronbrethorst 14y agoI have some feedback on your site (http://www.mycelial.com http://www.mycelial.com) that is unrelated to your post. I had no idea what your site was until I went to the About page. I think the contents of the About page should be put on the homepage.
- parasj 14y agoA cron job where a request is sent at regular intervals to a dyno from Phantom should solve your issue. It should be justified if you are buying addons. For free sites with no revenue to Heroku, it's reasonable since they have many sites that only get visited monthly, if that.
- endianswap 14y agoIsn't what you're suggesting exactly what he has three services doing? Why from Phantom?
- greghinch 14y agoThe add-ons aren't Heroku, they are 3rd parties. That being said, they aren't making this policy a secret. Not sure what you have to complain about after the fact.
- nasmorn 14y agoSeems to me the real problem is you spend 50 for a bigger DB instead of 35 for a dyno. If you got no traffic why do you need so much db cache especially in addition to memcache. You can easily fix that with pgbackups and import into a basic db.
- infinii 14y agoWrite 'intelligent' automated tests (you're a HN'er so you have these already right ;) and schedule them to run CI on your production site. That may prevent any adaptive processes from caching.
- mosselman 14y agoI love the way the comments have steered into technology nonsense, while the issue has nothing to do with the way in which Heroku screws him over, just the mere fact that they ARE screwing him. Commenters who have suggested 'just pay $35/month for not having 10 second lag' are idiots. Heroku is a great and easy service, but I find the add-on 'no lag for $35/month' which is what the dyno basically is to the poster, unacceptable. But if most commenters are willing to pay into the hype, go ahead. Just go with Linode or appfog or something.
- Turing_Machine 14y agoHow is giving him a free dyno (albeit one that spins down when it's idle) "screwing him over"? Be specific. The cheapest Linode is $19.95/month, and that's just a bare VM. You have to do all the sysadmin stuff yourself. For $15/month more, Heroku takes care of all that for you. If your time is worth anything at all, maintaining your Linode is going to burn up more than $15/month. Now, granted, for some use cases the Linode makes more sense (I have one of those, too, and have been happy with it and the company overall), but I don't think either company is screwing anybody over. Both are offering good value on their products, but those products are different. Linode gives maximum flexibility, but at the cost of full responsibility. Heroku gives maximum convenience, but at the cost of less flexibility.
- mosselman 14y agoI call it being screwed over when you pay over $100/month to have your site 'spin down'. I grant you that Heroku is a great service. Having a reasonably big site you'd need a system admin who costs $100/hour, Heroku saves on that too. I am not arguing against the technical convenience that it brings you. But I believe the policy of spin downs should depend more on if and how much you are paying, rather than if you are paying for a specific element of their service, in this case a dyno. It does not cost $15/month more to achieve what the poster wants, but $35/month.
- Turing_Machine 14y agoHe's not paying "$100/month" for dynos. If he wants to avoid spin downs, he has to pay for a dyno. That's not hidden. " But I believe the policy of spin downs should depend more on if and how much you are paying, rather than if you are paying for a specific element of their service, in this case a dyno." You're seriously arguing that if you buy several items from a company, they're then obligated to give you a completely different item for free?
- mrgoldenbrown 14y agoYour post says that you want to hear from Heroku, but it doesn't mention anything about you trying to contact them directly. Did you try to contact them before making a somewhat accusatory blog post without much proof? What did they say?