聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

  • 320 views阅读

    遭遇lj_str_new

    话说前几天我刚通过 mlcache 优化了热数据的问题,屁股还没坐热乎呢,就发现系统性能又下降了,本着自己挖的坑含泪也要填上的原则,我再一次开始了性能调优之旅。 对某个 nginx 进程执行 perf top 毫无疑问,从 perf top 结果来看,lj...

    分类:技术文章 时间:2020-09-15 22:16 我要评论(0个)

  • 376 views阅读

    记一次性能调优

    面对性能调优问题,很多人往往只是单纯的套用既往的经验:先试试一个,不行再试试另一个。面对简单的问题,如此通常能事半功倍;但是当面对复杂问题的时候,单凭经验往往并不能达到立竿见影的效果,此时我们需要更精准的判断性能短板在哪里。 一个 openresty 项...

    分类:技术文章 时间:2020-09-12 18:01 我要评论(0个)

  • 728 views阅读

    我的Golang热重载工具Air不好使了

    我使用 VSCode Remote-Containters 作为 golang 开发环境,因为生产环境使用的镜像主要是 alpine,所以开发环境自然而然使用了 golang:alpine,对应 Dockerfile 的内容如下: FROM golang:...

    分类:技术文章 时间:2020-08-23 21:19 我要评论(0个)

  • 607 views阅读

    手把手教你用ETCD

    一句话概括的话:ETCD 是一个基于 RAFT 的分布式 KV 存储系统。一个 ETCD 集群通常是由 3、5、7 之类奇数个节点组成的,为什么不选择偶数个节点?在集群系统中为了选出 LEADER 节点,至少要有半数以上的节点达成共识,举例说明: 当集群...

    分类:技术文章 时间:2020-08-19 19:26 我要评论(0个)

  • 465 views阅读

    记录Viper加载远程配置填坑过程

    关于 viper,无须多言,它是 Golang 社区里最流行的配置文件工具,除了常见功能之外,它还支持很多高级功能,比如可以加载远程配置,正好我最近在研究 etcd,于是我打算把二者结合起来,没想到就此开启了填坑之旅。 按照文档上的介绍,只需启动一个 g...

    分类:技术文章 时间:2020-08-10 19:03 我要评论(0个)

  • 644 views阅读

    Golang代码修改后自动重启

    写 Golang 项目有两件很烦的事情:一件是错误处理时连绵不绝的「if err != nil」,另一件是作为编译型语言,代码修改后不能实时看到效果, 借助一些工具可以实现文件修改后自动编译重启,比如: Linux 环境:inotify-tools(G...

    分类:技术文章 时间:2020-07-31 19:56 我要评论(0个)

  • 770 views阅读

    白话布隆过滤器

    日常开发中,一个常见需求是判断一个元素是否在一个集合中。比如当你在浏览器中输入一个网址的时候,浏览器会判断网址是否在黑名单里。通常的解决方案是直接查询数据库,看看是否存在相关的记录,不过这往往会比较慢,于是我们又会引入缓存来提升速度,可是当数据比较多的时候...

    分类:技术文章 时间:2020-06-22 14:17 我要评论(0个)

  • 1184 views阅读

    记一次有惊无险的丢包调试经历

    某个项目把服务器从 CentOS 操作系统从 5 升级到了 7(3.10.0-693),一切都很顺利,直到我在服务器上闲逛的时候,无意间发现了一个「大问题」:网卡 eth0 在 RX 上存在丢包(dropped)现象,丢得还很有规律,每一两秒丢一个包! w...

    分类:技术文章 时间:2020-05-04 01:37 我要评论(0个)

  • 996 views阅读

    记一次Redis连接池问题引发的RST

    某个项目,因为监控尚不完善,所以我时常会人肉查查状态,终于有一天发现了异常: watch -d -n1 ‘netstat -s | grep reset’ 如图所示,服务器发送了大量的 reset,在我 watch 的时候还在发,多...

    分类:技术文章 时间:2020-05-04 01:37 我要评论(0个)

  • 1552 views阅读

    关于OpenResty里的ngx.on_abort

    关于 OpenResty 里的 ngx.on_abort,官方文档里是这样说明的: Registers a user Lua function as the callback which gets called automatically when the...

    分类:技术文章 时间:2020-04-13 14:35 我要评论(0个)

  • 1295 views阅读

    如何在OpenResty里实现代码热更新

    所谓「代码热更新」,是指代码发生变化后,不用 reload 进程就能生效。当然,通过关闭 lua_code_cache 可以实现此目标,但那样的话性能无疑将大打折扣!实际上因为所有的 require 操作都是通过 package.loaded 来加载模块的...

    分类:技术文章 时间:2020-03-25 16:37 我要评论(0个)

  • 1458 views阅读

    手把手教你用OpenResty里的FFI

    了解 OpenResty 的人应该知道,OpenResty 原本的 API 都是基于 C 实现的,不过在新版里都已经改成了基于 FFI 实现的,为什么这么做?因为 FFI 在效率上更有优势,除此以外,FFI 还有一个优点是可以很便利的和 C 交互,我们不妨...

    分类:技术文章 时间:2020-03-08 22:50 我要评论(0个)