insight

致力于分享有关软件开发和技术创新的见解和经验。

开启了http2,但是http2_max_field_size 还在用默认值吗?

开启了http2,但是http2_max_field_size 还在用默认值吗?

排查1个异常接口,学到一个降本和接口提速的新思路。另外找到1个charles的"bug" 现象 测试同学反馈在iOS13设备上请求接口报错,将请求复制为 curl 命令。分别导入 apifox 和 在终端执行: * 在 apifox 请求正常 ✅ * 在终端请求失败 ❌ curl: (56) Failure when receiving data from the peer 测试同学又反馈另一个手机支持请求接口返回正常。 定位 有了正常和错误的请求curl,那直接对比二者差异就很简单了。对比发现,在终端执行失败的请求中多了一个较大的Cookie: app_token。按历史经验基本能确定是因为 Cookie 这个 header 条目太大,超过服务器的限制。 找云平台确定相关配置: ELB http1: header头限制 128KB,body 限制一个10G http2:

· K8S

Minikube 操作开启 ipvs

1. 编辑 kube-proxy 配置 编辑 kube-proxy 配置以启用 ipvs 模式。您可以使用以下命令编辑配置: kubectl edit configmap kube-proxy -n kube-system 在配置中,找到 mode 字段并将其设置为 ipvs。例如: apiVersion: v1 kind: ConfigMap metadata: name: kube-proxy namespace: kube-system data: mode: "ipvs" 保存并关闭配置。 2. 重新启动 kube-proxy 重新启动 kube-proxy 以应用新配置: kubectl rollout restart daemonset kube-proxy -n kube-system

· K8S

在 Minikube 中直接上手学习 K8S Service

K8S 为什么需要 Service? 1. Pod 的 IP 不是固定的; 2. 一组 Pod 实例之间有负载均衡的需求; 上机操作 以下使用 minikube 作实例: # 安装 brew install minikube # 启动 minikube start # 创建 ~/.kube/config 请注意先备份 minikube update-context # 进入宿主机 minikube ssh 集群启动后,创建 Deployment 和 Service apiVersion: v1 kind: Service metadata: namespace: default name: nginx-svc spec: type: NodePort selector:

Docker 入门
· Docker

Docker 入门

1 docker 是什么,解决什么问题? * docker 将要程序和环境一起打包成一个镜像,可保证环境一致性。 * docker 容器启动速度非常快,快速部署和扩容。 * 每个镜像有独立的版本,可以用于快速回滚。 还有依赖管理、资源隔离、可移植性等特点。 2 镜像 2.1 基础镜像是什么? docker 是由多层(layers)组成的,每一层代表镜像的一次变化,这些层叠加在一起,形成一个完整的文件系统。基础镜像是构建容器镜像的起点。可以在其上安装和配置应用及依赖项,就是叠加层。 基础镜像有: alpine (https://hub.docker.com/_/alpine) busybox(https://hub.docker.com/_/busybox) 2.2 Dockerfile 有了基础镜像还不够,还需要安装必要的依赖。我们公司选择的基础镜像是 alpine

Git hook 开发和实践,提升自动化效率
· Git, tools, Posts

Git hook 开发和实践,提升自动化效率

我们使用 git 进行版本控制,期间会触发很多事件,这些利用好这些事件做好自动化,能帮我提升效率。git hook 就是一个这样的工具,在特定的事件中执行特定的钩子。 ╰─➤ ls .git/hooks applypatch-msg.sample post-update.sample pre-merge-commit.sample pre-receive.sample update.sample commit-msg.sample pre-applypatch.sample pre-push.sample prepare-commit-msg.sample fsmonitor-watchman.sample pre-commit.sample pre-rebase.sample push-to-checkout.sample 设置钩子路径 git 仓库的钩子存放路径由 core.hooksPath 控制,默认是在项目的 .git/hooks。它不能使用版本控制

· Docker

MacOS 安装了最新版 Docker,命令行找不到了?

它藏在 /Applications/Docker.app 中,可以使用 find 命令查看: $cd /Applications/Docker.app $find . -name "docker" ./Contents/Resources/bin/docker 将 bin 目录拼接到 PATH 环境变量即可,一般可以追加到 ~/.bashrc ~/.zshrc 中。 export PATH=/Applications/Docker.app/Contents/Resources/bin:$PATH source ~/.zshrc 使环境变量生效,执行 docker 检查版本 $ source ~/.zshrc $ docker --version Docker

飞书集成平台 x Grafana:打造监控告警系统全攻略
· Posts

飞书集成平台 x Grafana:打造监控告警系统全攻略

Grafana告警内容设置 告警内容分为:告警标题、告警说明、告警详情。告警标题和告警说明用来描述告警的规则。告警详情,描述告警的规则和具体的值。 告警详情 Description 设置 1. 打印所有的标签 {{ $labels }} alertname=High CPU usage, grafana_folder=CPU alerts, instance=server1 2. 自定义格式化打印所有的标签 {{ range $k, $v := $labels -}} {{ $k }}={{ $v }} {{ end }} alertname=High CPU usage grafana_folder=CPU alerts instance=server1 3. 打印单个标签 The host {{ index $labels

· Go

Go 远程调试

哪些场景可以用到远程调试? * Apple M1 M2 M3 不支持go 1.14 之前的版本 * Golang 部分依赖不支持 window 这两个场景推荐使用 Docker。 Debugging a Go application inside a Docker container | The GoLand BlogUpdated and validated on November 17, 2022. You can find more tutorials on how to use containers here. You may also refer to the Docker and

· tools

Git 授权

常规的 git 授权有2种方法,ssh 协议对应的 ssh-key 和 https 协议的用户名密码验证。 git over ssh 我们使用 ssh-keygen 生成公私钥,输入 ssh-keygen 一路回车,ls -alth ~/.ssh 可以看到生成2个文件 id_rsa、id_rsa.pub 也就是密钥和公钥。 $ ssh-keygen ... $ ls -alth ~/.ssh -rw-------@ 1 brian staff 2.6K Jun 15 2020 id_rsa -rw-r--r--@ 1 brian staff 584B Jun 15