I've got no issues with this. Of course they want people to upgrade themselves. They do provide a very nice guide to using swap which I followed myself.
They want to look the best they can and as fast as they can. If your server is heavily using swap people will think it's slow. Also SSDs do not like being written to again and again. This is exactly what using it for swap does so this could be another little reason against it being on by default.
To be fair, I've got a small Wordpress website with Apache, MySQL and PHP on a $5 droplet. After several weeks of working fine MySQL ran out of memory and stopped. Adding swap space has fixed this and the server can still handle 100 connections at once OK. This isn't amazing but it's enough for me for now. So I'd say, add a little swap but be sure you don't have to use it often. I'm totally happy with it being off by default. More RAM will give much better performance than more swap and $5 is incredibly cheap.
I'm a new DO customer as well and I have no problem with this either. The $5 is for devs and designers- $10-$15 gets me something the public can use.
No contracts.
I have a couple of laptops in the office I use for devs as well- but it's on a dsl with a dynamic ip. To make it static is $30/mo (last I checked). To upgrade from dsl-- I have to switch providers, get a bigger bundle, etc.
This is waaaay better. I can still use the office machines- and do- but have something easier for most worker to use on a daily basis.
(The office ip is tracked with ddclient and I use dnsdynamic.org to follow it. I also email it to myself 4 times a day because dnsdynamic is free, and a little spotty. By the time I start paying for real ip stuff, I might as well go with DO.)
You should not consider swap space as additional memory. The performance of swap, even on SSD, cannot compare to RAM.
> Secretly wants you to switch to larger droplets
They operate a business where they get more money if you switch to a larger plan. What, do you think they want EVERYONE to stay on the $5/month plan?
Running out of memory is an issue of not being able to tune your stack correctly, and not being able to scale your application correctly. This is not the fault of Linux, mysql, or your hosting provider. It is your inability to plan ahead and prepare.
Except every other provider enables swap by default.
I understand another reason why they don't do it though... SSD has a very low amount of writes available, and if low mem machines are swapping all the time, then the SSD will wear out much more quickly.
Another annoying thing is that they disabled resizing the SSD space used. So now, when people upgrade from say 20GB to 30GB there is no easy way to do it. They did used to do this, but they disabled the easy interface for it. So lots of people upgrading are not getting what they paid for, or expected (easy upgrades of VMs).
On any host, physical or not, with more than 2GB of RAM people haven't run SWAP for years now. On cloud providers, even hosts with less than 2GB it is rarely worth it. It has horrible performance ramifications even when backed by SSD for the local host and any other tenants on that shared host.
This isn't a scam or them trying to upsell you. This is smart people who know systems operations making the right call for their customers.
Not enabling swap is extremely common in the hosting business. Even in EC2, a lot of the AMIs have no swap. This is to prevent users from thrashing your server hard drives. It's often better to have the customer run out of memory and realize they have gotten too small of a server then for them to start thrashing your HD and then just think your hosting is slow.
In a multi-tenant cloud environment certain resources are shared amongst customers, and in the case of swap the key resource affected is “disk IOPS” (IOPS stands for “Input/Output Operations per Second”; literally the number of read/write operations that can be performed on the disk per second). Disk IOPS are consumed whenever an application performs any sort of read or write to the physical hard disks.
If Cloud Servers running on the same physical host are running more processes than their allotted RAM, they will begin to heavily utilize swap. This has the side effect of consuming a large portion of the available disk IOPS pool, thereby causing what we refer to as the “noisy neighbor” effect. Put plainly, this means that other virtual machines can monopolize the disk and affect your performance, much like a “noisy neighbor” in the real world can disrupt your quiet dinner plans.
Prior to the change described above, a separate partition, solely dedicated to swap memory, would be given to each virtual machine by default. In order to provide the best service and consistent performance, as well as aligning to industry standard practice, we have removed this default swap partition. We believe this will lead to better customer experiences across the board.
I think for beginners having some swap enabled would be a good thing although there are probably production scenarios where there are risks of massive performance degradation once you start swapping and you may prefer to know that you have hit the wall.
On the SSD backed cloud servers I would hope that swap would perform relatively well compared to spinning rust and if that is how you want to use the i/o that they allocate you it should be fine.
I prefer having swap disabled by default and hitting the wall hard when out of memory.
Some swap is nice on desktop systems where memory usage can vary a lot. On server, RAM usage should be relatively stable. Tune your stack, pick appropriate plan that leaves some RAM headroom, and be done with it. Ah, and add alerts for when memory usage goes over some threshold.
Server memory usage may be stable but there are likely to be some cold spots that rarely (maybe never) actually get accessed so having a some swap space should have very little negative performance impact and give you a little more headroom before you hit the limit and processes start dying on you.
If you hit the point when it thrashes because the working set isn't fitting in memory then that is obviously a bad place but there is a fair chance you can stay a host size smaller and save money by running some swap.
As for what the cold spots might be I can easily imagine libraries being included/required in an interpreted language and only small fractions of their functionality used. Unlike native libraries they won't just be memory mapped in without using real memory.
No, Digital Ocean doesn't want you to blame them for poor performance, or less disk space than advertised when you choose a droplet. SSD swap can in no way replace having adequate RAM. If you really need swap it's easy enough to create a swap file. But starting with swap space on a VM is the kind of premature optimization that would make DO look bad.
Digital Ocean remains very cost effective even if you move up to a $40 a month plan, compared to the AWS m1.small plan - $40 per month vs $47, and you get an SSD based server and 4TB bandwidth included, plus 4GB vs 1.7GB RAM. The smaller Digital Ocean VPSes are great to play around with, but for real work the $40 remain great, even without swap enabled.
OVH's support vs DO's is incomparable. The one time I set up a dedicated server with them, I waited 38 days for it to get going and then the version of Linux on there was so bad I gave up after two weeks of trying to get it sane.
Like cuu508 said server memory usage should be very stable, if you're running into swap it means you don't have enough memory and you need a bigger droplet.
I use Digital Ocean because my requirements are bounded by disk, not RAM. If I need more RAM, swapping would not save me, SSDs are still slow compared to RAM.
They want to look the best they can and as fast as they can. If your server is heavily using swap people will think it's slow. Also SSDs do not like being written to again and again. This is exactly what using it for swap does so this could be another little reason against it being on by default.
To be fair, I've got a small Wordpress website with Apache, MySQL and PHP on a $5 droplet. After several weeks of working fine MySQL ran out of memory and stopped. Adding swap space has fixed this and the server can still handle 100 connections at once OK. This isn't amazing but it's enough for me for now. So I'd say, add a little swap but be sure you don't have to use it often. I'm totally happy with it being off by default. More RAM will give much better performance than more swap and $5 is incredibly cheap.