Same with Wordpress. Wordpress itself cannot handle that amount of load, which is why you put caching in front of it. Users won't care, I give you that. But if you're talking about how much load a specific software can manage, including putting caching in front of it kind of defeats the point of the conversation.
Actually, with caching - they are. The database is there so that the person writing the blog post doesn't need to be very technical, or maybe so that they don't need to make a special effort just to update some post.
In the end everything is about convenience.
For cases like this at least having a nginx/varnish cache with a use use-stale-on-error policy would have been helpful. Even a very short cache-time like 1 second would probably have given a decent hitrate.
I replaced WP long ago, first with hugo (bad decision), then that with ghost (better decision). Not because of traffic, but because of the sheer number of hacks against the code base of WP appearing as zero days, and the rather extreme upgrading pain (the zero-touch upgrades failed on me a number of times, and I had daily DB backups). I had caching turned up to 11, and that system could easily handle the load (at the peak I was getting a hit every few seconds).
Hugo is/was spectacularly terrible from the perspective of authoring rich content. I could do as well creating a directory tree and writing html by hand. Or markdown.
I guess as I get older, I'm less inclined to spend time on things that don't just work, and don't get in your way with (often bad) opinions on how you should work. WP felt like too great a risk to work with. It was getting expensive to buy plugins to secure the site, when it wasn't generating revenue to offset the costs. Hugo was simply painful to work with. Ghost seems about right. Though grafting in the commenting bits took a little bit of work, which violated my concern about just working.
There are no great blogging solutions. There are a bunch of options of various capability. WP needs caching/php-fpm to work at an acceptable level for reasonable traffic. Hugo (as static pages) wound up not needing much caching. Ghost doesn't need much caching either.
As has already been mentioned as well below, it is trivial to set up caching on a WordPress site. Most of the WordPress sites that I run are entirely served from cache by nginx. Some are just CMS APIs that I use for a next.js build, and others have the simply static plugin which will rebuild the assets whenever something changes. It's really quite an amazing system, and as much as I do not enjoy PHP or WordPress, there is a reason why it is so ubiquitous now.
WordPress does have a serious problem of underqualified people writing plugins for it and such, but again that is not WordPress's fault, unless you want to blame WordPress for being successful enough to attract those people.
Personally I like this. It means that I was able to pick a caching engine that integrates directly into nginx, so that when I write a new post or edit an existing one the extension invalidates it directly in nginx. This means for the vast majority of my site the content is being served directly from nginx's memory cache. My performance is awesome. If they didn't go with an extension approach that would not have been nearly as easy to accomplish.