Nginx Performance Test
写在最前面, 这个问题还在研究中, 我目前还没有合适的模型用来研究这个问题, Pending…. Nginx 性能测试与压力计算使用al2023 + 默认的yum仓库软件版本, 具体信息记录如下: 按照下面的配置, 在Nginx上面发布一个目录, 其中放了一个Fedora镜像, 大小大约2.3GB, 固定Nginx处理请求的大小, 控制大部分的因素来尝试获取精确的结果。 OS Version 12345678910111213[root@ip-172-31-53-146 ~]# cat /etc/os-releaseNAME="Amazon Linux"VERSION="2023"ID="amzn"ID_LIKE="fedora"VERSION_ID="2023"PLATFORM_ID="platform:al2023"PRETTY_NAME="Amazon Linux 2023"ANSI_COLOR="0;33"C...
OOM行为
关于OOM行为的思考 以及Kswapd的动作和行为。http://evertrain.blogspot.com/2018/04/oom.html更详细的打分算法见源码 https://github.com/torvalds/linux/blob/master/mm/oom_kill.c 发生之后OOM killer会将kill的信息记录到系统日志/var/log/messages,检索相关信息就能匹配到是否触发。 1grep 'Out of memory' /var/log/messages 也可以通过dmesg 1dmesg -Tx | egrep -i 'killed process' 查看分数最高的进程1234567#!/bin/bashfor proc in $(find /proc -maxdepth 1 -regex '/proc/[0-9]+'); do printf "%2d %5d %s\n" \ "$(cat $pro...
Perf 命令的Performance分析
https://blog.gmem.cc/perf 一个非常详细的博客, 太强啦。 使用perf进行性能的简单输出12345678910111213141516root@ip-172-31-11-235:~|⇒ perf stat htop -d 1 Performance counter stats for 'htop -d 1': 181.764747 task-clock (msec) # 0.055 CPUs utilized 52 context-switches # 0.286 K/sec 0 cpu-migrations # 0.000 K/sec 320 page-faults # 0.002 M/sec <not supported> cycles <no...
sysctl 参数笔记
一些关于sysctl参数设置的收集和解释。 /etc/sysctl.d/00-defaults.confkernel.printk输出内核日志信息的级别。 12345678# 映射到的proc文件系统位置 - /proc/sys/kernel/printk# Maximize console logging level for kernel printk messageskernel.printk = 8 4 1 7# (1) 控制台日志级别:优先级高于该值的消息将被打印至控制台。# (2) 缺省的消息日志级别:将用该值来打印没有优先级的消息。# (3) 最低的控制台日志级别:控制台日志级别可能被设置的最小值。# (4) 缺省的控制台:控制台日志级别的缺省值。 内核中共提供了八种不同的日志级别,在 linux/kernel.h 中有相应的宏对应。 12345678#define KERN_EMERG "<0>" /* systemis unusable */#define KERN_ALERT &qu...
Fio 命令说明
FIO (Flexible I/O Tester) 是一款功能强大的磁盘性能测试工具,可用于对存储系统进行各种测试和评估。 Github地址 https://github.com/axboe/fio https://tobert.github.io/post/2014-04-17-fio-output-explained.html http://xiaqunfeng.cc/2017/07/12/fio-test-ceph/ https://fio.readthedocs.io/en/latest/fio_doc.html http://linuxperf.com/?p=156 使用说明1234567891011121314151617181920212223242526272829# fio test file defination# ini file format ; -- start job file --[global]size=1G # 设置测试文件的大小runtime=30 # 设定运行时间, 如果运行时间之内已经完成了文件大小的写入则会保持文件大...
btrfs 笔记
学习btrfs文件系统笔记. btrfs 管理模式和标准的文件系统不同。 btrfs 的顶级卷可以理解为 存储池, 跨越多个设备添加所有的空间到顶级卷。在顶级卷中可以直接创建目录结构进行使用, 但是并不推荐。推荐的方式是在顶级卷下面创建子卷, 然后挂载子卷使用, 这样可以最大程度的发挥 btrfs 文件系统的高级特性。子卷可以和标准目录使用 ls 命令输出没有任何差异, 为了在更好的区分 子卷 还是 普通目录, 在创建子卷的时候使用 @VOLUME_NAME 的格式进行创建。 ^3e41e6 例如: 123456/mnt/btrfs/ <-- 这一层还是 xfs 文件系统的范围,下面的三个目录都是手动创建的挂载点|-- docker_data <-- 在这里挂载 @docker_data|-- harbor_data <-- 在这里挂载 @harbor_data`-- root <-- 在这里挂载 btrfs top volume, subvolume=/ |-- @docker_data <-- 在这里创建 btrfs subvo...
Shell脚本处理目录或者文件名中的空格
问题:问题是: 罗列指定的目录下面的文件, 符合要求的文件保留, 未匹配的删除。 解决:简单的Bash脚本, 使用ls拿文件名, 使用For + IF判断即可。但是文件的目录中有的文件名是带有空格的, 而Shell 使用空格做分隔符,因此无法正确的处理完整的文件名。解决方案有特别多, 只记录一个我最后使用的方案:使用IFS变量来定义Shell 的默认分隔符, 将空格替换成\n\b. 1234567891011121314151617181920#!/bin/bash#SAVEIFS=$IFSIFS=$(echo -en "\n\b")for number in {1..10}do mkdir -pv "dir $number"donetreeFILE=`ls`for i in $FILE;do echo "The DirName: $i"doneIFS=$SAVEIFS 这样就可以拿到名称为dir 1的完整目录名字了,否则会默认吧空格分割的文件名称作为两个目录提取。 123456789101...
Linux中一些常见的性能分析命令
记录性能分析的思路。 最近的这个半年越来越好奇的事情是, 为什么命令会卡住,为什么命令会执行不下去,为什么命令会等待,等等等等。 那么这些问题, 有的是可以有答案的, 目前也不知道的。 已经大概掌握的几个不同的方法以及观测的工具, 大概做一个记录。 Strace命令Strace 命令的常见用法strace命令是用来追踪系统调用的,常见的可以追踪的系统调用需要阅读内核部分的代码。 但是常见的系统调用就是集中, read() , write() , ioctl(), futex() , mmap()大部分的时候 我们都是可以观测到卡住的部分的 , 这种追踪我认为常见的使用场景就是命令卡住了, 或者执行中的程序卡住了。 命令卡住的分析对于命令卡住的情况, 可以使用类似于如下的命令: 1strace -f -ttt -s 512 echo "123" 这样的话, 在执行的过程中就可以查看相关的内容,比如常见的卡在了系统调用的某个函数上, 这个可以用来定位,命令打开了那些文件,申请的那些内存地址,打开了什么文件,关闭Socket等等等等。目前我的办法的通过对比这个...
Kubernetes day2
对于etcd的操作和备份 Etcd的操作 - EtcdctlEtcd的规划 最好用 固态盘, Pod数量比较多的情况下会非常非常慢, 内存要大. 类似于redis 或者 Zookeeper, KV的存储. 支持watch机制,可以通知给node节点的数据变化. etcd consul zookeeper 的区别 名称 优点 缺点 接口 一致性算法 zookeeper 1.功能强大,不仅仅只是服务发现2.提供watcher机制能实时获取服务提供者的状态3.dubbo等框架支持 1.没有健康检查2.需在服务中集成sdk,复杂度高3.不支持多数据中心 sdk Paxos consul 1.简单易用,不需要集成sdk2.自带健康检查3.支持多数据中心4.提供web管理界面 1.不能实时获取服务信息的变化通知 http/dns Raft etcd 1.简单易用,不需要集成sdk2.可配置性强 1.没有健康检查2.需配合第三方工具一起完成服务发现3.不支持多数据中心 http Raft Etcdctl 的命令 查看etcd的成员清单 1]...
Harbor Http 安装部署
Harbor的部署记录。 Harbor Info Harbor 项目地址 Harbor HTTP部署因为是临时使用, 所以直接给了HTTP的权限, 为的是不走公网部署 CEPH Cluster, CEPH在BootStrap之后会默认去公网的镜像仓库尝试Pull镜像并且校验镜像和服务,所以给一个私有的仓库, 直接去找私有仓库就免了公网访问卡集群的正常启动的步骤。 下载解压123~]$ wget https://github.com/goharbor/harbor/releases/download/v2.3.2/harbor-offline-installer-v2.3.2.tgz~]$ mv harbor-offline-installer-v2.3.2.tgz /opt ~]$ tar zxvf /opt/harbor-offline-installer-v2.3.2.tgz 复制修改配置文件1~]$ cp /opt/harbor/harbor.yml.tmpl /opt/harbor/harbor.yml 配置默认的存储位置123# 注释掉https的部分,如果需要...

