Linux OS Debug 方法记录
触发 EC2 Linux 的 NMI Unknown 中断发送一个诊断请求给 EC2, 触发 os 本身 NMI Unknown 事件,这个时间会触发 Kdump 记录当时的现场。 1aws ec2 send-diagnostic-interrupt --region cn-north-1 --instance-id i-******************** 记录下来的现场文件保存在 /var/crash/ 1234567[root@mysql 5.14.0-284.11.1.el9_2.x86_64]# ll /var/crash/total 0drwxr-xr-x. 2 root root 67 Jun 6 05:22 127.0.0.1-2023-06-06-05:22:11drwxr-xr-x. 2 root root 67 Jun 6 08:58 127.0.0.1-2023-06-06-08:58:20drwxr-xr-x. 2 root root 67 Jun 9 09:39 127.0.0.1-2023-06-09-09...
快速启动一个 prometheus 和 grafana
快速创建一个可用的 prometheus 和 grafana 进行测试, 并将数据保留在当前的目录中, 在重启之后数据不会丢失: 创建一个目录. 123456mkdir /opt/monitormkdir /opt/monitor/grafanamkdir /opt/monitor/grafana_datamkdir /opt/monitor/prometheusmkdir /opt/monitor/prometheus_datatouch /opt/monitor/docker-compose.yaml 创建docker-compose 文件 1234567891011121314151617181920212223242526272829303132---version: "3"services: prometheus: container_name: prometheus image: reg.liarlee.site/docker.io/prom/prometheus:latest restart: always net...
数据库单表的测试
基于这个问题的测试为什么MySQL单表不要超过2000w行? 测试过程:123456789101112131415161718192021CREATE TABLE test(id int NOT NULL AUTO_INCREMENT PRIMARY KEY comment '主键',person_id int not null comment '用户id',person_name VARCHAR(200) comment '用户名称',gmt_create datetime comment '创建时间',gmt_modified datetime comment '修改时间') comment '人员信息表';插入数据:insert into test values(1,1,'user_1', NOW(), now());insert into test (person_id, person_name, gmt_create, gmt_mo...
Network 相关知识不知道放那儿
Origin Version:https://datatracker.ietf.org/doc/html/rfc1180 Chinese Version:http://arthurchiao.art/blog/rfc1180-a-tcp-ip-tutorial-zh/ Tuning initcwnd for optimum Performance: https://www.cdnplanet.com/blog/tune-tcp-initcwnd-for-optimum-performance/ https://www.kawabangga.com/posts/5217 Other Linux Network Stack Explaination:https://www.clockblog.life/article/2023/7/4/44.html Linux内核网络https://www.clockblog.life/article/2023/7/4/44.html https://blogs.runsunway.com/
buffer/cache 无法释放
问题看到了一个案例, 这个案例的问题是: 为什么我的buffer/cache在echo 3 之后, 还是不能回收, 内存的占用很大。 命令如下: 12345678910111213root@ip-172-31-47-174 ~# free -h total used free shared buff/cache availableMem: 7.5Gi 1.3Gi 3.5Gi 2.1Gi 2.6Gi 3.8GiSwap: 0B 0B 0Broot@ip-172-31-47-174 ~# echo 3 > /proc/sys/vm/drop_cachesroot@ip-172-31-47-174 ~# free -h total used free shared buff/cache a...
RDS QPS 下降引发的网络流控分析记录
找到了另一个大佬对于TCP在linux内核的分析和测试: Link Topic 1 现象看到一个朋友的问题, 由 RDS QPS 下降引发的网络问题分析: 引用原文的问题描述: 这个问题一开始是在进行RDS实验的时候发现的。最初的情景是,多台机器同时对数据库进行select和insert操作时,会发现insert操作会造成select操作qps大幅下降,且insert操作结束之后select操作的qps仍不能回升。起初以为是RDS的问题,但是在复现问题、监控RDS之后发现RDS的压力其实很小。于是开始怀疑是网络的问题,在简化了场景和操作之后,发现能在过去做tcp实验的机器上复现,于是用这个更简单的场景进行问题复现和分析。 正确答案以及复盘: https://yishenggong.com/2023/05/06/why-does-my-network-speed-drop-cn/ 感谢大佬@plantegg 提供的这个案例和知识星球, tcp协议和 os 网络系统的分析我之前真是一句都说不出来, 这次确实完整的走了一遍网络的部分。 下面是我的一些思路和资料整理: 看完了问...
将ArchLinux作为节点加入EKS UnmanagedNode
添加一个自管理的节点添加这个自管理的节点是直接添加进入集群的, 并未使用EKS节点组的概念, 所以这个节点是可以被重启, 或者健康检查失败的, 并不具有任何的扩展或者弹性管理的能力。 创建集群,启动一个新的 EC2, 登录到已经启动的 EKS 优化 OS 内,准备复制一些脚本过来。 添加EC2的标签: kubernetes.io/cluster/clusterName owned 配置EC2的Instance Profile 控制台获取 Kubernetes APIServer的Endpoint URL 获取 apiserver b64 CA : cat ~/.kube/config 这个文件里面可以找到 ,或者是通过EKS的控制台上面, 找到 Base64 的 CA。 编辑 userdata, 或者 ssh 登录到ec2上面创建一个bash脚本用来调用 bootstrap.sh 12345678910mkdir ~/eks; touch ~/eks/start.sh---#!/bin/bashset -exB64_CLUSTER_CA=API_...
Linux OS 网络流量控制测试
内核参数的说明对于 TCP 来说,会遇到如下的几个参数。 如果我们需要查看一下当前 OS 内与 tcp 相关的 Kernel 参数, 命令如下: 1]$ sysctl -a | egrep "rmem|wmem|tcp_mem|adv_win|moderate" 其中主要需要关注的是: 12net.ipv4.tcp_rmem = 4096 131072 6291456net.ipv4.tcp_wmem = 4096 16384 4194304 这两个参数表示的是当前内核预留的 Socket Buffer, 单位是Bytes, 也是具体指 内存 的大小。具体的说明我找到 Kernel文档的说明如下: 123456789101112131415161718192021222324252627282930313233343536tcp_rmem - vector of 3 INTEGERs: min, default, max min: Minimal size of receive buffer used by TCP sockets. It is guar...
删除所有非Running状态的Pod
背景 如果所有的节点上面都有Taint, 然后这个没有Taint的节点磁盘满了, 会导致当前的节点上面留下许多状态不正常的Pod, 这些Pod大概率是停留在了Evicted状态, 或者是Completed, 甚至是 Unknown 。 这种状态的Pod Deployment默认的情况下不会自动回收, 所以需要人工操作一下。 Knowledge Source 处理方法记录一个命令来处理这个类型的Pod。 1kubectl delete pod --field-selector="status.phase==Failed" 测试方法 集群内两个节点, 其中一个节点Taint 1kubectl taint nodes ip-172-31-60-181.cn-north-1.compute.internal app=grafana:NoSchedule 启动30个Grafana 登录到节点上面, 创建一个巨大的文件, 触发DiskPressure。 1fallocate -l 72G ./large.file 等待节点的DiskPressure...
bpftrace 使用tracepoint 追踪 tcp 状态变化
入门教程大佬的博客, 入门教程: http://arthurchiao.art/blog/bpf-advanced-notes-1-zh/ 记录基础的bpftrace使用方法单行程序的使用方法 1[root@localhost-live ~]# bpftrace -e 'tracepoint:syscalls:sys_enter_execve { printf("%s %s\n", comm, str(args->filename));}' Tracepoint如何获取可用参数的解释1234567891011121314151617181920[root@localhost-live sys_enter_execve]# pwd/sys/kernel/tracing/events/syscalls/sys_enter_execve[root@localhost-live sys_enter_execve]# grep -ri .format:name: sys_enter_execveformat:ID: 742...

