mysql task_log.ibd 文件占用大量磁盘空间引发的血案

早起访问 gitvim.com , logo出来了,但是首页内容一直是空白的,F12 打开看加载完了,但是我这网站怎么挂啦?没有一丁点页面文字? 快速排查日志, 先查 nginx 日志 tail -f /var/log/nginx/error.log 发现 Nginx 错误日志是空的,这说明业务服务器没有问题。但是在这里敲命令的过程中,发现 tab 键失效了,一直弹出来 [root@api nginx]# less ac-bash: cannot create temp file for here-document: No space left on device 一开始我没太在意,以为是自己的键盘快捷键重合导致的。然后继续排查 Nginx 访问日志。 [root@api nginx]# less ac-bash: cannot create temp file for here-document: No space left on device tail -f /var/log/nginx/access.log 一看,也是空的。也没啥毛病。我就纳闷了,难道是 PHP …

mysql task_log.ibd 文件占用大量磁盘空间引发的血案 Read More »

golang echo framework 跨域

浏览器 跨域 问题在互联网中似乎是非常普遍的问题,但是我是最近才遇到需要自己亲自解决这种场景。先说结论:可以在 Nginx 层或者后端服务中间件层针对 Options 的 Http Method 进行设置,可以解决掉这个问题。我这边是通过 Nginx 层和 Golang echo 框架两个地方合力解决的,同时和云服务器的负载均衡也有一个很关键的关联。从实际出发,将遇到的问题做一个小结,归纳 细说从头,最近开发一个文件上传的服务,大批量的商品文件信息需要从客户端上传到我们后端系统中。但是我们业务系统带宽和磁盘空间不太够,所以购买了阿里云 OSS 服务,要将文件上传到 OSS 中。仅将部分文件信息如文件名,访问地址链接,文件类型,上传记录等信息保存在我们业务系统中。 去听了需求设计方案,说是要用直接上传的方案。我研究了一下有两套常用的 Web 上传 OSS 方案。不过最后采用的是短平快的 A 方案,文章结尾还有一个最优的 B 方案。 一顿操作猛如虎,CURD 完了之后,单元测试一遍,集成测试也走一遍,在 Postman 上模拟了所有相关的接口请求,如预期所愿。Perfect!  程序员最大都欣慰就是:我的程序测试都过了,跑起来没问题。 接着就开始部署到测试环境联调。我还在高兴地转手去写几行 Rust 代码,然后联调到业务方同事就发来高能预警,说不能访问,请求文件上传的接口没有返回。要来 URL 地址和请求参数,我自己在本地重现。F12 查看网络请求,发起POST 请求之前,浏览器会多发一个Options 的请求。【 跨域 】 的幺蛾子问题就这样冒出来了。 Referrer Policy: strict-origin-when-cross-origin Access-Control-Allow-Origin … 我是 a.test.com 的域名,而发起文件上传的服务域名是 b.test.com。当 b.test.com …

golang echo framework 跨域 Read More »

秒杀场景 -我有一个想法

秒杀场景 思考理解(2021)   秒杀场景 即使看过无数遍相关的处理方法,还是会忘,因为没有真正实战过,总得抽时间总结一下这个场景的应对策略。那天就需要处理这块业务呢?以防一般的 bug 在那时顶风作案。秒杀场景通常发生在活动日, 节假日促销,”双十一”, 春运火车票抢购等. 此时, 一般是月黑风高, Bug 容易趁机做乱之时。秒杀开始之前,先来欣赏一段【亮剑】李云龙攻打县城的场景, 当时日方从四面八方往平安县城增援时, 丁伟所在的防区的阻击方式很是巧妙:   一开始没搞懂增援的敌人是干啥时, 丁伟的策略是: “一线部队放过敌人的骑兵, 全力阻击敌人的步兵, 二线部队务将敌人的骑兵拦截在二道河口”. 然后发现敌人不顾一切地要奔赴县城时,他明白了,这伙部队是下了死命令往县城奔啊!如果硬抗,肯定是伤亡惨重啊,但是又不能撤出部队,让敌军从防区里过去.亮点来了, 下了四道命令: 1. 发动地方武装和民兵, 沿公路线及公路两侧埋设地雷, 密度要大; 2. 派出小部队,占据公路沿线的隘口和制高点, 节节抗击.迟缓敌人的进攻锋芒; 3. 炸毁防区内所有的桥梁; 4. 前沿部队撤出阵地,让开路口,让敌人进来.采用麻雀战,袭扰敌人. “原则就只有一个,不惜一切代价,阻敌增援.” 这不就是活生生的秒杀现场吗!下单的人就是”日军”,不顾死活的都狂点狂刷剩下的库存, 提交表单, 奔赴”县城(数据库)”! 买!买!买!但是你说我网站能让你轻易从我”防区”过去么?那么怎么阻击经过我秒杀系统的场景"防区"呢?或者说怎么设计和优化我防区的阻击能力呢? 【秒杀场景】现场特点   1. 大量用户在同一时间发起进攻, 造成瞬时的高流量. 2. 访问量远远大于库存量. 3. 业务流程就是下单并减库存. 针对性的架构   秒杀页面->服务器站点->服务层->数据库层 秒杀页面 1. 静态化,在秒杀页面,就得将页面静态化, 除了必要的静态元素,其余的全部静态化,结合 CDN抵抗页面静态元素的访问. 2. …

秒杀场景 -我有一个想法 Read More »

awk linux command 命令是一把瑞士军刀

awk linux命令中的一把瑞士军刀 – awk 可以号称为Linux命令行工具的屠龙刀- 编程开发, 网络,移动互联网,云原生,微服务,K8s, Docker, Rust, Golang,做自由独立开发。独立开发过小程序,搭建网站,运维,熟悉Linux操作系统,现在正在做基于WooCommerce的跨境电商系统。

Emacs 漫步– org link

org-link emacs 内使用 Alt + X 调起 helm 界面。 helm 界面可以在输入模式下直接调起。不像vim。 输入org-link可以看到各种有关 org-mode 下 link 相关的操作。helm 非常友好,只要输入相关关键字的命令名称,就给列出来所有包含这个关键字的命令了。而且输入这些关键字查询的时候, 可以不分次序! org-mode 下的 link 是这样款式的 [[http://www.gnu.org/software/emacs/][GNU Emacs]], http://wowubuntu.com/markdown/, 大同小异。正常情况下 org-link 带有三个中括号,内部第一个中括号是链接地址,可以是文件路径,图片地址,http 超链接,第二个中括号是这个链接的描述,描述可以为空 如 [[http://www.gitvim.com]]。 列举几个常用的 link 操作: org-insert-link顾名思义, 添加一个带有链接和描述的超链接文案, 先输入 link, 然后是 description。 org-toggle-link-display可以切换 link 和 description 之间的显示, 方便修改描述和链接地址。 org-store-link用于…这个诡异 org-previous-link & org-next-link双胞胎, 前后跳转到链接的命令 官方也有相应的 org-link 使用方式 org-link小结 Emacs …

Emacs 漫步– org link Read More »