-
Notifications
You must be signed in to change notification settings - Fork 799
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Multiple UE4Scene GameServers in one container #2235
Comments
This looks to be duplicate to: #1239 which is coming in the next release (RC today likely). If you don't want to rely on an Alpha feature, other people have put their own API in front of the allocation endpoint to track allocated gameservers and track the number of sessions available on each. |
Oh, Great. Hope to give it a try this week.
I think this makes sense. We internally have similar component. With #1239 support + customized API, I think it should resolve our issue. Let me check the design and code changes and come back later on this. |
You can do that as well, each GameServer tracks it's own number of allowed concurrent sessions and puts it back into the pool for re-allocation when it's still available via label selectors (just remove the part about player capacity) For example: apiVersion: "allocation.agones.dev/v1"
kind: GameServerAllocation
spec:
preferred:
- matchLabels:
agones.dev/fleet: simple-udp
agones.dev/sdk-available: "true" # this is important
gameServerState: Allocated # new state filter: allocate from Allocated servers
required:
matchLabels:
agones.dev/fleet: simple-udp
gameServerState: Ready # Allocate out of the Ready Pool (which would be default, so backward compatible)
metadata:
labels:
agones.dev/sdk-available: "false" # this removes it from the pool If you want to have seperate ports, this could be managed by exposing via an annotation which port is the current port to use when putting the GameServer back in the pool and that data could be retrievable from the This is the last doc I need to write to complete the ticket. |
We get some feedback from game team and notice they are using |
I have exactly same problem depoying servers, since a emty UE server will occupy about 100M memory( I think there is a lot of static data loaded at bootage). For my game, if Fork can't be used then the memory occupication is not acceptable. About two years ago I have looked into Agones, and this is the issue preventing use Agones. Is there any Update for this issue? |
@WenchaoXia see: https://agones.dev/site/docs/integration-patterns/high-density-gameservers/ It's currently in Alpha, but would love for you to take it for a spin, see if it fits your needs! |
'This issue is marked as Stale due to inactivity for more than 30 days. To avoid being marked as 'stale' please add 'awaiting-maintainer' label or add a comment. Thank you for your contributions ' |
This issue is marked as obsolete due to inactivity for last 60 days. To avoid issue getting closed in next 30 days, please add a comment or add 'awaiting-maintainer' label. Thank you for your contributions |
Is your feature request related to a problem? Please describe.
We are moving one Game to Agones achitecture, one single GameServer container internally needs to start multiple processes and they leverage share memory to reduce overall memory usage. If we deploy single process in a separate container, the overall memory is much higher than the "shared mode".
This deployment topology brings extra challenge to the agones architecture.
When upstream sends a
GameAllocationRequest
, in current design, we can not mark GameServer asAllocated
because 1/n (Let's assume we start N servers in one container) is being used. Scheduling unit has been changed from pod level to process level.Correspondingly, autoscaling logics have to be changed as well. It has to use signal like process request rate.
I am curious if community has seen similar use case, what's the best practice to deal with similar case?
Describe the solution you'd like
N/A
Describe alternatives you've considered
We are in progress of changing topology and make one GS only container one UE4Scene. Still checking memory consumption changes. We think there's trade off between
rich container
vssingle GS per container
. But if the game team don't accept the refactoring, it's hard for us to use agones directly.Additional context
The text was updated successfully, but these errors were encountered: