Fair question. In their view, 25 threads per user is a sensible limit. Their mindset is based around single-threaded PHP. And for that reason among others, yes, switching providers is definitely something I will pursue. But that will be a long-term effort. Right now I'm looking for a short-term solution to get my site back up.
Thanks, Steve On Thu, Feb 1, 2024 at 8:34 AM Steven Hartland <stevenmhartl...@gmail.com> wrote: > To be honest I would question if its a usable solution if they are > limiting that low on threads, so is the fix to switch or have the provider > increase the limit to a sensible number? > > On Thu, 1 Feb 2024 at 16:08, Steve Roth <st...@rothskeller.net> wrote: > >> 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 >> <https://groups.google.com/d/msgid/golang-nuts/CAAnpqKEzZcFxDkG2Qtzf25hPwkZq2EstbDbYtBz4CtTaBQxqWA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- 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/CAAnpqKH%2BpawFZ2uqC0-wZm2vidngmePhS_%3Dgqfh9iwKPyN%2Bdcg%40mail.gmail.com.