DEV Community

Cover image for When Your VPS Never Had the Resources It Was Sold With

When Your VPS Never Had the Resources It Was Sold With

Pascal CESCATO on August 05, 2026

I needed a VPS to run CyberPanel. Simple enough: 1 vCPU, 1 GB RAM, 10 GB SSD, IPv6 only. CyberPanel needs IPv4, so I upgraded to the next tier: 2 v...
Collapse
 
unitbuilds profile image
UnitBuilds

Great job! And yes, resource allocation on servers is a dodgy one, that's how Google offers you terabytes worth of storage included in any subscription, because they know nobody would use even a fraction of it. Essentially that 2tb, or whatever is 'allocated' actually isnt, it's just a promise and they know they cant deliver if everyone actually used it. If everyone filled up their Google Drives, Google would error out before even 1/3rd finished. Because they know 99% of people use less than 100GB, the rest max use around 500GB. Result is over promise and deliver exactly what you use, because the probability of everyone needing it all at once, is impossible. Same goes for networking, IPv4 is a limited resource, so they have to shuffle it around in order to meet demands, but that also means you never get a fixed address online, you're likely sharing it with atleast 100 other instances. Serious security vulnerability if someone figures out how to exploit it properly, but that's just the nature of limitations.

Collapse
 
pascal_cescato_692b7a8a20 profile image
Pascal CESCATO

Thanks! I completely agree that oversubscription is part of how many cloud services work. Storage, CPU, bandwidth... they're all based on statistical usage patterns rather than everyone consuming their full allocation at the same time.

What surprised me in this case was that it went beyond normal oversubscription. The VPS couldn't even sustain the resources it was explicitly sold with, under a perfectly ordinary workload. It wasn't a peak usage problem or a temporary contention issue—the capacity simply wasn't there from day one.

I don't mind shared infrastructure when it's honestly represented. What bothered me was paying for guaranteed specifications that the platform could never actually deliver.

Collapse
 
unitbuilds profile image
UnitBuilds

Agreed, you are supposed to get what you pay for, especially if you pay a premium for exact specs and you didnt even ask for much, a few gb of ssd and an IP, those are literally the bare minimum for cloud

Thread Thread
 
pascal_cescato_692b7a8a20 profile image
Pascal CESCATO

Exactly. What frustrated me most wasn't the lack of performance—it was the time lost debugging software that turned out to be innocent. Once you assume the advertised infrastructure is trustworthy, you naturally look elsewhere for the problem. In this case, the infrastructure itself was the root cause.

That's a lesson I'll definitely keep in mind for future investigations.

Thread Thread
 
unitbuilds profile image
UnitBuilds

Actually points to a comment I left earlier today on another post, regarding abstraction layers. We treat high level languages as the norm, even though it's multi-layer abstractions of OpCodes and we just trust that Console.WriteLine() works, we dont question if it has a bug, we just assume and that assumption is exactly what caught you here, you assumed that paying for infrastructure meant your infrastructure 'just works' and that's the same assumption I make when I used a SnackBar in Blazor and my 1 UI button on a dialog didnt work... I assumed Blazor just works, I never considered till after hours of debugging that it was actually the SnackBar not disposing properly that was causing the issue.

Thread Thread
 
pascal_cescato_692b7a8a20 profile image
Pascal CESCATO

That's a very good analogy. The higher the abstraction level, the more we rely on assumptions because we simply cannot validate every layer every time.

A developer debugging an application usually starts at the application layer, not by checking if the CPU instructions generated by the compiler are correct. Likewise, when renting a VPS, you normally start by looking at your configuration, your services, your code—not by questioning whether the provider actually delivered the resources advertised.

The tricky part is that sometimes the layer we consider "trusted" is exactly where the problem is. Good debugging is often about knowing when to break the abstraction and verify the foundations again.

Your Blazor example is a perfect illustration of that: the framework was not the problem, but the assumption that "this component behaves as expected" delayed finding the real cause.

Collapse
 
sylwia-lask profile image
Sylwia Laskowska

Great article, Pascal! 🙂 I really like how it illustrates the right way to approach debugging: understanding the root cause first instead of blindly throwing hotfixes at the problem, which unfortunately happens far too often. 😄

Collapse
 
pascal_cescato_692b7a8a20 profile image
Pascal CESCATO

Thanks, Sylwia! 🙂 I completely agree. I've found that many "technical" problems are actually symptoms rather than causes. If you only fix the symptom, you often end up building workarounds on top of a faulty foundation. This case was a good reminder that before questioning the software, it's worth questioning the assumptions—even the infrastructure itself. 😄

Collapse
 
kenwalger profile image
Ken W Alger

Great article and insights.

Collapse
 
pascal_cescato_692b7a8a20 profile image
Pascal CESCATO

Thanks, Ken! Much appreciated. 🙂

Collapse
 
tyriantrade profile image
Tyrian Trade

The rebuild test is the key takeaway here. A VPS can look “fixed” at the guest level while the underlying provisioning template is still broken. Always verify the resources after a rebuild.

Collapse
 
pascal_cescato_692b7a8a20 profile image
Pascal CESCATO

Exactly. A rebuild is a much better test than simply resizing the filesystem. If the VM comes back with the same undersized virtual disk, the problem is clearly above the guest OS. That's why verifying the actual resources after a rebuild should be part of the troubleshooting process.

Collapse
 
tyriantrade profile image
Tyrian Trade

Exactly. Verification is just as important as the rebuild itself. The same principle applies to trading infrastructure — you need reliable data, transparent tools, and proper risk management to make better decisions.

That’s one of the ideas behind Tyrian Trade — bringing market data, trading tools, strategy research, and a trusted trading community into one platform. Worth checking out if you're interested in building a more systematic trading workflow.

Collapse
 
eva-nomados profile image
Eva

The point about support patching the live instance vs actually updating the VM template is so spot on. I’ve burned hours on this exact thing before—support runs a quick command on the host, marks the ticket resolved, and the second you rebuild or redeploy, you’re right back at square one because the base template was broken all along. Testing a rebuild before closing the ticket is a rule I'm definitely stealing.

Collapse
 
pascal_cescato_692b7a8a20 profile image
Pascal CESCATO

Exactly. That distinction is what I found most interesting in this case: fixing the live VM can make the problem disappear temporarily, while a rebuild exposes whether the underlying provisioning is actually correct.

I think “test the rebuild before closing the ticket” is a pretty good rule for VPS support in general.

Collapse
 
jacobfoster21 profile image
jacob foster

This is such a frustrating kind of problem because everything looks fine on paper. Sometimes the real headache isn’t Linux at all, but what the provider actually gives you.

Collapse
 
pascal_cescato_692b7a8a20 profile image
Pascal CESCATO

Exactly. Or rather, sometimes the real headache is what the provider doesn't give you — despite what you actually paid for.