Obviously, I know the server isn't ready, but I decided to try open the test server to the public to see what would happen.
Here are some observations I made:
There are hacks that apparently cause the packet queue to grow large. I see several messages about packets in queue until the server finally crashes.
I also saw strings on the console that flew by like this:
[15:52:23] Health: 3
[15:52:23] Health: 4
[15:52:23] Health: 5
[15:52:23] Health: 6
[15:52:23] Health: 7
[15:52:23] Health: 8
[15:52:23] Health: 9
[15:52:23] Health: 10
[15:52:23] Health: 11
[15:52:23] Health: 12
[15:52:23] Health: 13
[15:52:23] Health: 14
[15:52:23] Health: 15
[15:52:23] Health: 16
[15:52:23] Health: 17
[15:52:23] Health: 18
[15:52:23] Health: 19
[15:52:23] Health: 20
[15:52:23] Health: 21
[15:52:23] Health: 22
[15:52:23] Health: 23
[15:52:23] Health: 24
[15:52:23] Health: 25
[15:52:23] Health: 26
[15:52:23] Health: 27
THOUSANDS of these messages is what caused one of the crashes. The number eventually went negative. It looks like a stack overflow.
That lagged the server and eventually caused it to crash like this:
[15:44:24] Got ping
[15:44:24] Deleting client
[15:44:24] -76 0 -2 Destroying on action765
[15:44:24] -76 0 -2 Destroying on action765
[15:44:24] -75 0 -2 Destroying on action765
[15:44:24] -73 0 -2 Destroying on action765
[15:44:24] Destroy that entity! 768
[15:44:24] Destroy that entity! 794
[15:44:24] Destroy that entity! 795
[15:44:24] Destroy that entity! 796
[15:44:24] Destroy that entity! 797
[15:44:24] To tick: 7
[15:44:24] To tick: 86
[15:44:24] 1. Stack size: 0
[15:44:24] 2. Stack size: 1
[15:44:24] 3. Stack size: 2
[15:44:24] Calling bound function!
[15:44:24] ok. Stack size: 0
[15:44:24] From -76 -2 To -77 -2
[15:44:24] From -77 -2 To -76 -2
[15:44:24] Health: -1214
terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Aborted
I also noticed when someone DC'd there would be several spawn messages for someone who was still on the server. I'm not sure what those messages mean. Does it mean mobs around the person who DC'd get teleported to someone else?
I aslo noticed running mc server like this:
./MCServer > log.log
and using
tail -f log.log
seemed to improve performance when someone was causing an action that spammed the console. Maybe moving the console output to anther thread could improve performance?
Making the server immune to most attacks is also a high priority for me. It's incredible how many people try to attack servers. I get attacks several times a day on my bukkit server.
I'd like to put in something that disconnects or bans a player that is trying to do too much at once. Like trying to use a nuke client for example. I know that might sound like something a plugin should do, but I think of that more as basic security.