txnkv: decrease some max and base backoff time (#388)

Signed-off-by: youjiali1995 <zlwgx1023@gmail.com>
This commit is contained in:
Lei Zhao 2021-12-06 15:29:23 +08:00 committed by GitHub
parent 3a7675742e
commit c0e8766154
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
8 changed files with 17 additions and 16 deletions

View File

@ -293,12 +293,12 @@ func (s *testSnapshotSuite) TestSnapshotRuntimeStats() {
snapshot.MergeRegionRequestStats(reqStats.Stats) snapshot.MergeRegionRequestStats(reqStats.Stats)
snapshot.MergeRegionRequestStats(reqStats.Stats) snapshot.MergeRegionRequestStats(reqStats.Stats)
bo := tikv.NewBackofferWithVars(context.Background(), 2000, nil) bo := tikv.NewBackofferWithVars(context.Background(), 2000, nil)
err := bo.BackoffWithMaxSleepTxnLockFast(30, errors.New("test")) err := bo.BackoffWithMaxSleepTxnLockFast(5, errors.New("test"))
s.Nil(err) s.Nil(err)
snapshot.RecordBackoffInfo(bo) snapshot.RecordBackoffInfo(bo)
snapshot.RecordBackoffInfo(bo) snapshot.RecordBackoffInfo(bo)
expect := "Get:{num_rpc:4, total_time:2s},txnLockFast_backoff:{num:2, total_time:60ms}" expect := "Get:{num_rpc:4, total_time:2s},txnLockFast_backoff:{num:2, total_time:10ms}"
s.Equal(snapshot.FormatStats(), expect) s.Equal(expect, snapshot.FormatStats())
detail := &kvrpcpb.ExecDetailsV2{ detail := &kvrpcpb.ExecDetailsV2{
TimeDetail: &kvrpcpb.TimeDetail{ TimeDetail: &kvrpcpb.TimeDetail{
WaitWallTimeMs: 100, WaitWallTimeMs: 100,
@ -316,7 +316,7 @@ func (s *testSnapshotSuite) TestSnapshotRuntimeStats() {
}, },
} }
snapshot.MergeExecDetail(detail) snapshot.MergeExecDetail(detail)
expect = "Get:{num_rpc:4, total_time:2s},txnLockFast_backoff:{num:2, total_time:60ms}, " + expect = "Get:{num_rpc:4, total_time:2s},txnLockFast_backoff:{num:2, total_time:10ms}, " +
"total_process_time: 100ms, total_wait_time: 100ms, " + "total_process_time: 100ms, total_wait_time: 100ms, " +
"scan_detail: {total_process_keys: 10, " + "scan_detail: {total_process_keys: 10, " +
"total_process_keys_size: 10, " + "total_process_keys_size: 10, " +
@ -324,9 +324,9 @@ func (s *testSnapshotSuite) TestSnapshotRuntimeStats() {
"rocksdb: {delete_skipped_count: 5, " + "rocksdb: {delete_skipped_count: 5, " +
"key_skipped_count: 1, " + "key_skipped_count: 1, " +
"block: {cache_hit_count: 10, read_count: 20, read_byte: 15 Bytes}}}" "block: {cache_hit_count: 10, read_count: 20, read_byte: 15 Bytes}}}"
s.Equal(snapshot.FormatStats(), expect) s.Equal(expect, snapshot.FormatStats())
snapshot.MergeExecDetail(detail) snapshot.MergeExecDetail(detail)
expect = "Get:{num_rpc:4, total_time:2s},txnLockFast_backoff:{num:2, total_time:60ms}, " + expect = "Get:{num_rpc:4, total_time:2s},txnLockFast_backoff:{num:2, total_time:10ms}, " +
"total_process_time: 200ms, total_wait_time: 200ms, " + "total_process_time: 200ms, total_wait_time: 200ms, " +
"scan_detail: {total_process_keys: 20, " + "scan_detail: {total_process_keys: 20, " +
"total_process_keys_size: 20, " + "total_process_keys_size: 20, " +
@ -334,5 +334,5 @@ func (s *testSnapshotSuite) TestSnapshotRuntimeStats() {
"rocksdb: {delete_skipped_count: 10, " + "rocksdb: {delete_skipped_count: 10, " +
"key_skipped_count: 2, " + "key_skipped_count: 2, " +
"block: {cache_hit_count: 20, read_count: 40, read_byte: 30 Bytes}}}" "block: {cache_hit_count: 20, read_count: 40, read_byte: 30 Bytes}}}"
s.Equal(snapshot.FormatStats(), expect) s.Equal(expect, snapshot.FormatStats())
} }

View File

@ -44,8 +44,8 @@ import (
func TestBackoffWithMax(t *testing.T) { func TestBackoffWithMax(t *testing.T) {
b := NewBackofferWithVars(context.TODO(), 2000, nil) b := NewBackofferWithVars(context.TODO(), 2000, nil)
err := b.BackoffWithMaxSleepTxnLockFast(30, errors.New("test")) err := b.BackoffWithMaxSleepTxnLockFast(5, errors.New("test"))
assert.Nil(t, err) assert.Nil(t, err)
assert.Equal(t, 30, b.totalSleep) assert.Equal(t, 5, b.totalSleep)
} }

View File

@ -111,7 +111,7 @@ var (
// TODO: distinguish tikv and tiflash in metrics // TODO: distinguish tikv and tiflash in metrics
BoTiKVRPC = NewConfig("tikvRPC", &metrics.BackoffHistogramRPC, NewBackoffFnCfg(100, 2000, EqualJitter), tikverr.ErrTiKVServerTimeout) BoTiKVRPC = NewConfig("tikvRPC", &metrics.BackoffHistogramRPC, NewBackoffFnCfg(100, 2000, EqualJitter), tikverr.ErrTiKVServerTimeout)
BoTiFlashRPC = NewConfig("tiflashRPC", &metrics.BackoffHistogramRPC, NewBackoffFnCfg(100, 2000, EqualJitter), tikverr.ErrTiFlashServerTimeout) BoTiFlashRPC = NewConfig("tiflashRPC", &metrics.BackoffHistogramRPC, NewBackoffFnCfg(100, 2000, EqualJitter), tikverr.ErrTiFlashServerTimeout)
BoTxnLock = NewConfig("txnLock", &metrics.BackoffHistogramLock, NewBackoffFnCfg(200, 3000, EqualJitter), tikverr.ErrResolveLockTimeout) BoTxnLock = NewConfig("txnLock", &metrics.BackoffHistogramLock, NewBackoffFnCfg(100, 3000, EqualJitter), tikverr.ErrResolveLockTimeout)
BoPDRPC = NewConfig("pdRPC", &metrics.BackoffHistogramPD, NewBackoffFnCfg(500, 3000, EqualJitter), tikverr.NewErrPDServerTimeout("")) BoPDRPC = NewConfig("pdRPC", &metrics.BackoffHistogramPD, NewBackoffFnCfg(500, 3000, EqualJitter), tikverr.NewErrPDServerTimeout(""))
// change base time to 2ms, because it may recover soon. // change base time to 2ms, because it may recover soon.
BoRegionMiss = NewConfig("regionMiss", &metrics.BackoffHistogramRegionMiss, NewBackoffFnCfg(2, 500, NoJitter), tikverr.ErrRegionUnavailable) BoRegionMiss = NewConfig("regionMiss", &metrics.BackoffHistogramRegionMiss, NewBackoffFnCfg(2, 500, NoJitter), tikverr.ErrRegionUnavailable)

View File

@ -63,6 +63,6 @@ var DefaultVars = NewVariables(&ignoreKill)
// Default values // Default values
const ( const (
DefBackoffLockFast = 100 DefBackoffLockFast = 10
DefBackOffWeight = 2 DefBackOffWeight = 2
) )

View File

@ -900,8 +900,8 @@ func (tm *ttlManager) reset() {
close(tm.ch) close(tm.ch)
} }
const keepAliveMaxBackoff = 20000 // 20 seconds const keepAliveMaxBackoff = 20000
const pessimisticLockMaxBackoff = 600000 // 10 minutes const pessimisticLockMaxBackoff = 20000
const maxConsecutiveFailure = 10 const maxConsecutiveFailure = 10
func keepAlive(c *twoPhaseCommitter, closeCh chan struct{}, primaryKey []byte, lockCtx *kv.LockCtx) { func keepAlive(c *twoPhaseCommitter, closeCh chan struct{}, primaryKey []byte, lockCtx *kv.LockCtx) {

View File

@ -515,6 +515,7 @@ func (lr *LockResolver) getTxnStatusFromLock(bo *retry.Backoffer, l *Lock, calle
// For pessimistic lock resolving, if the primary lock does not exist and rollbackIfNotExist is true, // For pessimistic lock resolving, if the primary lock does not exist and rollbackIfNotExist is true,
// The Action_LockNotExistDoNothing will be returned as the status. // The Action_LockNotExistDoNothing will be returned as the status.
rollbackIfNotExist = true rollbackIfNotExist = true
continue
} else { } else {
// For the Rollback statement from user, the pessimistic locks will be rollbacked and the primary key in store // For the Rollback statement from user, the pessimistic locks will be rollbacked and the primary key in store
// has no related information. There are possibilities that some other transactions do checkTxnStatus on these // has no related information. There are possibilities that some other transactions do checkTxnStatus on these

View File

@ -110,7 +110,7 @@ func (s *Scanner) Value() []byte {
return nil return nil
} }
const scannerNextMaxBackoff = 600000 // 10 minutes const scannerNextMaxBackoff = 20000
// Next return next element. // Next return next element.
func (s *Scanner) Next() error { func (s *Scanner) Next() error {

View File

@ -155,7 +155,7 @@ func NewTiKVSnapshot(store kvstore, ts uint64, replicaReadSeed uint32) *KVSnapsh
} }
} }
const batchGetMaxBackoff = 600000 // 10 minutes const batchGetMaxBackoff = 20000
// SetSnapshotTS resets the timestamp for reads. // SetSnapshotTS resets the timestamp for reads.
func (s *KVSnapshot) SetSnapshotTS(ts uint64) { func (s *KVSnapshot) SetSnapshotTS(ts uint64) {
@ -458,7 +458,7 @@ func (s *KVSnapshot) batchGetSingleRegion(bo *retry.Backoffer, batch batchKeys,
} }
} }
const getMaxBackoff = 600000 // 10 minutes const getMaxBackoff = 20000
// Get gets the value for key k from snapshot. // Get gets the value for key k from snapshot.
func (s *KVSnapshot) Get(ctx context.Context, k []byte) ([]byte, error) { func (s *KVSnapshot) Get(ctx context.Context, k []byte) ([]byte, error) {