mirror of
https://github.com/GameServerManagers/LinuxGSM.git
synced 2026-04-25 14:15:59 +03:00
[GH-ISSUE #1994] Part of check_permissions extremely slow #1565
Labels
No labels
Atomic
Epic
cannot reproduce
command: backup
command: console
command: debug
command: details
command: fast-dl
command: install
command: mods
command: monitor
command: post-details
command: restart
command: send
command: start
command: stop
command: update
command: update-lgsm
command: validate
command: wipe
distro: AlmaLinux
distro: Arch Linux
distro: CentOS
distro: Debian
distro: Fedora
distro: RedHat
distro: Rocky Linux
distro: Ubuntu
distro: openSUSE
engine: goldsrc
engine: source
game: 7 Days to Die
game: ARMA 3
game: Ark: Survival Evolved
game: Assetto Corsa
game: Avorion
game: BATTALION: Legacy
game: Barotrauma
game: Battalion 1944
game: Battlefield 1942
game: Black Mesa: Deathmatch
game: Blade Symphony
game: Call of Duty 2
game: Call of Duty 4
game: Call of Duty: United Offensive
game: Counter-Strike 1.6
game: Counter-Strike 2
game: Counter-Strike: Global Offensive
game: Counter-Strike: Source
game: Day of Infamy
game: Dayz
game: Death Match Classic
game: Don't Starve Together
game: ET: Legacy
game: Eco
game: Factorio
game: Factorio
game: Garry's Mod
game: Half-Life
game: Hurtword
game: Insurgecy
game: Insurgecy
game: Insurgency: Sandstorm
game: Just Cause 3
game: Killing Floor
game: Killing Floor 2
game: Left 4 Dead 2
game: Minecraft
game: Minecraft Bedrock
game: Mordhau
game: Multi Theft Auto
game: Mumble
game: Natural Selection 2
game: No More Room in Hell
game: Pavlov VR
game: Post Scriptum
game: Project Zomboid
game: Quake 3
game: QuakeWorld
game: Red Orchestra: Ostfront 41-45
game: Return to Castle Wolfenstein
game: Rising World
game: Rust
game: San Andreas Multiplayer
game: Satisfactory
game: Soldat
game: Soldier of Fortune 2
game: Squad
game: Squad 44
game: Starbound
game: Stationeers
game: Sven Co-op
game: Team Fortress 2
game: Teamspeak 3
game: Teeworlds
game: Terraria
game: The Front
game: Unreal Tournament 2004
game: Unreal Tournament 3
game: Unreal Tournament 99
game: Unturned
game: Valheim
game: Wurm Unlimited
game: Zombie Master Reborn
game: label missing
good first issue
help wanted
info: alerts
info: dependency
info: docker
info: docs
info: email
info: query
info: steamcmd
info: systemd
info: tmux
info: website
info: website
needs more info
outcome: duplicate
outcome: issue resolved
outcome: issue resolved
outcome: issue unresolved
outcome: pr accepted
outcome: pr rejected
outcome: unconfirmed
outcome: wontfix
outcome: wrong forum
potential-duplicate
priority
pull-request
type: bug
type: feature
type: feature
type: feature request
type: game server request
type: refactor
waiting response
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/LinuxGSM#1565
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @Donkie on GitHub (Aug 28, 2018).
Original GitHub issue: https://github.com/GameServerManagers/LinuxGSM/issues/1994
Describe the bug
Running most commands take next to forever (multiple minutes sometimes) for me on my Ubuntu 14.04 server with a HDD drive. I've analyzed the issue using iotop and found that a process with the command 'find "/my/server/files" -not -user steam' occupies a whole lot of I/O usage. This HDD drive is rather slow I've found, and I got quite some files in said folder, but that shouldn't affect the performance of just starting the server.
The culprit code is found at
github.com/GameServerManagers/LinuxGSM@0276b943e3/lgsm/functions/check_permissions.sh (L21-L25)which, from my knowledge, tries to look through every single file in that folder and make sure the permissions are set correctly? Why is this necessary?
To Reproduce
Steps to reproduce the behaviour:
Expected behaviour
That the command was fast and smooth
** Minimum Information **
Game server: Garry's Mod
https://hastebin.com/onufenuvox
Additional context
@Donkie commented on GitHub (Aug 28, 2018):
After some additional research I found that this is partially my fault, an addon I had installed had created ~36,000 folders with logs which took some times to look through. However, I still don't think such a case should affect the performance of this program.
@dgibbs64 commented on GitHub (Aug 28, 2018):
The permissions check normally takes less than a second to run. This is definitely the fault of the addon creating an extremely excessive number of files and dirs. So I would expect the
findcommand to take a long time to get through all that.So im not sure how you can think that having 36,000 dir's to scan shouldn't affect the performance of LinuxGSM.
What is the addon you are using? as there are checks for some gmod logs in LinuxGSM to clear them after x days
@Donkie commented on GitHub (Aug 28, 2018):
I expected LGSM to not scan through my entire files at all every time I ran a command, why is this even necessary (especially with commands like stopping the server)? It should be up to the server software itself to check for permission issues if that's necessary in my opinion.
Even with all these directories removed it takes me atleast 5 seconds to perform the permission check.
It's a custom lua based anti cheat called Cake anti-cheat. It creates a directory for every player that joined the server with information about him. Sadly since they're not date based they can't be automatically cleaned.
@UltimateByte commented on GitHub (Aug 28, 2018):
This check has ben created to prevent issues while starting/stopping/updating the server. Since LinuxGSM cannot know when the user will actually make mistakes with file ownership and permission, it has to run the command every single time. While I can agree checking every time is agressive, I see no workaround, I don't want to leave the user disable the check since there would be dangerous behaviors, and ultimately, I've never seen a scenario where the delay for the check is noticeable.
@dgibbs64 commented on GitHub (Aug 28, 2018):
It should be up to the server software itself to check for permission issues if that's necessary in my opinion.Out of the 80+ servers, 0 do permissions checks. It's the users responsibility to check permissions normally. However, we removed that burden and added the feature for LinuxGSM to do the check instead of the user, there is no faster way to do that than using the find command. The feature has been in place for a very long time now and this is the first time an issue has been raised regarding a slowdown, so your situation is an exception to the norm.
The check is in place as many users don't understand permissions and can sometimes mess them up causing odd behaviour that's hard to diagnose. As @UltimateByte states the check is aggressive but there is no other way to guarantee that there are no permissions issues every time. Hope this explains why it has to be done.
@Donkie commented on GitHub (Aug 28, 2018):
I understand.
@lock[bot] commented on GitHub (Aug 29, 2019):
This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.