Skip to content

Commit 9edd5af

Browse files
author
wangshaoyi
committed
Revert "fix slowcmd log duration error with batch command && add proxy metrics && reset proxy tp duration in 1 min (#3044)"
This reverts commit 5a761c2.
1 parent e300629 commit 9edd5af

10 files changed

Lines changed: 68 additions & 186 deletions

File tree

codis/go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ replace google.golang.org/grpc => google.golang.org/grpc v1.29.0
88

99
require (
1010
github.com/BurntSushi/toml v0.3.1
11-
github.com/HdrHistogram/hdrhistogram-go v1.1.2
1211
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815
1312
github.com/emirpasic/gods v1.18.1
1413
github.com/garyburd/redigo v1.6.4

codis/go.sum

Lines changed: 1 addition & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,41 +1,26 @@
1-
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
21
github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ=
32
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
4-
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
5-
github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM=
6-
github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo=
7-
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
83
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=
94
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
105
github.com/coreos/go-semver v0.3.1 h1:yi21YpKnrx1gt5R+la8n5WgS0kCrsPp33dmEyHReZr4=
116
github.com/coreos/go-semver v0.3.1/go.mod h1:irMmmIw/7yzSRPWryHsK7EYSg09caPQL03VsM8rvUec=
12-
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
137
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
148
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
159
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1610
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815 h1:bWDMxwH3px2JBh6AyO7hdCn/PkvCZXii8TGj7sbtEbQ=
1711
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
1812
github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
1913
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
20-
github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k=
2114
github.com/garyburd/redigo v1.6.4 h1:LFu2R3+ZOPgSMWMOL+saa/zXRjw0ID2G8FepO53BGlg=
2215
github.com/garyburd/redigo v1.6.4/go.mod h1:rTb6epsqigu3kYKBnaF028A7Tf/Aw5s0cqA47doKKqw=
23-
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
2416
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab h1:xveKWz2iaueeTaUgdetzel+U7exyigDYBryyVfV/rZk=
2517
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab/go.mod h1:/P9AEU963A2AYjv4d1V5eVL1CQbEJq6aCNHDDjibzu8=
26-
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
27-
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
2818
github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o=
2919
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
3020
github.com/influxdata/influxdb v1.11.0 h1:0X+ZsbcOWc6AEi5MHee9BYqXCKmz8IZsljrRYjmV8Qg=
3121
github.com/influxdata/influxdb v1.11.0/go.mod h1:V93tJcidY0Zh0LtSONZWnXXGDyt20dtVf+Ddp4EnhaA=
3222
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
3323
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
34-
github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes=
35-
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
36-
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
37-
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
38-
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
3924
github.com/martini-contrib/binding v0.0.0-20160701174519-05d3e151b6cf h1:6YSkbjZVghliN7zwJC/U3QQG+OVXOrij3qQ8sxfPIMg=
4025
github.com/martini-contrib/binding v0.0.0-20160701174519-05d3e151b6cf/go.mod h1:aCggxkm1kuifLw/LEQUbz91N1ZM6PhV7dz03xPQduZA=
4126
github.com/martini-contrib/gzip v0.0.0-20151124214156-6c035326b43f h1:wVDxEVZP1eiPIlHVaafUAEUDtyl6ytjHv3egJVbyfOk=
@@ -47,8 +32,6 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
4732
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
4833
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
4934
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
50-
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs=
51-
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno=
5235
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c h1:rp5dCmg/yLR3mgFuSOe4oEnDDmGLROTvMragMUXpTQw=
5336
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0=
5437
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
@@ -60,7 +43,6 @@ github.com/spinlock/jemalloc-go v0.0.0-20201010032256-e81523fb8524/go.mod h1:A/i
6043
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
6144
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
6245
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
63-
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
6446
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
6547
github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk=
6648
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
@@ -70,45 +52,12 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.7 h1:y3kf5Gbp4e4q7egZdn5T7W9TSHUvkClN6u+Rq9mE
7052
go.etcd.io/etcd/client/pkg/v3 v3.5.7/go.mod h1:o0Abi1MK86iad3YrWhgUsbGx1pmTS+hrORWc2CamuhY=
7153
go.etcd.io/etcd/client/v2 v2.305.7 h1:AELPkjNR3/igjbO7CjyF1fPuVPjrblliiKj+Y6xSGOU=
7254
go.etcd.io/etcd/client/v2 v2.305.7/go.mod h1:GQGT5Z3TBuAQGvgPfhR7VPySu/SudxmEkRq9BgzFU6s=
73-
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
74-
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
75-
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
76-
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
77-
golang.org/x/exp v0.0.0-20190125153040-c74c464bbbf2/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
78-
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
79-
golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY=
80-
golang.org/x/exp v0.0.0-20211216164055-b2b84827b756 h1:/5Bs7sWi0i3rOVO5KnM55OwugpsD4bRW1zywKoZjbkI=
81-
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
82-
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
83-
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
84-
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
85-
golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
86-
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
87-
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
8855
golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM=
8956
golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
90-
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
91-
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
92-
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
93-
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
94-
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
95-
golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
96-
golang.org/x/tools v0.0.0-20190206041539-40960b6deb8e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
97-
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
98-
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
99-
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
100-
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
101-
gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo=
102-
gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0=
103-
gonum.org/v1/gonum v0.11.0 h1:f1IJhK4Km5tBJmaiJXtk/PkL4cdVX6J+tGiM187uT5E=
104-
gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw=
105-
gonum.org/v1/plot v0.0.0-20190515093506-e2840ee46a6b/go.mod h1:Wt8AAjI+ypCyYX3nZBvf6cAIx93T+c/OS2HFAYskSZc=
10657
gopkg.in/alexcesaro/statsd.v2 v2.0.0 h1:FXkZSCZIH17vLCO5sO2UucTHsH9pc+17F6pl3JVCwMc=
10758
gopkg.in/alexcesaro/statsd.v2 v2.0.0/go.mod h1:i0ubccKGzBVNBpdGV5MocxyA/XlLUJzA7SLonnE4drU=
59+
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
10860
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
109-
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
110-
gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
11161
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
11262
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
11363
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
114-
rsc.io/pdf v0.1.1/go.mod h1:n8OzWcQ6Sp37PL01nO98y4iUCRdTGarVfzxY20ICaU4=

codis/pkg/proxy/backend.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"strconv"
1111
"strings"
1212
"sync"
13-
"sync/atomic"
1413
"time"
1514

1615
"pika/codis/v2/pkg/proxy/redis"
@@ -85,14 +84,14 @@ func (bc *BackendConn) KeepAlive() bool {
8584
}
8685
switch bc.state.Int64() {
8786
default:
88-
m := &Request{ReceiveTime: new(int64), SendToPikaTime: new(int64), ReceiveFromPikaTime: new(int64)}
87+
m := &Request{}
8988
m.Multi = []*redis.Resp{
9089
redis.NewBulkBytes([]byte("PING")),
9190
}
9291
bc.PushBack(m)
9392

9493
case stateDataStale:
95-
m := &Request{ReceiveTime: new(int64), SendToPikaTime: new(int64), ReceiveFromPikaTime: new(int64)}
94+
m := &Request{}
9695
m.Multi = []*redis.Resp{
9796
redis.NewBulkBytes([]byte("INFO")),
9897
}
@@ -285,7 +284,7 @@ func (bc *BackendConn) loopReader(tasks <-chan *Request, c *redis.Conn, round in
285284
}()
286285
for r := range tasks {
287286
resp, err := c.Decode()
288-
atomic.StoreInt64(r.ReceiveFromPikaTime, time.Now().UnixNano())
287+
r.ReceiveFromServerTime = time.Now().UnixNano()
289288
if err != nil {
290289
return bc.setResponse(r, nil, fmt.Errorf("backend conn failure, %s", err))
291290
}
@@ -365,7 +364,7 @@ func (bc *BackendConn) loopWriter(round int) (err error) {
365364
} else {
366365
tasks <- r
367366
}
368-
atomic.CompareAndSwapInt64(r.SendToPikaTime, 0, time.Now().UnixNano())
367+
r.SendToServerTime = time.Now().UnixNano()
369368
}
370369
return nil
371370
}

codis/pkg/proxy/request.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package proxy
55

66
import (
77
"sync"
8-
"sync/atomic"
98
"unsafe"
109

1110
"pika/codis/v2/pkg/proxy/redis"
@@ -22,11 +21,11 @@ type Request struct {
2221
OpStr string
2322
OpFlag
2423

25-
Database int32
26-
ReceiveTime *int64
27-
SendToPikaTime *int64
28-
ReceiveFromPikaTime *int64
29-
TasksLen int64
24+
Database int32
25+
ReceiveTime int64
26+
SendToServerTime int64
27+
ReceiveFromServerTime int64
28+
TasksLen int64
3029

3130
*redis.Resp
3231
Err error
@@ -48,16 +47,14 @@ func (r *Request) MakeSubRequest(n int) []Request {
4847
x.Broken = r.Broken
4948
x.Database = r.Database
5049
x.ReceiveTime = r.ReceiveTime
51-
x.SendToPikaTime = r.SendToPikaTime
52-
x.ReceiveFromPikaTime = r.ReceiveFromPikaTime
5350
}
5451
return sub
5552
}
5653

5754
const GOLDEN_RATIO_PRIME_32 = 0x9e370001
5855

5956
func (r *Request) Seed16() uint {
60-
h32 := uint32(atomic.LoadInt64(r.ReceiveTime)) + uint32(uintptr(unsafe.Pointer(r)))
57+
h32 := uint32(r.ReceiveTime) + uint32(uintptr(unsafe.Pointer(r)))
6158
h32 *= GOLDEN_RATIO_PRIME_32
6259
return uint(h32 >> 16)
6360
}

codis/pkg/proxy/session.go

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,13 @@ import (
1010
"strconv"
1111
"strings"
1212
"sync"
13-
"sync/atomic"
1413
"time"
1514

1615
"pika/codis/v2/pkg/models"
1716
"pika/codis/v2/pkg/proxy/redis"
1817
"pika/codis/v2/pkg/utils/errors"
1918
"pika/codis/v2/pkg/utils/log"
2019
"pika/codis/v2/pkg/utils/sync2/atomic2"
21-
22-
"github.com/HdrHistogram/hdrhistogram-go"
2320
)
2421

2522
type Session struct {
@@ -187,10 +184,7 @@ func (s *Session) loopReader(tasks *RequestChan, d *Router) (err error) {
187184
r.Multi = multi
188185
r.Batch = &sync.WaitGroup{}
189186
r.Database = s.database
190-
r.ReceiveTime = new(int64)
191-
r.SendToPikaTime = new(int64)
192-
r.ReceiveFromPikaTime = new(int64)
193-
*r.ReceiveTime = time.Now().UnixNano()
187+
r.ReceiveTime = start.UnixNano()
194188
r.TasksLen = int64(tasksLen)
195189

196190
if err := s.handleRequest(r, d); err != nil {
@@ -236,16 +230,14 @@ func (s *Session) loopWriter(tasks *RequestChan) (err error) {
236230
if err := p.Encode(resp); err != nil {
237231
return s.incrOpFails(r, err)
238232
}
239-
nowTime := time.Now().UnixNano()
240-
receiveTime := atomic.LoadInt64(r.ReceiveTime)
241-
duration := int64((nowTime - receiveTime) / 1e3)
242-
243233
fflush := tasks.IsEmpty()
244234
if err := p.Flush(fflush); err != nil {
245235
return s.incrOpFails(r, err)
246236
} else {
247-
s.incrOpStats(r, resp.Type, duration)
237+
s.incrOpStats(r, resp.Type)
248238
}
239+
nowTime := time.Now().UnixNano()
240+
duration := int64((nowTime - r.ReceiveTime) / 1e3)
249241
s.updateMaxDelay(duration, r)
250242
if fflush {
251243
s.flushOpStats(false)
@@ -256,22 +248,19 @@ func (s *Session) loopWriter(tasks *RequestChan) (err error) {
256248
//Record the waiting time from receiving the request from the client to sending it to the backend server
257249
//the waiting time from sending the request to the backend server to receiving the response from the server
258250
//the waiting time from receiving the server response to sending it to the client
259-
sendToPikaTime := atomic.LoadInt64(r.SendToPikaTime)
260-
receiveFromPikaTime := atomic.LoadInt64(r.ReceiveFromPikaTime)
261-
262251
var d0, d1, d2 int64 = -1, -1, -1
263-
if sendToPikaTime > 0 {
264-
d0 = int64((sendToPikaTime - receiveTime) / 1e3)
252+
if r.SendToServerTime > 0 {
253+
d0 = int64((r.SendToServerTime - r.ReceiveTime) / 1e3)
265254
}
266-
if sendToPikaTime > 0 && receiveFromPikaTime > 0 {
267-
d1 = int64((receiveFromPikaTime - sendToPikaTime) / 1e3)
255+
if r.SendToServerTime > 0 && r.ReceiveFromServerTime > 0 {
256+
d1 = int64((r.ReceiveFromServerTime - r.SendToServerTime) / 1e3)
268257
}
269-
if receiveFromPikaTime > 0 {
270-
d2 = int64((nowTime - receiveFromPikaTime) / 1e3)
258+
if r.ReceiveFromServerTime > 0 {
259+
d2 = int64((nowTime - r.ReceiveFromServerTime) / 1e3)
271260
}
272261
index := getWholeCmd(r.Multi, cmd)
273-
log.Warnf("remote:%s, duration(us): [%d, %d, %d], %d, tasksLen:%d, command:[%s].",
274-
s.Conn.RemoteAddr(), d0, d1, d2, duration, r.TasksLen, string(cmd[:index]))
262+
log.Errorf("%s remote:%s, start_time(us):%d, duration(us): [%d, %d, %d], %d, tasksLen:%d, command:[%s].",
263+
time.Unix(r.ReceiveTime/1e9, 0).Format("2006-01-02 15:04:05"), s.Conn.RemoteAddr(), r.ReceiveTime/1e3, d0, d1, d2, duration, r.TasksLen, string(cmd[:index]))
275264
}
276265
return nil
277266
})
@@ -680,17 +669,16 @@ func (s *Session) incrOpTotal() {
680669
func (s *Session) getOpStats(opstr string) *opStats {
681670
e := s.stats.opmap[opstr]
682671
if e == nil {
683-
e = &opStats{opstr: opstr, hist: hdrhistogram.New(1, 10000, 3)}
672+
e = &opStats{opstr: opstr}
684673
s.stats.opmap[opstr] = e
685674
}
686675
return e
687676
}
688677

689-
func (s *Session) incrOpStats(r *Request, t redis.RespType, duration int64) {
678+
func (s *Session) incrOpStats(r *Request, t redis.RespType) {
690679
e := s.getOpStats(r.OpStr)
691680
e.calls.Incr()
692-
e.nsecs.Add(duration)
693-
e.hist.RecordValue(duration / 1e3)
681+
e.nsecs.Add(time.Now().UnixNano() - r.ReceiveTime)
694682
switch t {
695683
case redis.TypeError:
696684
e.redis.errors.Incr()

codis/pkg/proxy/stats.go

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ import (
1212

1313
"pika/codis/v2/pkg/utils"
1414
"pika/codis/v2/pkg/utils/sync2/atomic2"
15-
16-
hdrhistogram "github.com/HdrHistogram/hdrhistogram-go"
1715
)
1816

1917
var (
@@ -30,7 +28,6 @@ type opStats struct {
3028
errors atomic2.Int64
3129
}
3230
maxDelay atomic2.Int64
33-
hist *hdrhistogram.Histogram
3431
}
3532

3633
func (s *opStats) OpStats() *OpStats {
@@ -40,9 +37,6 @@ func (s *opStats) OpStats() *OpStats {
4037
Usecs: s.nsecs.Int64() / 1e3,
4138
Fails: s.fails.Int64(),
4239
MaxDelay: s.maxDelay.Int64(),
43-
TP99: s.hist.ValueAtPercentile(99),
44-
TP999: s.hist.ValueAtPercentile(99.9),
45-
TP9999: s.hist.ValueAtPercentile(99.99),
4640
}
4741
if o.Calls != 0 {
4842
o.UsecsPercall = o.Usecs / o.Calls
@@ -59,9 +53,6 @@ type OpStats struct {
5953
Fails int64 `json:"fails"`
6054
RedisErrType int64 `json:"redis_errtype"`
6155
MaxDelay int64 `json:"max_delay"`
62-
TP99 int64 `json:"tp99"`
63-
TP999 int64 `json:"tp999"`
64-
TP9999 int64 `json:"tp9999"`
6556
}
6657

6758
var cmdstats struct {
@@ -96,14 +87,13 @@ func init() {
9687
for {
9788
refreshPeriod := RefreshPeriod.Int64()
9889
if refreshPeriod == 0 {
99-
time.Sleep(1 * time.Minute)
90+
time.Sleep(15 * time.Second)
10091
} else {
10192
time.Sleep(time.Duration(refreshPeriod))
10293
}
10394

10495
for _, s := range cmdstats.opmap {
10596
s.maxDelay.Set(0)
106-
s.hist.Reset()
10797
}
10898
}
10999
}()
@@ -137,7 +127,7 @@ func getOpStats(opstr string, create bool) *opStats {
137127
cmdstats.Lock()
138128
s = cmdstats.opmap[opstr]
139129
if s == nil {
140-
s = &opStats{opstr: opstr, hist: hdrhistogram.New(1, 10000, 3)}
130+
s = &opStats{opstr: opstr}
141131
cmdstats.opmap[opstr] = s
142132
}
143133
cmdstats.Unlock()
@@ -201,9 +191,6 @@ func incrOpStats(e *opStats) {
201191
cmdstats.redis.errors.Add(n)
202192
}
203193

204-
s.hist.Merge(e.hist)
205-
e.hist.Reset()
206-
207194
/**
208195
Each session refreshes its own saved metrics, and there is a race condition at this time.
209196
Use the CAS method to update.

codis/pkg/utils/log/log.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ func New(writer io.Writer, prefix string) *Logger {
138138
}
139139
return &Logger{
140140
out: out,
141-
log: log.New(out, prefix, LstdFlags|Lshortfile|Lmicroseconds),
141+
log: log.New(out, prefix, LstdFlags|Lshortfile),
142142
level: LevelAll,
143143
trace: LevelError,
144144
}

tools/pika_exporter/discovery/codis_dashboard.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,6 @@ type CmdInfo struct {
5050
Usecs_percall int64 `json:"usecs_percall"`
5151
Fails int64 `json:"fails"`
5252
MaxDelay int64 `json:"max_delay"`
53-
TP99 int64 `json:"tp99"`
54-
TP909 int64 `json:"tp999"`
55-
TP9999 int64 `json:"tp9999"`
5653
}
5754

5855
type ProxyOpsInfo struct {

0 commit comments

Comments
 (0)