And delete Debug.GoroutineDumpURL, which was already in c2n. Updates #8923 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>main
parent
24509f8b22
commit
239ad57446
@ -1,40 +0,0 @@ |
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package controlclient |
||||
|
||||
import ( |
||||
"bytes" |
||||
"compress/gzip" |
||||
"context" |
||||
"log" |
||||
"net/http" |
||||
"time" |
||||
|
||||
"tailscale.com/util/goroutines" |
||||
) |
||||
|
||||
func dumpGoroutinesToURL(c *http.Client, targetURL string) { |
||||
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) |
||||
defer cancel() |
||||
|
||||
zbuf := new(bytes.Buffer) |
||||
zw := gzip.NewWriter(zbuf) |
||||
zw.Write(goroutines.ScrubbedGoroutineDump(true)) |
||||
zw.Close() |
||||
|
||||
req, err := http.NewRequestWithContext(ctx, "PUT", targetURL, zbuf) |
||||
if err != nil { |
||||
log.Printf("dumpGoroutinesToURL: %v", err) |
||||
return |
||||
} |
||||
req.Header.Set("Content-Encoding", "gzip") |
||||
t0 := time.Now() |
||||
_, err = c.Do(req) |
||||
d := time.Since(t0).Round(time.Millisecond) |
||||
if err != nil { |
||||
log.Printf("dumpGoroutinesToURL error: %v to %v (after %v)", err, targetURL, d) |
||||
} else { |
||||
log.Printf("dumpGoroutinesToURL complete to %v (after %v)", targetURL, d) |
||||
} |
||||
} |
||||
@ -0,0 +1,17 @@ |
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
//go:build !js && !wasm
|
||||
|
||||
package ipnlocal |
||||
|
||||
import ( |
||||
"net/http" |
||||
"runtime/pprof" |
||||
) |
||||
|
||||
func init() { |
||||
c2nLogHeap = func(w http.ResponseWriter, r *http.Request) { |
||||
pprof.WriteHeapProfile(w) |
||||
} |
||||
} |
||||
@ -1,45 +0,0 @@ |
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
//go:build !js
|
||||
|
||||
// Package logheap logs a heap pprof profile.
|
||||
package logheap |
||||
|
||||
import ( |
||||
"bytes" |
||||
"context" |
||||
"log" |
||||
"net/http" |
||||
"runtime" |
||||
"runtime/pprof" |
||||
"time" |
||||
) |
||||
|
||||
// LogHeap uploads a JSON logtail record with the base64 heap pprof by means
|
||||
// of an HTTP POST request to the endpoint referred to in postURL.
|
||||
func LogHeap(postURL string) { |
||||
if postURL == "" { |
||||
return |
||||
} |
||||
runtime.GC() |
||||
buf := new(bytes.Buffer) |
||||
if err := pprof.WriteHeapProfile(buf); err != nil { |
||||
log.Printf("LogHeap: %v", err) |
||||
return |
||||
} |
||||
|
||||
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) |
||||
defer cancel() |
||||
req, err := http.NewRequestWithContext(ctx, "POST", postURL, buf) |
||||
if err != nil { |
||||
log.Printf("LogHeap: %v", err) |
||||
return |
||||
} |
||||
res, err := http.DefaultClient.Do(req) |
||||
if err != nil { |
||||
log.Printf("LogHeap: %v", err) |
||||
return |
||||
} |
||||
defer res.Body.Close() |
||||
} |
||||
@ -1,7 +0,0 @@ |
||||
// Copyright (c) Tailscale Inc & AUTHORS
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
|
||||
package logheap |
||||
|
||||
func LogHeap(postURL string) { |
||||
} |
||||
Loading…
Reference in new issue