Thanks to the people who suggested how to limit the number of apparent
cores.  Unfortunately, doing that didn't solve the problem.  I have the
number of cores now limited to two — confirmed by checking runtime.NumCPU()
— but the program is still trying to allocate more than 25 threads, and
crashing when cgroups won't let it.

Surely there must be some way to get a Go program to run successfully in an
environment with process limits?  Any further suggestions would be greatly
appreciated.

Regards,
Steve


On Wed, Jan 31, 2024 at 6:43 PM Steve Roth <st...@rothskeller.net> wrote:

> I am running Go code on a shared web hosting server from a major hosting
> company.  Using cgroups, they limit the number of threads any user can
> create to 25.  Up until a week ago, they had me running on a server with 24
> cores, and everything worked fine.  Now they've moved me to a new server
> with 128 cores.  The Go runtime thinks it should be able to create that
> many threads, and it can't, and all of my Go programs crash with, "runtime:
> failed to create new OS thread".
>
> Setting GOMAXPROCS doesn't help this, since it only controls the number of
> active threads, not the total number of threads.  The Go runtime still
> thinks it can create as many threads as there are cores, and crashes the
> program when it's blocked from doing so.
>
> Is there any way around this?  Or is Go just completely unusable in an
> environment where the per-user process limit is less than the number of
> cores?
>
> Many thanks,
> Steve
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/CAAnpqKEzZcFxDkG2Qtzf25hPwkZq2EstbDbYtBz4CtTaBQxqWA%40mail.gmail.com.

Reply via email to