So here is the obligatory:
"Here's a nickle, kid. Get yourself a better computer."[0]
:-D0 - https://web.archive.org/web/20190304153157im_/https://assets...
Besides, who needs 32 bits when 16 will do ...
(Not serious.)
Hahaha, well played! :-)
Seriously, though, it is impressive to have a DOS machine running a web server in today's environment.
I assume dynamic content is produced via Sidekick[0]...
(ducks)
** 2023-07-14 18:38 PDT The DOS machine is getting DoSed. It's still beeping and happy but it's busy. **
This website is hosted on a 39 year old PCjr running at 4.77Mhz and it has been running over 2,500 hours continuously now. No reboots or program restarts ... you can see the current runtime stats by visiting http://brutmanlabs.org/status .The machine specs are:
- IBM PCjr w/ NEC V20 CPU (the V20 gives a small speed bump compared to the original 8088)
- jrIDE sidecar providing expansion RAM to bring the system up to 736KB and an IDE port
- Kingston SSD w/ a Startech SATA-IDE bridge
- Parallel printer sidecar, modified to be bi-directional
- Xircom PE3-10BT Ethernet adapter hanging off of the parallel port
- IBM PC DOS 5.02 and mTCP HTTPServ
- APC UPS (45 watt power draw with networking equipment)
- Dynamic DNS is being handled by my home router, which forwards port 80 to the machine.
All of the upgrade parts are there for performance or convenience; you could use period correct parts and everything would work the same. (The IDE adapter would be a homebrew MFM adapter and you'd have to use something like a 3Com 3C503 on a bus adapter, but all of that existed in the mid 1980s when the machine was new.)The web server is my own work, part of the mTCP project. Here are some of the features:
- serves HTTP 0.9, 1.0 and 1.1 requests to be friendly to vintage browsers
- Maps "normal" looking paths and resources to DOS 8.3 file format
- HTTP 1.1 requests can be pipelined.
- can serve up to 8 concurrent connections
- logging to local disk and over UDP
- can serve pre-compressed content
- basic auth
- runs on DOS 2.1 and up
- built in SNTP client for time syncing
Besides the UPS it needs the SNTP client to achieve long run times, otherwise dropped interrupts cause the machine to lose time. Without the SNTP client it was losing up to a few minutes per day depending on the system load. The SNTP client also helped it transition through the daylight savings time change in March.The limiting factor is going to be disk space for logging; it is generating logs and eventually that disk partition will fill up. (I need to add log rotating and compression.) This machine was running when the ChatGPT client for DOS was announced, and it was hosting the mTCP networking pages at the time, so it got quite a bit of traffic. I learned after that to leave a lot of space for logs.
It beeps when somebody visits - enjoy!
I remember playing around with Xircom parallel port ethernet adapters and TCP/IP packet drivers (and corresponding applications) in the 90s on an old 286 laptop I still had. Almost exclusively used it as a client, though. Good times.
I have a love/hate relationship with the Xircom adapter. It's portable and great for machines without ISA slots, but the max throughput is about 40KB/sec. A nice, real ISA card like a WD8003 can do over 100KB/sec on the same machine.
I have more open space in this machine because I am using a 3.5" drive instead. I also replaced the original fan with a quieter Noctua. The jrIDE is running naked on the side of the machine because I think it was having heat issues.
In a later iteration of this machine it will get more direct cooling; the slots in the case are kind of restrictive.
Although there are people are using Apache in front of their vintage computers to terminate SSL for them while still having the vintage computer handle the request.
It stayed up, but I had to replace the boot floppy. (Not the whole drive; just the $5 disk).
No fish were harmed.
Brought it home, let it dry for a few weeks. Worked fine for a few years after as a mp3 player.
I've turned down the logging level a little bit and turned off the beeper. On this machine, a 50ms beep on the motherboard buzzer is 50ms of delay. :)
The js-web is a huge waste environmentaly and it is sad since js is mostly used to spy and show ads.
Great demo of what such a machine can do, and how much we take our 3GHz, 12 core machines for granted.
BTW, how do you keep it dust-free?
On the plus side, when I finally do get around to building a cluster of these and a load balancer I'll know what to do. ;)
...no joke. However, in all seriousness: nice.
In my mind, this stuff is impossibly reliable and should simply not work, but here we are.
Back of the napkin-
assuming 2020 tech, 20 cores, 2.4ghz and ignoring all of the non-cpu complexity growth, it would be around 0.2 seconds lol.
If you were to wrap in the actual system complexity *operating frequency we’d probably be around 10ms equivalent complexity.
The reliability of modern computing systems is ridiculous.
At first I thought “~100 days, so what?” - but that was before I knew this was an 8088 managing to hold up to even just the background noise of the modern net (portscans, etc). It’s surviving being slashdotted by HN. Very impressive.
I'm just happy it's been surviving the hug of death for 12+ hours now. Given the age and software that might be the true accomplishment.
(That was featured earlier this year on HN.)
On a more serious note, the web server is the problem here. I've tried to run long periods of time before but eventually it would crash. I finally found a 10+ year old parsing bug that wasn't handling quoting correctly, and it was some sort of crypto coin mining JSON request that tripped the bug. So even what I thought was bullet proof years ago turned out to be broken by changes in the user traffic.
Was not at all uncommon to have heavy use Solaris or Tru64 boxes with 3 years uptime.
Edit: misread the CPU as a 486 somehow. I was wondering why the clock speed was so low.
This should tide you over: http://www.brutman.com/PCjr/pcjr_web_server.html
The main page is the best link. You might want to try back later after the initial rush; the machine is getting pounded.
It can serve 8 concurrent connections but that slows it down. It will queue a few more too; be patient and you will be rewarded.
(This machine has not been altered to speed the clock.)
Remember, this is a home computer from the mid 1980s. This thing is way outside of it's duty cycle. And the software is holding up pretty well too, even during what is effectively a DoS attack on a DOS machine.
Hug of death means I didn’t see the article