Running my (private) server quite happily on my datacentre-hosted Linux VM at the moment, but it's a bit tight on RAM; I've had to drop it to 512Mb to fit in the VPS footprint and it complains at me. I'm also fairly sure that even at this setting some of the periods of bad slowdown I see are caused by swapping.
I could upgrade the VPS but it's a bit spendy. Another option would be to move the hosting to a machine on my home network, where my system specs are effectively unlimited, but my bandwidth is constrained instead. My ADSL is about 11meg down and 1.1 meg up. Does anyone know the approximate per-client bandwidth Minecraft requires?
Im not sure on the bandwidth per user, however, my bandwidth is almost exactly the same as your and can run fine with up to 24 people in it.(been tested) No lag too evidently when i asked the users at that time.
I did some measurements earlier. I ran perfmon.msc on my Windows client and connected to my server. I didn't control for background 'net access on the machine, but I didn't have anything else running either.
Over a 100second test window, I recorded a mean of 31,630 bytes/sec and a max of 159,371 bytes/sec. That works out to an average of 0.1Gb/hr/user, and an ideal burst connection speed of 1.2meg per user who is bursting at the same time (I saw frequent spikes, every 10-20 seconds or so). This suggests a 1meg upstream connection would start to become contended after the fifth user joined (although whether that contention would be noticeable immediately I cannot say).
Also: a 100Gb/month bandwidth allocation on a VPS would get you about 30 people-hours of playtime per day. Divide that between 10 players it's just three hours a day each.
yeah your forgetting quite a bit on your calculations as well. You also have to take into account what the person is doing at that point in time, exploring, PLacng blocks, digging blocks. How much they are moving. In any case, your going to have more problems with just 512 mb of ram over anything else. My server, after running for two weeks takes 300-400MB of ram with no one in the room and up to 1GB with just 6. So id be more worried about that as well.
On top of that, Ive also looked into proccessor power it needs too, and it seems that running minecraft of multiple threads doesnt seem to work very well. Seems to run off 1 thread at a time and depending on how many threads ur processor has, it really restricts it quite a lot. For example, ive got an intel 6 core processor running now at 4 GhZ,(12 threads) so split that between 12 threads and t only 33% of the processor being used, which does cause issues with the server eventually. So yea, i would be more worried about your hardware specs in the data center before anything else because that will limit your player base much more.
We've since done some reverse engineering, headscratching, and measurements of bandwidth. The killer is horizontal movement into chunks, even in places you've been.
Quote from My mate Dave, elsewhere »
By digging vertical chutes and then going up a nearby ladder, my average was 2 kilobyte/s
Doing the same area (a 31 diameter circle, but going up stairs round the edge after digging a vertical chute, I averaged 14KB/s with 4 very predictable spikes on the way up.
Getting there via a flat horizontal tunnel (so the fastest possible movement) cost 40KB/s
Redwire, even if inactive, seems to add an extra 2-4KB/s on.
It's quite expensive -- I'm not sure I believe 1meg up can host more than a handful of people without some lag, although perhaps that lag is imperceptible or tolerable. To give these numbers some context, Xbox Live requires total bandwidth consumption to remain under 8KB/sec at all times or the game will fail certification.
From my server end, with six clients connected I've seen bandwidth spikes above 300KB/sec, although not often. With a few players on most of the time and up to half a dozen online for most of the evening, I've used about 4.5GiB of transfer in 48 hours. I esimated something like 0.1Gb per player-hour, maybe a little more.
Quote from raider00321 »
On top of that, Ive also looked into proccessor power it needs too, and it seems that running minecraft of multiple threads doesnt seem to work very well. Seems to run off 1 thread at a time and depending on how many threads ur processor has, it really restricts it quite a lot.
It appears to be single threaded, mostly, indeed. There's probably some tuning that could be applied to the JVM