←back to thread

24 points pajeets | 1 comments | | HN request time: 0.208s | source

First time I'm doing colocation and as experiment I picked up a 1TB DDR4 RAM server with 24 cores (around 2.2ghz each)

What should I do now? What stuff should I run?

I have a hello world Flask app running but obviously its not enough to use the full potential.

I'm thinking of running KVM and selling a few VDS to friends or companies.

Also thought of running thousands of Selenium browser tests but I do this maybe once a year, not enough to fully utilize the server 24/7

Help! I might have gone overboard with server capacity, I will never have to pay for AWS again, I can literally run every single project, APIs, database I want and still have space left over.

1. austin-cheney ◴[] No.41872874[source]
Simulations of maximum concurrency.

With hardware like that I would research a couple of things:

* Maximum number of servers, HTTP/WS, I could run simultaneously. I am working on a server application to do this right now. Each server should be 1, 2, or 4 ports. You could run HTTP over WS which allows both protocols over a single port. If you want to allow both TLS and insecure connections it would still be two 2 ports, or 4 ports if you are isolating HTTP and WS from each other.

* Maximum number of simultaneous sockets. I would test for the maximum number of open sockets connected to a single server instance and the maximum average number of sockets open to the maximum number of servers from the prior bullet point.

* Once you have confidence with both prior points I would then research the maximum amount of cross-talk. If your multiple servers can talk between each other then your servers almost achieve SMP. They could talk to each other via sockets like they are talking to everything else, but IPC communication would be even faster.

* Once you have all that then you have sufficient infrastructure in place to investigate more precise performance concerns. For example I have found that in my own personal implementation I could transmit messages via WebSockets almost 11x faster than I could receive the messages, but it could be that my own implementation is poorly executed. I also found that under the most ideal conditions my, likely poor, WebSocket implementation was still at least 8x faster than HTTP can go to over 80x and beyond performance after accounting for scale of high message frequency and socket concurrency.

* Once you have your performance bottlenecks identified you can then research performance bottlenecks on data transfer from a large data source of high frequency access. Then with that identified you can train AI on it for concurrency simulations that self-learns.

In the end you can sell your research. Consider that data centers require their own power plants to operate. While the hardware in those data centers is likely assembled in an efficient manner the software servers running on that hardware is often not efficient, and that costs millions of dollars a month just in electricity.