深入理解 Linux 文件上传 的工作机制
深入理解 Linux 文件上传 的工作机制 前几天同事跟我吐槽,说往测试服务器传个 800 多 MB 的日志包,传到一半就断了,页面报 413。我第一反应是去改 PHP 的 uploadmaxfilesize,改完没效果,又去翻 nginx 的配置,才发现 clientmaxbodysize 压根没设,这玩意儿默认只有 1M,白折腾了快一个钟头。趁着这次排查,干脆把一个文件从浏览器走到磁盘的完整链...
阅读更多深入理解 Linux 文件上传 的工作机制 前几天同事跟我吐槽,说往测试服务器传个 800 多 MB 的日志包,传到一半就断了,页面报 413。我第一反应是去改 PHP 的 uploadmaxfilesize,改完没效果,又去翻 nginx 的配置,才发现 clientmaxbodysize 压根没设,这玩意儿默认只有 1M,白折腾了快一个钟头。趁着这次排查,干脆把一个文件从浏览器走到磁盘的完整链...
阅读更多Go 语言 服务发现 实战:从原理到落地 问题是怎么来的 前段时间把一个 Go 单体服务拆成了三四个小服务,拆的时候觉得挺爽,结果一部署就遇到个尴尬事:订单服务要调用用户服务,地址写啥?写死在配置文件里,实例只有一个的时候还行,后来用户服务扩到了三个实例,机器还时不时迁移,每次变动都得去改一遍配置再重启,烦得要命。 一开始想偷懒用 nginx upstream 转一下,但加减节点还是要手动改配置 ...
阅读更多Git 工作流中的 熔断 最佳实践 上周五下午四点多,一个 merge 把主干的单测干红了,但因为走的是 merge queue 排队合并,等发现的时候后面已经叠了七八个 PR,谁也说不清是从哪一单开始坏的。最后俩人对着 CI 日志倒着翻了快一个小时才定位到,回滚完各回各家。事后复盘我就一直在想,服务治理里有熔断这玩意儿,Git 工作流里凭什么只能靠人吼?主干一旦确认坏了,应该先把合入通道掐了,止...
阅读更多正则表达式进阶:文件上传 匹配技巧
阅读更多配置中心:写给初学者的通俗
阅读更多用 Docker 搭建消息队列的完整流程 起因 前阵子手头有个小项目,A 服务生成任务,B 服务慢慢消化。一开始图省事直接 HTTP 互调,结果 B 那边一卡,A 跟着超时,重试逻辑写了一坨还是不痛快。索性上消息队列。本来打算直接在机器上装个 RabbitMQ,结果看了一眼安装文档,还得先装 Erlang,就这依赖关系,算了,还是别折腾宿主机了。 下面是实测可用的搭建方式,需要借助 docker,...
阅读更多从零实现一个简易的熔断
阅读更多Nginx 反向代理 幂等设计 配置详解 前阵子排查了一个挺恶心的问题:用户点了一次支付,结果后台生成了两笔扣款单,而且应用日志干干净净,根本找不到重复请求的痕迹。查了一整天才定位到,锅在 Nginx —— 某台机器的配置里不知道哪位前辈抄了一行 nonidempotent,上游超时之后,Nginx 把这笔 POST 原样又发给了备机。代理层一个不起眼的重试行为,直接把没做幂等保护的接口打穿了。 ...
阅读更多Nginx 反向代理 文件上传 配置详解 前两天给一个文件服务套了层 Nginx 反向代理,挂到公网域名下面,小文件传得好好的,同事一传几百 MB 的视频就开始报错,浏览器里就给个 413,后端日志里连请求的影子都没有。看了一眼 Nginx 的 error.log,一行 client intended to send too large body,得,又是 clientmaxbodysize 这玩...
阅读更多Kubernetes 日志采集 配置避坑指南 最近给集群上日志采集,本来以为写个 DaemonSet 跑个 Fluent Bit 就完事儿了,结果日志不是缺、就是乱、要么就是疯狂重复,前前后后折腾了快一个礼拜... 把踩过的坑都记在这了,配置全部实测能跑,直接抄就行,不谢。 先搞清楚运行时是啥,别拿 docker 的解析规则硬套 最开始在测试环境一切正常,因为测试集群跑的还是 docker,日志文...
阅读更多