mirror of
https://github.com/go-gitea/gitea.git
synced 2026-03-12 02:24:21 -05:00
Log OOM errors, if possible #12324
Closed
opened 2025-11-02 10:05:38 -06:00 by GiteaMirror
·
17 comments
No Branch/Tag Specified
main
release/v1.25
release/v1.24
release/v1.23
release/v1.22
release/v1.21
release/v1.20
release/v1.19
release/v1.18
release/v1.17
release/v1.16
release/v1.15
release/v1.14
release/v1.13
release/v1.12
release/v1.11
release/v1.10
release/v1.9
release/v1.8
v1.25.3
v1.25.2
v1.25.1
v1.25.0
v1.24.7
v1.25.0-rc0
v1.26.0-dev
v1.24.6
v1.24.5
v1.24.4
v1.24.3
v1.24.2
v1.24.1
v1.24.0
v1.23.8
v1.24.0-rc0
v1.25.0-dev
v1.23.7
v1.23.6
v1.23.5
v1.23.4
v1.23.3
v1.23.2
v1.23.1
v1.23.0
v1.23.0-rc0
v1.24.0-dev
v1.22.6
v1.22.5
v1.22.4
v1.22.3
v1.22.2
v1.22.1
v1.22.0
v1.23.0-dev
v1.22.0-rc1
v1.21.11
v1.22.0-rc0
v1.21.10
v1.21.9
v1.21.8
v1.21.7
v1.21.6
v1.21.5
v1.21.4
v1.21.3
v1.21.2
v1.20.6
v1.21.1
v1.21.0
v1.21.0-rc2
v1.21.0-rc1
v1.20.5
v1.22.0-dev
v1.21.0-rc0
v1.20.4
v1.20.3
v1.20.2
v1.20.1
v1.20.0
v1.19.4
v1.21.0-dev
v1.20.0-rc2
v1.20.0-rc1
v1.20.0-rc0
v1.19.3
v1.19.2
v1.19.1
v1.19.0
v1.19.0-rc1
v1.20.0-dev
v1.19.0-rc0
v1.18.5
v1.18.4
v1.18.3
v1.18.2
v1.18.1
v1.18.0
v1.17.4
v1.18.0-rc1
v1.19.0-dev
v1.18.0-rc0
v1.17.3
v1.17.2
v1.17.1
v1.17.0
v1.17.0-rc2
v1.16.9
v1.17.0-rc1
v1.18.0-dev
v1.16.8
v1.16.7
v1.16.6
v1.16.5
v1.16.4
v1.16.3
v1.16.2
v1.16.1
v1.16.0
v1.15.11
v1.17.0-dev
v1.16.0-rc1
v1.15.10
v1.15.9
v1.15.8
v1.15.7
v1.15.6
v1.15.5
v1.15.4
v1.15.3
v1.15.2
v1.15.1
v1.14.7
v1.15.0
v1.15.0-rc3
v1.14.6
v1.15.0-rc2
v1.14.5
v1.16.0-dev
v1.15.0-rc1
v1.14.4
v1.14.3
v1.14.2
v1.14.1
v1.14.0
v1.13.7
v1.14.0-rc2
v1.13.6
v1.13.5
v1.14.0-rc1
v1.15.0-dev
v1.13.4
v1.13.3
v1.13.2
v1.13.1
v1.13.0
v1.12.6
v1.13.0-rc2
v1.14.0-dev
v1.13.0-rc1
v1.12.5
v1.12.4
v1.12.3
v1.12.2
v1.12.1
v1.11.8
v1.12.0
v1.11.7
v1.12.0-rc2
v1.11.6
v1.12.0-rc1
v1.13.0-dev
v1.11.5
v1.11.4
v1.11.3
v1.10.6
v1.12.0-dev
v1.11.2
v1.10.5
v1.11.1
v1.10.4
v1.11.0
v1.11.0-rc2
v1.10.3
v1.11.0-rc1
v1.10.2
v1.10.1
v1.10.0
v1.9.6
v1.9.5
v1.10.0-rc2
v1.11.0-dev
v1.10.0-rc1
v1.9.4
v1.9.3
v1.9.2
v1.9.1
v1.9.0
v1.9.0-rc2
v1.10.0-dev
v1.9.0-rc1
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.8.0-rc3
v1.7.6
v1.8.0-rc2
v1.7.5
v1.8.0-rc1
v1.9.0-dev
v1.7.4
v1.7.3
v1.7.2
v1.7.1
v1.7.0
v1.7.0-rc3
v1.6.4
v1.7.0-rc2
v1.6.3
v1.7.0-rc1
v1.7.0-dev
v1.6.2
v1.6.1
v1.6.0
v1.6.0-rc2
v1.5.3
v1.6.0-rc1
v1.6.0-dev
v1.5.2
v1.5.1
v1.5.0
v1.5.0-rc2
v1.5.0-rc1
v1.5.0-dev
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.4.0-rc3
v1.4.0-rc2
v1.3.3
v1.4.0-rc1
v1.3.2
v1.3.1
v1.3.0
v1.3.0-rc2
v1.3.0-rc1
v1.2.3
v1.2.2
v1.2.1
v1.2.0
v1.2.0-rc3
v1.2.0-rc2
v1.1.4
v1.2.0-rc1
v1.1.3
v1.1.2
v1.1.1
v1.1.0
v1.0.2
v1.0.1
v1.0.0
v0.9.99
Labels
Clear labels
$20
$250
$50
$500
backport/done
💎 Bounty
docs-update-needed
good first issue
hacktoberfest
issue/bounty
issue/confirmed
issue/critical
issue/duplicate
issue/needs-feedback
issue/not-a-bug
issue/regression
issue/stale
issue/workaround
lgtm/need 2
modifies/api
modifies/translation
outdated/backport/v1.18
outdated/theme/markdown
outdated/theme/timetracker
performance/bigrepo
performance/cpu
performance/memory
performance/speed
pr/breaking
proposal/accepted
proposal/rejected
pr/wip
pull-request
reviewed/wontfix
💰 Rewarded
skip-changelog
status/blocked
topic/accessibility
topic/api
topic/authentication
topic/build
topic/code-linting
topic/commit-signing
topic/content-rendering
topic/deployment
topic/distribution
topic/federation
topic/gitea-actions
topic/issues
topic/lfs
topic/mobile
topic/moderation
topic/packages
topic/pr
topic/projects
topic/repo
topic/repo-migration
topic/security
topic/theme
topic/ui
topic/ui-interaction
topic/ux
topic/webhooks
topic/wiki
type/bug
type/deprecation
type/docs
type/enhancement
type/feature
type/miscellaneous
type/proposal
type/question
type/refactoring
type/summary
type/testing
type/upstream
Mirrored from GitHub Pull Request
Milestone
No items
No Milestone
Projects
Clear projects
No project
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: github-starred/gitea#12324
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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 @lonix1 on GitHub (Jan 11, 2024).
Feature Description
I was running gitea in docker, in a small VPS with limited memory. It worked for years, but suddenly I could not clone, and the log showed:
That is
SIGTERM. It doesn't say what happened, so it's very hard to diagnose. I had debug logging enabled.When I increased the memory, it worked again. So the issue was actually an Out Of Memory error.
I assume the SIGTERM is sent by docker; does gitea receive any information other than the signal?
If yes:
If no:
Received signal 15; terminating. If you did not stop the container then this could be due to an OOM error.Screenshots
No response
@lunny commented on GitHub (Jan 11, 2024):
Is there a log file? Especially the last lines before exit.
@lonix1 commented on GitHub (Jan 11, 2024):
I was logging on debug level. Everything was "normal" (like always), except for the last line:
I monitored the container using
docker statsand I could see that was when the container was terminated, and then restarted. Docker engine sends the SIGTERM when it runs out of memory.@lonix1 commented on GitHub (Jan 12, 2024):
You can simulate the memory issue like this:
Just use a small value. Maybe
50m.@lunny commented on GitHub (Jan 12, 2024):
50M looks too small for Gitea, I think it should at least 1GB as the limitation.
@lonix1 commented on GitHub (Jan 12, 2024):
Agreed it's too small.
But what I mean is that you can force the OOM error that way. So you can see the log that I see.
(By the way, I have used gitea with 150MiB for years... Amazing app 😄. Today I am using 300MiB without problems.)
@wxiaoguang commented on GitHub (Jan 15, 2024):
Golang is not Java. IIRC it's impossible to catch the OOM inside a Go app ....
If there is such an approach, feel free to tell me and I'd like to learn from it .....
@lonix1 commented on GitHub (Jan 15, 2024):
Sorry, I'm not a go dev so I don't know.
So is my guess correct? If one can't detect the OOM error, then what happens is:
SIGTERMwithout explanationReceived signal 15; terminating.and terminatesIf that's the case, what about adding a more useful log, like I mentioned above:
@wxiaoguang commented on GitHub (Jan 15, 2024):
OOM could appear anywhere, in kernel (seldom nowadays), in docker container program, in docker inside app.
If the Go app itself triggers OOM, then the app itself gets killed. Since Gitea's docker images uses s6 to run
gitea web, so if thegitea webgets skilled, the docker container still runs because it still sees s6 service is running.Maybe it could tell the s6 to run
gitea web"always" (just like docker's "always"), even if it exits with error. (just a guess)@GiteaBot commented on GitHub (Feb 14, 2024):
We close issues that need feedback from the author if there were no new comments for a month. 🍵
@lonix1 commented on GitHub (Feb 14, 2024):
Not sure what more feedback I must send. Maybe we can revisit this in the future.
@wxiaoguang commented on GitHub (Feb 15, 2024):
Hmm yup, at the moment I have no idea either. IMO "it is not possible for Golang to log OOM"
@lonix1 commented on GitHub (Feb 15, 2024):
The only thing that can be done is to log a better error like above:
Received signal 15; terminating. (If you did not stop the container then this could be due to an OOM error.)
@wxiaoguang commented on GitHub (Feb 16, 2024):
Sorry I still couldn't catch your point. Could you propose a prototype to show how to "log a better error"?
@lonix1 commented on GitHub (Feb 16, 2024):
It logs this:
So I suggested:
Or something like that.
@wxiaoguang commented on GitHub (Feb 16, 2024):
Some more details:
Received signal 15is not only caused by OOM, it could also be caused by some other problems. Only mentioning "OOM" in the message could be misleading.Received signal 15; terminating.is printed by kernel, so you can't append anything to it.If you have a feasible approach, feel free to propose a PR.
@lonix1 commented on GitHub (Feb 16, 2024):
Aha... I didn't know that. So you are right - we cannot change that log message!
It's a tricky problem. Thanks for looking into it.
@github-actions[bot] commented on GitHub (Feb 28, 2024):
Automatically locked because of our CONTRIBUTING guidelines