top | item 31055132

Show HN: My website, hosted on a 386 25 MHz, 4 MiB of RAM, 38400 baud internet

234 points| serentty | 3 years ago |serentty.com

170 comments

order
[+] quenix|3 years ago|reply
This uses CloudFlare and the page is cached (CF-Cache-Status: HIT header). Kinda disappointing that we're not receiving data from your compunet but rather the CloudFlare edge machine.
[+] serentty|3 years ago|reply
If you had visited a few hours earlier it would have been direct. Then the hug of death hit.

If you want to visit the page directly without CloudFlare, go to http://trombone.zapto.org instead.

[+] Thorrez|3 years ago|reply
I don't have that. My response headers:

    HTTP/1.1 200 OK
    Server: mTCP HTTPServ Mar  7 2020
    Date: Sun, 17 Apr 2022 00:30:00 GMT
    Content-Type: text/html
    Content-Length: 5355
    Expires: Fri, 14 Oct 2022 00:30:00 GMT
    Last-Modified: Sun, 17 Apr 2022 00:02:00 GMT
    Connection: keep-alive
The page loads very interestingly. Each paragraph loads separately, one at a time down the page. I'm guessing because of the bandwidth limitation.
[+] WheelsAtLarge|3 years ago|reply
I find it interesting how little computer power you need to host a highly accessed website by using CloudFlare. When 386's were the cutting edge it would have taken a car load of computers plus some fancy cutting edge load balancing software. All very expensive.
[+] bmacho|3 years ago|reply
I am disappointed too, I wanted my request to be served from that machine :/
[+] AviationAtom|3 years ago|reply
I just like to go to these to see if they actually are working. Sadly, but predictably, they never are.
[+] serentty|3 years ago|reply
It worked ridiculously well before I posted it to Hacker News. ;)
[+] serentty|3 years ago|reply
It has gotten pretty busy. In case you can’t manage to load it live from the machine, here is a snapshot of it:

https://archive.ph/WUdgc

[+] raverbashing|3 years ago|reply
Yeah, even a local cache in front of the serial link would go a long, long way into making this more feasible
[+] mbbrutman|3 years ago|reply
For the record, the machine is running the mTCP web server: http://www.brutman.com/mTCP/mTCP_HTTPServ.html

I wrote it back in 2014 and I've hosted brutman.com on it at times. My usual machine to run it on for torture testing is a PCjr with a hard drive and Ethernet. This 386 would be so much happier with an Ethernet card; the serial port connection is really hurting the performance.

A new version of mTCP is in the works; look for it in the next two months.

[+] serentty|3 years ago|reply
Oh wow, I know you from the README! It really is something seeing you here. It is not a very impressive site at the moment but the immense amount of traffic that I have been getting is encouraging me to grow it into something with some actual content. Probably something retro related in some way.
[+] xyst|3 years ago|reply
> I have gotten Rust to compile for 386 DOS machines before

I don't know why I laughed so hard at this. Why would any sane person do this?

[+] orangepurple|3 years ago|reply
Ditch cloudflare and write the web server in assembly and see if it holds up to raw HN traffic. Bonus points if you have an L1 cache and can fit and serve your entire website from it.
[+] serentty|3 years ago|reply
I think the 38400 baud connection is a bigger issue than the CPU load. When I get Ethernet working I think there is a decent chance that I won’t need CloudFlare—especially if I can find a full 32-bit server that really uses the potential of the 386. Now to wait for that card to arrive in the mail. ;)

Edit: If you want to visit the page directly without CloudFlare, go to http://trombone.zapto.org instead.

[+] MrYellowP|3 years ago|reply
Poor 386. 25MHz ... an SX, I'd guess?

Man, you should get that upgrade to 8 megs of RAM.

Windows 3.1 benefitted greatly and even OS/2 Warp,

which already worked fine with 4 megs, saw some improvements in performance.

[+] serentty|3 years ago|reply
It is indeed an SX! I am upgrading it to 16 MiB soon, as well as putting an Ethernet card in it. At that point I think it might end up a much more capable host. I am not sure if I want to find some way to keep this page up long-term yet. If there ends up being a reason to, then I will look around for some suitably retro way to host it, while still allowing me to use the 386 for other things.
[+] vmception|3 years ago|reply
Its a good reminder that you can!

My issue with these projects is how much energy they use for whatever task they can do.

I have a 10 year old machine that was a high end machine in its day, being lapped by a high end laptop on all tasks, except for gpu tasks I slammed into the PCIe slot. The power consumption is honestly sad. Its not like its an energy cost thing, as it would take decades to break even in lower electricity bills after buying a high end machine specifically for lower energy use, its more of a self conscious thing.

OPs machine should just be a compute instance virtualized in some gigantic memory cluster somewhere that was already running.

[+] aaaaaaaaaaab|3 years ago|reply
>OPs machine should just be a compute instance virtualized in some gigantic memory cluster somewhere that was already running.

Then it would no longer be OP's.

[+] sydthrowaway|3 years ago|reply
Why aren't there ASICs for hosting web sites
[+] SystemOut|3 years ago|reply
This is what my first PC was my freshman year of college back in 1990. Felt damn good I got the 65MB hard drive instead of the typical 40MB that most machines had back then.
[+] serentty|3 years ago|reply
Heh, this has an 80 MB hard drive and it is killing me with how small it is. I’m constantly transferring stuff back and forth.
[+] philjohn|3 years ago|reply
Luxury!

I had a 40MB hard drive on my Cyrix 386, and double-spaced it to "80"MB

It's crazy to think how little 40MB is now, I've edited PowerPoint decks larger than that.

[+] fevangelou|3 years ago|reply
Thanks to CloudFlare, it's working now...
[+] serentty|3 years ago|reply
Yep, I figured it was the only way to get it to keep working. Interesting that it seems to work for you already. It isn’t yet going through CloudFlare for me when I try to visit it. Maybe DNS cache?
[+] borgchick|3 years ago|reply
PSA: if you want to see how the site loads directly from the machine (eg, bypass cloudflare), just give it any random query string param. Such as: http://serentty.com/?t=13432 or http://serentty.com/?t=356561649

If you look at the headers, you'll see "CF-Cache-Status: MISS".

And you'll see the site load, just as you remember from the BBS days.

You are welcome.

[+] serentty|3 years ago|reply
I actually added a link to the page to bypass CloudFlare entirely. I wanted the page to remain accessible so people could see what was on it regardless, but CloudFlare helps with that, but I also know that setting the page load slowly from the real machine is also an experience that many people are there for, so I tried to find a way to have my cake and eat it too.
[+] jotm|3 years ago|reply
Big ooof, of course it's down. I'm hosting a simple static site on a Core 2 Duo + 4GB RAM and it's amazing just how slow the hardware is. It can barely handle 100 concurrent visitors (as tested with JMeter), and if it starts swapping on the spinning rust inside... that's it, forget it, come back the next day. I don't even know how a 386 can even start with modern software.
[+] LeFantome|3 years ago|reply
Why so slow? As a “this will never work” stop-gap when my laptop died, I put the latest Manjaro Linux on a Core Dou iMac ( early 2008 ) to use for work that day ( 6 GB ). I was blown away how well it worked and I was able to do everything I normally do without problems ( well, except I had to use the Outlook web client for email / calendar — but that is just Linux and not hardware ). Months later, I still use it almost every day. It is my preferred spot to take Zoom / MS Teams meetings due to the large screen. I run Docker and Distrobox containers on it. I built a toy compiler in .NET on it. I play Diablo and StarCraft on it from time to time. I have it running Plex and it serves movies and TV episodes to my family ( often to more than one device at a time ). I toy around with SerenityOS on it in QEMU ( in a VM ) and it runs great.

I have not tried to host a static website but it surprises me that 100 visitors would give that hardware trouble. I will have to try that now.

[+] jandrese|3 years ago|reply
I assume you're doing more than just serving up static HTML if your machine can't handle 100 simultaneous connections with a C2D.
[+] digitallyfree|3 years ago|reply
A regular static site shouldn't be a problem on a C2D with 4GB, and it shouldn't be swapping either (unless you're doing more than web hosting on that machine). I'm assuming you're literally serving static pages and not running much server-side.

Many people host static sites on 1GB SBCs and 1GB/1T VMs with no issues, and you can make do with even less.

Update: I tried some tests on my secondary server, which is likely slower than your C2D (AMD G-T48E). I simply ran ApacheBench on the Proxmox Backup Server web interface login page since that's the only web service I have running on it. The two machines were connected over Gigabit LAN and HTTPS was used.

This is 1000 requests at a time for a total of 5000 requests. While it was running I was able to make a connection to the login page in my browser as well (it took six seconds to load, but it loaded). I think I did the test properly but let me know if I should try something else; it's been a while since I've done this kind of stuff.

  ~$ ab -n 5000 -c 1000 https://<PBS server>:8007/
  This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
  ...
  Benchmarking <PBS server> (be patient)
  ...
  Finished 5000 requests
  ...
  Server Software:        
  ...
  SSL/TLS Protocol:       TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256
  Server Temp Key:        X25519 253 bits
  ...
  Document Path:          /
  Document Length:        1940 bytes
  Concurrency Level:      1000
  Time taken for tests:   34.274 seconds
  Complete requests:      5000
  Failed requests:        0
  Total transferred:      10215000 bytes
  HTML transferred:       9700000 bytes
  Requests per second:    145.88 [#/sec] (mean)
  Time per request:       6854.761 [ms] (mean)
  Time per request:       6.855 [ms] (mean, across all concurrent requests)
  Transfer rate:          291.06 [Kbytes/sec] received
  
  Connection Times (ms)
                min  mean[+/-sd] median   max
  Connect:       21 2863 2225.0   2535   10907
  Processing:    98 3275 1836.3   3142   10434
  Waiting:        1 3275 1836.4   3142   10434
  Total:        118 6138 3078.9   5655   12545
  
  Percentage of the requests served within a certain time (ms)
    50%   5655
    66%   6733
    75%   6965
    80%   7569
    90%  12324
    95%  12469
    98%  12504
    99%  12517
   100%  12545 (longest request)
[+] huhtenberg|3 years ago|reply
Takes 80ms to load. From Europe. That's insane, if not altogether impossible.

But the IP resolves to 188.114.96.3, which is Cloudflare.

So regrettably it doesn't look like I was actually fetching anything off 386 per se.

[+] serentty|3 years ago|reply
When I first posted it a few hours ago, I didn’t have CloudFlare. You can see lots of people unable to load the page at all in the earliest comments. Unfortunately it got to a point where pages weren’t just slow to load, but the connections were dropped entirely. So I figured that between the options of enabling CloudFlare or just having it be completely inaccessible, the former was preferable even at the cost of authenticity. I would love to find a better idea for how to keep the site online, if you have any.
[+] wonderbore|3 years ago|reply
It took 96ms to load on an Indonesian island. This is the internet we deserve.
[+] cush|3 years ago|reply
Wouldn't load. Title checks out. :)
[+] Cd00d|3 years ago|reply
Why does the title have the 'i' in 4 MiB of RAM? That's 4 megabytes, right? Traditionally 4 MB?

What does the extra lowercase letter indicate? I'm not used to that, and I've been dealing with bytes from the kilo-size to the peta-size for 40 years.

[+] kadoban|3 years ago|reply
MiB is an attempt to disambiguate what used to be unambiguous before the hard drive companies set their marketing teams on it.

Specifically, MiB is 1024^2 bytes. MB is either that or 1000^2 bytes, depending on who you ask and if they're trying to sell you something.

[+] johnnyapol|3 years ago|reply
MiB refers to mebibyte, which is in base-2 (2^20 bytes).

MB is canonically base 10 (10^6 bytes).

[+] tomrod|3 years ago|reply
I guess we could host sites on phones now too. That'd be really cool.
[+] lucb1e|3 years ago|reply
That was my first thought when I got unlimited mobile data back in ~2006. I could be always on IRC, seed torrents infinitely... and that's when the teenage lucb1e realized that there is no port forwarding on mobile networks and why that is a problem.

To this day I wonder why nobody seems to care at all about that. It's like being on the real internet except you can't reach each other, you have to always go through some third party that is on the internet proper.

At least we got "net neutrality" now, which doesn't apply to SYN packets for some reason but at least it applies in the other direction, so no more 'blocked site' page on buienradar.mobi because KPN wanted to sell its expensive SMS weather service instead of this newly popular weather radar site.

For what it's worth, I did compile and run a bitcoin miner on my phone ten years ago. Running services on it isn't exactly a new idea, but now that they're so powerful, it also means we can't supply enough power from the battery or dissipate enough heat while in a pocket.

[+] butz|3 years ago|reply
I bet someone is trying to access this website using similar hardware.