Redis实操记录

redis架构 目的: 针对不同的业务特性,选择合适的架构. 单机模式 一台redis节点,适合本地使用. 若机器挂了则无解. 主从模式 一台写节点,多台从节点,适合多读少写场景. 若写压力上来,则无解. 哨兵模式 写节点自动转移,满足高可用.适合多读少写场景. 若写压力上来,则有瓶颈.写节点挂了会转移,写节点会故障一段时间. 若不彻底解决写压力,无法根治问题. 集群模式 属于分布式架构,可以堆机器解决写压力. redis连接数 目的: 提高应用性能,避免频繁的创建和销毁连接. 使用redis连接池. 需要埋点redis连接池的命中率. 若空闲连接持续为空,则明显连接数不够用需要提升. 根据业务压测,确定redis连接数的合理范围. 关闭连接 当应用关闭时,记得close连接. redis缓存策略 获取redis缓存策略 config get maxmemory-policy 默认是noeviction LRU与LFU算法 Least Recently Used :最近最少使用 Least Frequently Used : 最近最不常用 阿里云的redis策略是选择volatile-lru redis.conf maxmemory-policy volatile-lru 查询redis的热点key lfu算法下可使用redis-cli --hotkeys,查询redis的热点key. 线上排查 查找大key redis-cli --bigkeys 设置慢日志 # 慢日志长度 CONFIG GET slowlog-max-len # 设置 慢日志长度 CONFIG SET slowlog-max-len 128 设置慢日志时间 # 单位时间为微妙 CONFIG SET slowlog-log-slower-than 10000 获取慢日志

Go metrics

导入包 go get -u github.com/go-kratos/kratos/contrib/metrics/prometheus/v2 注册路由 // 导入pkg import "github.com/prometheus/client_golang/prometheus/promhttp" // http 服务注册此路由 router.Handle("/metrics", promhttp.Handler()) 验证是否引入metrics curl /metrics 可以看到默认的数据 定义一个指标 var _metricRequests = prometheus.NewCounterVec(prometheus.CounterOpts{ Namespace: "server", Subsystem: "requests", Name: "code_total", Help: "The total number of processed requests", }, []string{"kind", "operation", "code", "reason"}) 注册该指标 import "github.com/prometheus/client_golang/prometheus" prometheus.MustRegister(_metricRequests) 使用指标 var requests = prom.NewCounter(_metricRequests) requests.With("get", "/", "200", "OK").Inc() 验证定义指标是否生效 当我们使用完指标后 即可查看 # HELP server_requests_code_total The total number of processed requests # TYPE server_requests_code_total counter server_requests_code_total{code="200",kind="get",operation="/",reason="OK"} 1 具体代码 https://github.

小米解锁BL

这个办法是通过闲鱼APP上找人,利用UBL key解锁小米BL. 此方法需要消耗金钱,即购买UBL key的钱. 免费的方法为 https://github.com/MlgmXyysd/Xiaomi-HyperOS-BootLoader-Bypass ,但是无法解锁小米14之后的机型. 准备工作 下载客户端 https://xiaomikey.net/ window环境需要 下载驱动 https://xiaomiflashtool.com/ 让xiaomikey客户端识别出小米手机, 理论上xiaomikey软件里面包含了xiaomiflash 下载ADB https://developer.android.com/tools/releases/platform-tools 将路径追加尽系统path. adb devices 准备刷机 小米手机进入开发者模式 点击系统版本 连续点击5次 即可进入开发者模式 开发者模式下进行USB调试 要求 必须登录小米账号 必须插入sim卡 必须使用移动网络 在开发者模式下 打开允许USB调试. 电脑插入手机,手机选择信任电脑的连接. adb进入fastboot模式 # 查看设备 adb devices # 进入fastboot adb reboot bootloader 登录xiaomikey 打开软件,选择 unlock boot- ubl key. 点击 unlock bootloader 此时会读取fastboot模式下的小米手机信息. 此时会生成 UBL token. 将UBL token 兑换成 UBL key. 然后填入UBL key 点击apply ubl key 可解锁. 过程中确保网络能连接小米服务器. 若操作失败 如果点击unlock bootloader后遇到duplicate token的话

socks5 协议

资料 rfc1928 SOCKS Protocol Version 5 https://datatracker.ietf.org/doc/html/rfc1928 socks5目标: TCP 和 UDP 域中的客户端-服务器应用程序提供一个框架,以便方便、安全地使用网络防火墙的服务 字节序 0x01234567 在字节顺序中表现 Big-Endian 0x100: 0x01 0x101: 0x23 0x102: 0x45 0x103: 0x67 Little-Endian 0x100: 0x67 0x101: 0x45 0x102: 0x23 0x103: 0x01 rfc1929 Username/Password Authentication for SOCKS V5 https://datatracker.ietf.org/doc/html/rfc1929 过程 1.TCP连接 3次握手后,客户端 连接 服务端socks5端口1080 2.协商环节 2.1.客户端发送给服务端 X'05’ , X开头的数据都是十六进制 报文格式: +----+----------+----------+ |VER | NMETHODS | METHODS | +----+----------+----------+ | 1 | 1 | 1 to 255 | +----+----------+----------+ 字段解释:

显卡相关

显卡挑选 原文which gpu for deep learning by Tim Dettmers - 2023/01/30 对此摘抄了 显卡工作原理 与 显卡关键因素 算力产品 AutoDL 显卡工作原理 结论 许多人说GPU快是因为 matrix multiplication 矩阵乘法 和 convolution 卷积 高效,Tim Dettmers认为是memory bandwidth 内存带宽. 内存带宽优点 CPU是延迟优化的,而GPU是带宽优化的.类比CPU是法拉利,GPU是大卡车, 在从 随机 A点 运货到 随机 B点 过程中, CPU可以快速获取 RAM Random Access Memory 中的一些memory,而GPU则更慢(latency 延迟 要高得多), 但是CPU需要多次来回才能完成其工作,而GPU可以一次获取更多memory 内存. CPU擅长快速获取少量内存(5 3 7), 而GPU擅长获取大量内存(矩阵乘法:(A*B)*C). 最好的CPU有大约 50GB/s,而最好的GPU有 750GB/s 的内存带宽. 如果计算操作需要的内存越多,GPU相对于CPU的优势就越明显.但是仍然存在可能会损害GPU性能的延迟. 一辆大卡车每次旅行可能都能拿起很多包裹,但问题是你要等很长时间,直到下一组包裹到达. 如果不解决这个问题,即使对于大量数据,GPU 也会非常慢.那么这个问题是如何解决的呢? 线程并行 如果你要求一辆大卡车进行多次旅行来取包裹,一旦卡车离开进行下一次旅行,你总是会等待很长时间才能收到下一批包裹——卡车只是很慢. 但是,如果您现在使用由法拉利和大型卡车组成的车队(线程并行),并且你有很多包裹(大块内存如 matrix 矩阵)的工作,那么你将等待第一辆卡车, 但在那之后你将根本没有等待时间 — 卸载包裹需要花费大量时间,以至于所有卡车都将在卸载位置B排队,以便你始终可以直接访问你的包裹(memory). 这有效地隐藏了延迟,以便GPU提供高带宽,同时在线程并行性下隐藏其延迟 — 因此对于大块内存,GPU提供最佳的内存带宽, 同时几乎没有由于线程并行延迟而导致的缺点.

llama2模型 类chatGPT产品体验

简介 一个语言模型,类似chatGPT. 可以本地部署, 下面列下规格 7b 需要6~8GB显存 13b 需要13~16GB显存 70b 需要48GB显存,可以2张4090 安装 申请和下载模型 点击 https://huggingface.co/meta-llama 选择模型 Llama2-chat,13B 下载 将会跳转到Facebook公司的申请界面,勾选协议,提交申请 平替方案 如果觉得麻烦 下载这个GGML模型 https://huggingface.co/TheBloke/Firefly-Llama2-13B-v1.2-GGML firefly-llama2-13b-v1.2.ggmlv3.q6_K.bin 文件链接 https://huggingface.co/TheBloke/Firefly-Llama2-13B-v1.2-GGML/blob/main/firefly-llama2-13b-v1.2.ggmlv3.q6_K.bin python虚拟环境 # 创建python虚拟环境 python -m venv ./venv # 进行python虚拟环境 ./venv/Script/activate 安装pytorch with cuda # https://pytorch.org/get-started/locally/ pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 安装ui # 安装ui git clone https://github.com/oobabooga/text-generation-webui.git # 进入ui目录 cd text-generation-webui # 安装ui依赖 pip install -r requirements.txt # 修复bitsandbytes bug pip uninstall bitsandbytes pip install bitsandbytes-windows # 启动UI python server.