pingcap / pingcap/tidb

Need to add metrics for the time it takes for connection establishment and destroy

Open
#46,879 0 comments 0 reactions 0 assignees View on GitHub
type/feature-request
Dominant language
Go
Stars
40.5k
Forks
6.2k
PR merge metrics
PR metrics pending

Description

## Feature Request

**Is your feature request related to a problem? Please describe:**

We encounter high application connection get time

we see high handshake in mutex profile, we need the metric how long it takes connection establishment and destroy to debug if the high application get connection wait time is caused by TiDB or not
```
53292180 70 @ 0x1a2001e 0x1a1fff6 0x292c456 0x292c436 0x292cc38 0x4954791 0x49515bb 0x49f73c7 0x49f73b4 0x49df6b9 0x49dfb85 0x49de474 0x49ddad6 0x49dad69 0x4a1e688 0x1a12c41
# 0x1a2001d sync.(*Mutex).Unlock+0x35d /usr/local/go/src/sync/mutex.go:223
# 0x1a1fff5 sync.(*Map).Swap+0x335 /usr/local/go/src/sync/map.go:367
# 0x292c455 sync.(*Map).Store+0x55 /usr/local/go/src/sync/map.go:155
# 0x292c435 github.com/pingcap/tidb/util/topsql/stmtstats.(*aggregator).register+0x35 /mnt/tidb/sql/util/topsql/stmtstats/aggregator.go:104
# 0x292cc37 github.com/pingcap/tidb/util/topsql/stmtstats.CreateStatementStats+0x97 /mnt/tidb/sql/util/topsql/stmtstats/stmtstats.go:58
# 0x4954790 github.com/pingcap/tidb/session.createSessionWithOpt+0xd0 /mnt/tidb/sql/session/session.go:3559
# 0x49515ba github.com/pingcap/tidb/session.CreateSessionWithOpt+0x3a /mnt/tidb/sql/session/session.go:3042
# 0x49f73c6 github.com/pingcap/tidb/session.CreateSession+0x46 /mnt/tidb/sql/session/session.go:3036
# 0x49f73b3 github.com/pingcap/tidb/server.(*TiDBDriver).OpenCtx+0x33 /mnt/tidb/sql/server/driver_tidb.go:243
# 0x49df6b8 github.com/pingcap/tidb/server.(*clientConn).openSession+0x118 /mnt/tidb/sql/server/conn.go:813
# 0x49dfb84 github.com/pingcap/tidb/server.(*clientConn).checkAuthPlugin+0x64 /mnt/tidb/sql/server/conn.go:868
# 0x49de473 github.com/pingcap/tidb/server.(*clientConn).handleAuthPlugin+0x53 /mnt/tidb/sql/server/conn.go:694
# 0x49ddad5 github.com/pingcap/tidb/server.(*clientConn).readOptionalSSLRequestAndHandshakeResponse+0x555 /mnt/tidb/sql/server/conn.go:658
# 0x49dad68 github.com/pingcap/tidb/server.(*clientConn).handshake+0x288 /mnt/tidb/sql/server/conn.go:270
# 0x4a1e687 github.com/pingcap/tidb/server.(*Server).onConn+0x427 /mnt/tidb/sql/server/server.go:616

8664 251440 10 @ 0x1a20e69 0x1a210dc 0x1c14516 0x1c144dd 0x1c1350e 0x1c134dd 0x1c228ff 0x1c22efb 0x1c2298c 0x1c22117 0x1c54959 0x1c5760e 0x1c55439 0x1c5064b 0x1c4e4ee 0x1ef3016 0x1ef3002 0x1ef3017 0x1a12c41
8665 # 0x1a20e68 sync.(*Mutex).Unlock+0x28 /usr/local/go/src/sync/mutex.go:223
8666 # 0x1a210db sync.(*Once).doSlow+0xfb /usr/local/go/src/sync/once.go:76
8667 # 0x1c14515 sync.(*Once).Do+0x55 /usr/local/go/src/sync/once.go:65
8668 # 0x1c144dc crypto/x509.(*CertPool).AppendCertsFromPEM.func1+0x1c /usr/local/go/src/crypto/x509/cert_pool.go:228
8669 # 0x1c1350d crypto/x509.(*CertPool).cert+0x16d /usr/local/go/src/crypto/x509/cert_pool.go:77
8670 # 0x1c134dc crypto/x509.(*CertPool).findPotentialParents+0x13c /usr/local/go/src/crypto/x509/cert_pool.go:134
8671 # 0x1c228fe crypto/x509.(*Certificate).buildChains+0x11e /usr/local/go/src/crypto/x509/verify.go:945
8672 # 0x1c22efa crypto/x509.(*Certificate).buildChains.func1+0x45a /usr/local/go/src/crypto/x509/verify.go:940
8673 # 0x1c2298b crypto/x509.(*Certificate).buildChains+0x1ab /usr/local/go/src/crypto/x509/verify.go:949
8674 # 0x1c22116 crypto/x509.(*Certificate).Verify+0x316 /usr/local/go/src/crypto/x509/verify.go:809
8675 # 0x1c54958 crypto/tls.(*Conn).verifyServerCertificate+0x718 /usr/local/go/src/crypto/tls/handshake_client.go:887
8676 # 0x1c5760d crypto/tls.(*clientHandshakeStateTLS13).readServerCertificate+0x2ad /usr/local/go/src/crypto/tls/handshake_client_tls13.go:477
8677 # 0x1c55438 crypto/tls.(*clientHandshakeStateTLS13).handshake+0x238 /usr/local/go/src/crypto/tls/handshake_client_tls13.go:96
8678 # 0x1c5064a crypto/tls.(*Conn).clientHandshake+0x5aa /usr/local/go/src/crypto/tls/handshake_client.go:228
8679 # 0x1c4e4ed crypto/tls.(*Conn).handshakeContext+0x32d /usr/local/go/src/crypto/tls/conn.go:1491
8680 # 0x1ef3015 crypto/tls.(*Conn).HandshakeContext+0x35 /usr/local/go/src/crypto/tls/conn.go:1434
8681 # 0x1ef3001 crypto/tls.(*Conn).Handshake+0x21 /usr/local/go/src/crypto/tls/conn.go:1418
8682 # 0x1ef3016 google.golang.org/grpc/credentials.(*tlsCreds).ClientHandshake.func1+0x36 /go/pkg/mod/google.golang.org/grpc@v1.54.0/credentials/tls.go:87
718140 10 @ 0x1a20e69 0x495be8d 0x4954719 0x49515bb 0x49f73c7 0x49f73b4 0x49df6b9 0x49dfb85 0x49de474 0x49ddad6 0x49dad69 0x4a1e688 0x1a12c41
# 0x1a20e68 sync.(*Mutex).Unlock+0x28 /usr/local/go/src/sync/mutex.go:223
# 0x495be8c github.com/pingcap/tidb/session.(*domainMap).Get+0x34c /mnt/tidb/sql/session/tidb.go:72
# 0x4954718 github.com/pingcap/tidb/session.createSessionWithOpt+0x58 /mnt/tidb/sql/session/session.go:3550
# 0x49515ba github.com/pingcap/tidb/session.CreateSessionWithOpt+0x3a /mnt/tidb/sql/session/session.go:3042
# 0x49f73c6 github.com/pingcap/tidb/session.CreateSession+0x46 /mnt/tidb/sql/session/session.go:3036
# 0x49f73b3 github.com/pingcap/tidb/server.(*TiDBDriver).OpenCtx+0x33 /mnt/tidb/sql/server/driver_tidb.go:243
# 0x49df6b8 github.com/pingcap/tidb/server.(*clientConn).openSession+0x118 /mnt/tidb/sql/server/conn.go:813
# 0x49dfb84 github.com/pingcap/tidb/server.(*clientConn).checkAuthPlugin+0x64 /mnt/tidb/sql/server/conn.go:868
# 0x49de473 github.com/pingcap/tidb/server.(*clientConn).handleAuthPlugin+0x53 /mnt/tidb/sql/server/conn.go:694
# 0x49ddad5 github.com/pingcap/tidb/server.(*clientConn).readOptionalSSLRequestAndHandshakeResponse+0x555 /mnt/tidb/sql/server/conn.go:658
# 0x49dad68 github.com/pingcap/tidb/server.(*clientConn).handshake+0x288 /mnt/tidb/sql/server/conn.go:270
# 0x4a1e687 github.com/pingcap/tidb/server.(*Server).onConn+0x427 /mnt/tidb/sql/server/server.go:616

```

**Describe the feature you'd like:**

metrics for TiDB to provide metrics how long the duration for connection estabilish(not get token) and destroy

**Describe alternatives you've considered:**

None

**Teachability, Documentation, Adoption, Migration Strategy:**

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.