Assume you have already deployed PD, TiKV, Prometheus and Grafana.
PD: 127.0.0.1:2379 TiKV: 127.0.0.1:20181, 127.0.0.1:20182, 127.0.0.1:20183 Prometheus: 127.0.0.1:9090 Grafana: 127.0.0.1:3000
| #!/usr/bin/python | |
| # | |
| # memleak Trace and display outstanding allocations to detect | |
| # memory leaks in user-mode processes and the kernel. | |
| # | |
| # USAGE: memleak [-h] [-p PID] [-t] [-a] [-o OLDER] [-c COMMAND] | |
| # [--combined-only] [-s SAMPLE_RATE] [-T TOP] [-z MIN_SIZE] | |
| # [-Z MAX_SIZE] [-O OBJ] | |
| # [interval] [count] | |
| # |
| extern crate backtrace; | |
| extern crate libc; | |
| use backtrace::BytesOrWideString; | |
| use std::alloc::{System, GlobalAlloc, Layout}; | |
| use std::sync::atomic::{AtomicUsize, Ordering::SeqCst}; | |
| struct Counter; | |
| static ALLOCATED: AtomicUsize = AtomicUsize::new(0); |
| package main | |
| import ( | |
| "bufio" | |
| "bytes" | |
| "encoding/json" | |
| "flag" | |
| "fmt" | |
| "io" | |
| "net/http" |
| ROOT=$PWD/build | |
| rm -rf $ROOT | |
| mkdir -p $ROOT | |
| cd $ROOT | |
| # Go | |
| if which go >/dev/null; then | |
| echo "go installed, skip" | |
| else |
| # TiKV root | |
| dir="." | |
| output="./Dockerfile" | |
| if [ "$#" -eq 1 ]; then | |
| output=$1 | |
| fi | |
| cat <<EOT > ${output} | |
| FROM pingcap/rust as builder |
| +--------------------+--------------------------+---------------------+--------------------------+ | |
| | Workload | Operations | Record selection | Application example | | |
| +--------------------+--------------------------+---------------------+--------------------------+ | |
| | A — Update heavy | Read: 50%, Update: 50% | Zipfian | User Session | | |
| | B — Read heavy | Read: 95%, Update: 5% | Zipfian | Photo tagging | | |
| | C — Read only | Read: 100% | Zipfian | User profile cache | | |
| | D — Read latest | Read: 95%, Insert: 5% | Latest | User status updates | | |
| | E — Short range | Scan: 95%, Insert: 5% | Zipfian / Uniform | Threaded conversations | | |
| +--------------------+--------------------------+---------------------+--------------------------+ |
| go run tikv-assembly.go -f "port 20160" -i lo0 | |
| 2018/12/29 20:17:17 Starting capture on interface "lo0" | |
| 2018/12/29 20:17:17 reading in packets | |
| 2018/12/29 20:17:26 127.0.0.1:64989 -> 127.0.0.1:20160 /tikvpb.Tikv/KvPrewrite context:<region_id:2 region_epoch:<conf_ver:1 version:1 > peer:<id:3 store_id:1 > > mutations:<key:"usertable:a" value:"\010\000\002\0020" > primary_lock:"usertable:a" start_version:405297128206237697 lock_ttl:3000 | |
| 2018/12/29 20:17:26 127.0.0.1:20160 -> 127.0.0.1:64989 /tikvpb.Tikv/KvPrewrite | |
| 2018/12/29 20:17:26 127.0.0.1:64995 -> 127.0.0.1:20160 /tikvpb.Tikv/KvCommit context:<region_id:2 region_epoch:<conf_ver:1 version:1 > peer:<id:3 store_id:1 > > start_version:405297128206237697 keys:"usertable:a" commit_version:405297128206237698 | |
| 2018/12/29 20:17:26 127.0.0.1:20160 -> 127.0.0.1:64995 /tikvpb.Tikv/KvCommit | |
| 2018/12/29 20:17:29 127.0.0.1:64999 -> 127.0.0.1:20160 /tikvpb.Tikv/KvGet context:<region_id:2 region_epoch:<conf_ver:1 version:1 > peer:<id:3 store_id:1 > > key:"usertable:a" version:4 |