Bungeecord ram/Redisbungee questions

Discussion in 'BungeeCord Discussion' started by Timed, May 28, 2016.

  1. How much ram is recommended for a bungeecord instance with 1000+ players? Meaning the actual bungeecord server.

    At what amount of player count would multiple bungees become needed?

    Is Redis+Redisbungee needed if I were to exceed the player limit?

    Last question, how do you even go about having more than one proxy..tutorials, guides?

    All help and suggestions are appreciated.
     
  2. I've heard different things, but usually I hear 0.5GB/500 players (might be remembering this wrong though, and it's probably without plugins). I'd use 2GB/1500 players.
    I usually split players at 1500 - 3000 per bungee instance (depending on how much RAM each instance has, and how many heavy plugins it's running)
    It's needed if you want to link the data of your bungee instances (player count, motd etc.). Basically if you want multiple proxies, use Redis(Bungee).
    The RedisBungee page and wiki is very helpful and easy to understand.
     
    • Like Like x 1
    • Informative Informative x 1
  3. Ok this helped thanks. So maybe not look into multiple proxies until I exceed 1, or 2 thousand players?
     
  4. Also, do I just need RedisBungee to have multiple proxies. Or do I need Redis as well. (i'm not even sure what Redis is really)
     
  5. Eh, it depends. It's a pretty advanced setup for < 1000 player servers and there's not really a reason in having to setup a database to sync data when the data doesn't even need to be synced (since one server would handle it just fine).
     
  6. Also this.

    TL;DR: Redis is the database used to store the to-be-synced data, RedisBungee is a Bungeecord plugin that connects to the database and read/writes to it to perform the synchronization.
     
    • Like Like x 1
  7. Are there any advantages that don't have to do with performance? Also, will RedisBungee connect all bungee's to act as one. Giving me the same functionality as one bungee?
     
  8. Oh so i'd need a redis database as well as installing the redisbungee onto the main, or all bungeecord servers? I think installing redis is possible with Linux correct?
     
  9. I'm not really sure.. I guess not since the reason people use it is so they can have more players (ie. a better performance). It does add some commands, but they're mostly to do with accessing the synced data of other instances.

    No. It will make it so if you ping either of the instances it'll show the same data (players etc.) and makes you able to for instance move players between Spigot instances even though you and the player you're trying to move is on completely seperate bungeecord servers.

    What you'd normally do is use a Round Robin DNS system that distributes the players out to the different bungee instances under the same domain name (ie. mc.whatever.com points to 8.8.8.8 and 8.8.4.4) so whenever a player joins your server, they're either sent to 8.8.8.8 or 8.8.4.4. If done properly it provides a seamless experience for the user, and better performance for the owner.

    Yes. A Redis database and RedisBungee on all bungeecord instances. You give each bungee instance a unique ID and point them all to the same database (Redis). This is all very well explained with examples on the RedisBungee wiki. I suggest you read through it.

    Yes. Very easy to install. Info on the Redis website.
     
  10. Do networks such as hypixel use a bungee for each game? In that case, how would the Round Robin DNS system be used to let players still connect to different bungees and servers etc, but by connecting to one bungee and one ip (like the hub). Or if not the Round Robin, how is it setup?
     
  11. While I don't know if they use the actual RedisBungee or a custom plugin I know that they have multiple bungee instances.
    Couple of things:
    1) No they don't.
    2) You cannot switch bungee instances after you've connected without disconnecting. Only Spigot instances.
    3) All bungee instances can see all the same Spigot servers

    The way it's setup looks like this:
    mc.hypixel.net -> IPs: 1.1, 1.2, 1.3, 1.4 (these aren't real ofc, just easy to type)
    So it's the same domain pointing to all their bungee instances which then points to all the same Spigot servers.

    When their DNS server is asked for the IP for the first time, it'll return 1.1, then 1.2 etc. after 1.4 it'll go back to 1.1 (hence the term Round Robin)

    So say 3 players connect:
    player1 gets 1.1 and join that bungeecord server which connects him to the spigot server called hub.
    player2 gets 1.2 and join that bungeecord server which connects him to the spigot server called hub.
    player3 gets 1.3 and join that bungeecord server which connects him to the spigot server called hub.

    Each server tells Redis using RedisBungee "Hey, I'm {id}, {player} just joined, he's connected to hub, I have X users online.

    Then player4 comes along and pings the DNS thus hitting 1.4 but that bungeecord server doesn't have anyone online (yet). So, to avoid mismatched data the server asks Redis using RedisBungee "Yo, how many people are we?" to which Redis replies the total amount of all servers which it then shows in the list ping result.

    Now player4 joins and is sent to hub by 1.4

    There are now 4 players on the Spigot server but only 1 player on each bungee instance.

    Hope it makes sense.
     
    • Useful Useful x 5
    • Like Like x 1
    • Winner Winner x 1
    • Informative Informative x 1
  12. I'd use 8gb per 1k players, bungeecord has had some terrible GC issues for the past few months. Allocating any less means you'd need to restart them at least once per day.
     
    • Like Like x 1
  13. This was extremely useful, I now understand thank you so much. So it's not used for like different games. You're saying it's used to allow more players to connect, but to the same servers. So If I were to need to have 6000 players online. I would have like 3 Bungees, all pointing towards the same place. You resolved my frustration as to thinking it was mandatory to have a bungee per game. Thank you so much!
     
  14. Exactly. I've found Bungeecord usually tends to decrease in performance after 3k players due to the amount of connections (not really a RAM issue, it's just a lot to manage fast) so yes, spreading the load is the use case here.

    Also, really read the RedisBungee wiki. It's very well written and all this info I have is just me reading the wiki in like 30 min. and then playing with it for and hour.
    lol that would suck cause if I joined your server wanting to play, say, survival and I didn't get lucky and hit the correct bungee instance pointing to those servers I'd have to disconnect until I hit the right one :p
    No problem. Good luck with your server.
     
  15. I have one or two more questions. Sorry for the hassle, ask me if you'd like a vouch on your profile.

    Anyways, because some bungeecoord plugins communicate to other servers, would having two bungees cause problems along those lines? For example, I have a custom skywars plugin made. The plugin is like a per server arena plugin. It needs to be loaded on the bungee in order to do that. Wouldn't having two bungees cause conflict. Would I put the plugin on both bungees? but then again wouldn't that cause conflict as to how the game is ran.

    Or is it possible to just put a plugin onto each of the (example, skywars servers) and connect them with MySQL. And have per-server arenas.

    Putting for example "LiteBans" on one of the bungees, and not the other, what would that do?

    Another question related to redisbungee, and redis. Does it know if one of the bungee servers went down, redirecting them to the other available bungees?
     
  16. Thank you for your input :)
     
  17. That's a bit difficult for me to tell since I don't know your setup. You'll need to ask your developer about that. RedisBungee provides a very nice API for moving players to servers and getting the total player count etc. so you might need some setup there to match your situation.
    This isn't really Redis' nor RedisBungee's job. Neither of them handle the redirect of your players, your DNS does (the Round Robin). This is actually a very talked about topic in load balancing. In your case, say you have 3 bungee's all linked and all 3 in your DNS (edit: and 1 goes down/offline). This would mean that every 3rd ping would result in a timeout (easily fixed by the player, just click "Refresh" in the server list) and will cause annoyance.

    Hypixel switches their bungeecords very often (every 2 min. iirc) using I'm guessing a custom tool to do so.
    They (again, guessing based on knowledge) check if the servers are up and if so add it to the DNS with a 2 min. TTL. This is nice since you can easily take a server offline, update it, and put it back on the DNS,

    You'll have to figure out what works for you on that part. I suggest hiring a developer/sysadmin who's experienced in networking.
     
  18. It was theoretical, I haven't had a custom skywars plugin made yet. I'm basically asking, Is it possible to have per-server arenas with MySQL. Is it recommended to have the plugin based on bungeecoord, and add it to both bungeecoord instances. Then upload a separate plugin client onto each of the servers that'd the skywars would actually take action on. Or would it be best to go with MySQL and just upload the skywars plugin onto each skywars server.

    Also, will it need redis support if it is uploaded onto the bungee servers?

    Again, what i'm basically asking- Do servers like hypixel with per-server arenas, upload the plugins onto the bungees, or upload it onto the skywars servers.
     
  19. You can't make a SkyWars plugin on bungeecord anyways. It's too advanced and uses Minecraft-only code. (ie. Inventories, DamageEvents etc.)
     
  20. Oh so it'd just be connected to the same database? If that's the answer thank you for answering my questions :)