原理1. 在 Lucene 中,单个倒排索引文件被称为 Segment。Segment 是自包含的,不可变更的。 多个 Segments 汇总在一起,称为 Lucene 的 Index,其对应的就是 ES 中的 Shard2. 当有新文档写入时,并且执行 Refresh,就会 会生成一个新 Segment。 Lucene 中有一个文件,用来记录所有 Segments 信息,叫做 Com
建议 : 一个分片不能大于40G数据red: 找到状态为 UNASSIGNED 的 shard,并找到分片所在的node,然后查看相应的node是否挂掉,如果挂掉,需要 重启node,再观察集群和分片状态curl -XGET {ip:port}/_cat/shards?vindex shard prirep state
描述 在操作系统中,进程分为用户态进程和内核态进程,应用程序运行在用户态,内核态负责对资源包括网络,磁盘,内存等管理,用户态进程要访问这些资源时,需要通过系统调用陷入内核态,由内核来统一管理和分配。 通过系统调用陷入内核态,或者应用程序运行过程中,产生的signal,都可以被strace捕获到,每个系统调用的名称,参数,返回值,调用时间通过标准错误输出或者-O选项写入到文件中,通过分析
磁盘指标使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。IOPS(Input/Output Per Second),是指每秒的 I/O 请求数。吞吐量,是指每秒的 I/O 请求大小。响应时
1.vmstat 低开销良好的性能视图-n :默认隔一会儿会显示标题,-n一直显示数据,不显示标题-s:一次性输出vmstat详细信息,该信息为系统启动后的总数据[root@task-server-01 ~]# vmstat 1procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b
安装yum install -y goaccessnginx log_format配置log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$ht
下载火焰图生成pl脚本git clone https://github.com/brendangregg/FlameGraph.gitcd FlameGraph/生成perf.data文件perf record -g # 指定 pid : perf record -g -p 20988ls -al perf.data生成火焰图perf script -i perf.data | ./stack
项目地址https://github.com/brendangregg/perf-tools安装内核3.2以上git clone --depth 1 https://github.com/brendangregg/perf-tools单独工具安装wget https://raw.githubusercontent.com/brendangregg/perf-tools/master/ios
/proc 分区下保存着进程目录和名字,包含fd(文件描述符)和其下的子目录(进程打开文件的链接),那么如果删除了一个文件,还存在一个 inode的引用:/proc/进程号/fd/文件描述符。步骤1.lsof查找deleted文件的pid[root@16-21 ~]# lsof |grep deletetsf-agent 3265 root 8w
步骤1.修改配置文件skip-grant-tables 跳过权限,重启服务2.登录重置密码 use mysqlupdate user set authentication_string='' where user='root';3.关闭skip-grant-tables 重启服务4.空密码登录,修改密码,注意这里不修改无法做有权限操作,如新建用户 ALTER USER 'root'@'localh
docker-composeversion: '2'
model.py定义from django.contrib.auth.models import AbstractUser # 引入user模型的基础类class User(AbstractUser): cn_name = models.CharField(u'中文名', max_length=30, blank=True) department = models.ForeignKey
只填充如果您希望它是“只写的”,需要用serializers.HiddenField,这意味着DRF会在写入时自动填充字段,而不会在读取时返回Userclass ProjectSerializer(serializers.ModelSerializer): owner = serializers.HiddenField(default=serializers.CurrentUserDefau
常用显示过滤语法(抓好的包查找)file:///D:/Program%20Files/Wireshark/wireshark-filter.html比较操作符== 等于!= 不等于> 大于< 小于>= 大于等于<= 小于等于 逻辑运算符and 两个条件同时满足or 其中一个条件满足xor 有且仅有一个条件满足not 没有条件满足 IP过滤ip.addrip.srcip.d
docker-copose.ymlversion: "3.1" services:
项目地址https://pypi.org/project/python-redis-lock/安装pip install python-redis-lock很全的锁,能自动续约续租,强烈建议使用from redis import Redisconn = Redis()import redis_locklock = redis_lock.Lock(conn, "name-of-the-loc
因为 Json 格式是由 JavaScript 对象为基础创建的轻量级数据格式,而 JS 没有 datetime 数据类型,所以在 Python 中使用 json.dumps 会报错(至于为什么会出现 datetime 格式的数据,最常见的是请求 MySQL 数据库时,数据库给返回的是 datetime 格式的数据)datetimeTypeError: datetime.datetime(2019
项目地址:https://github.com/elasticsearch-dump/elasticsearch-dump1.安装nodejs(略)2.安装elasticdump(注意需要将node的
minReadySeconds: 5strategy: # indicate which strategy we want for rolling update type: RollingUpdate rollingUpdate: maxSurge: 1 maxUnavailable: 1minReadySeconds: Kubernetes在等待设置的时间后才进行升级 如果没有
helm无法升级apiversion,如果K8S升级到1.18后,用kubeneteus升级了apiversion,但是helm upgrade还是会失败官网文档 https://helm.sh/docs/topics/kubernetes_apis/1.找到最新secret版本 kubectl get secretNAME
bash用户:echo "source <(kubectl completion bash)" >> ~/.bashrcsource ~/.bashrczsh用户:echo "source <(kubectl completion zsh)" >> ~/.zshrcsource ~/.zshrc这样不仅可以帮助你补全describe service deploy
一、首先在master上生成新的tokenkubeadm token create --print-join-commandkubeadm token create --print-join-comman范例[root@cn-hongkong nfs]# kubeadm token create --print-join-commandkubeadm join 172.31.182.156:84
常见nsmnt uts ipc pid lsns:查看容器的ns [root@182 ~]# lsns NS TYPE NPROCS PID USER COMMAND4026531836 pid 256 1 root /usr/lib/systemd/systemd --switched-roo
CPU: CPU Cgroup 是 Cgroups 其中的一个 Cgroups 子系统,它是用来限制进程的 CPU 使用的。 限制的是用户态的CPU us和ni,对内核态不限制sy、wa、hi、si 目录:/sys/fs/cgroup/cpu 重要参数:k8s资源限制示例: resources: limits: cpu: 200m
取值 {{ . }}{{ .m1 }}注释 {{/* 单行或者多行注释*/}}设置变量 {{ $name := "tommy" }}取列表某个index值 {{ index .hobby 2 }}if条件判断{{ if $age }} {{age}}{{else}} age屁都没有{{end}}lt:小于 gt:大于 eq:等于...如果小于18岁{{if lt $age 18 }}
func localIP() string { addrs, err := net.InterfaceAddrs() if err != nil { return "unknow" } for _, address := range addrs { if ipnet, ok := address.(*net.IPNet); ok && !ipne
定义一个中间件func checkPassword(c *gin.Context){ //或者 func checkPassword() gin.HandlerFunc {} auth := c.DefaultQuery("auth","") if password == "" || password == auth{ c.Next() // 发送下一个 } else
生成json:1.将struct或者map解析为json范例:package mainimport ( "encoding/json" "fmt")type student struct { Name string Age int School string Kemu []string}func main(){ tommy := student{"tommy",27,"
RE2标准import "regexp"步骤:buf := "abc ac add ssd sdsa adssd "1.解析规则,解析正则表达式,如果成功,返回解释器reg:=regexp.MustCompile(`a.c`) //反引号,防止解析,正则规则if reg != nil { fmt.Println("解析失败") return}2.根据规则提取信息result :=
os.args范例package mainimport "os"import "fmt"func main(){ args := os.Args // 得到args是一个[]string fmt.Println("args:",args) for i,v := range args{ // 循环得到每个空格参数的值,0是函数本身 fmt.Printf("args[
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号