FWIW, I had the same suspicion as Robert. In my experience a CGI task that takes less than, say, 200ms is going to be swamped by startup costs. It's usually better to use the FastCGI protocol <https://en.wikipedia.org/wiki/FastCGI#:~:text=FastCGI%20is%20a%20binary%20protocol,programs%20with%20a%20web%20server.&text=FastCGI's%20main%20aim%20is%20to,requests%20per%20unit%20of%20time.> in that situation.
On Wed, Jan 12, 2022 at 4:41 PM Steve Roth <st...@rothskeller.net> wrote: > Hi, Robert, > > The request *should* be super short, but it was actually taking 2.5 > seconds. That was the whole reason I started trying to profile it, to > figure out why a simple request was taking so long. > > Ian's suggestion of heap tracing found the issue for me: there was an > unexpected allocation of a 13MB block in there. Tracing that, I found the > root cause, which was corrupted data in my site database. Many thanks to > all for the help. > > Regards, > Steve > > > On Wed, Jan 12, 2022 at 4:20 PM robert engels <reng...@ix.netcom.com> > wrote: > >> Are you certain that the requests aren’t super short - so all you are >> measuring is the runtime startup time / and the overhead of parsing the CGI >> “protocol". This is not insignificant. CGI really only works well for long >> requests IMO. >> >> On Jan 12, 2022, at 5:29 PM, Steve Roth <st...@rothskeller.net> wrote: >> >> Thank you, Ian. From the function names, I suspected that the 70% chain >> was the garbage collector. But in this run, garbage collection was turned >> off with GOGC=off, and that was verified with GODEBUG=gctrace=1. So I >> thought perhaps they must be something else. >> >> I will proceed with heap profiling as you suggest. (And of course I've >> reviewed pprof blog post many times.) >> >> Regards, >> Steve >> >> >> On Wed, Jan 12, 2022 at 2:58 PM Ian Lance Taylor <i...@golang.org> wrote: >> >>> On Wed, Jan 12, 2022 at 1:54 PM Steve Roth <st...@rothskeller.net> >>> wrote: >>> > >>> > I am attempting to profile my code, and I'm unable to interpret the >>> results. So first, the meta-question is, what's the best forum to use to >>> request help with such things? >>> >>> This is a good place. See also https://golang.org/wiki/Questions. >>> >>> >>> > The chain that is taking 70% of the time is >>> > >>> > gcBgMarkWorker >>> > >>> > systemstack >>> > >>> > gcBgMarkWorker.func2 >>> > >>> > gcDrain >>> > >>> > markroot >>> > >>> > markroot.func1 >>> > >>> > suspendG >>> >>> This is the concurrent garbage collector. >>> >>> >>> > The chain that is taking 17% of the time is >>> > >>> > mcall >>> > >>> > park_m >>> > >>> > schedule >>> > >>> > findrunnable >>> > >>> > stopm >>> > >>> > mPark >>> > >>> > notesleep >>> > >>> > futexsleep >>> > >>> > futex >>> > >>> > Again I have no clue what this is doing. Any guidance is welcome, >>> including pointers to other forums better suited for such questions. >>> >>> This is the goroutine scheduler. >>> >>> If your program is CPU bound (as it should be based on your >>> description) then 70% in the garbage collector is a lot. The next >>> step is to collect a heap profile to see where the memory is being >>> allocated. You may want to look at https://go.dev/blog/pprof, old but >>> still valid. >>> >>> Ian >>> >> >> -- >> 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/CAAnpqKGzr4MNfnC4Tqam2NoOt9AJ4NKP_Hiarv5usaYQYG1iNw%40mail.gmail.com >> <https://groups.google.com/d/msgid/golang-nuts/CAAnpqKGzr4MNfnC4Tqam2NoOt9AJ4NKP_Hiarv5usaYQYG1iNw%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/CAAnpqKEG8Brwe1yHLdWzSX76rCCidybTR-PC4HBgWVKEi7CE7A%40mail.gmail.com > <https://groups.google.com/d/msgid/golang-nuts/CAAnpqKEG8Brwe1yHLdWzSX76rCCidybTR-PC4HBgWVKEi7CE7A%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- Kurtis Rader Caretaker of the exceptional canines Junior and Hank -- 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/CABx2%3DD8Y4Ku1uQ_v3B_Bw6ANNixmyvY1%3D1fwjzvbK-q%3DxG1v%3Dg%40mail.gmail.com.