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.