内存不足 Redis 获取数据出错引发的雪崩分析

异常回顾

28 日凌晨机器警报拉响,某 Redis 服务出现“MISCONF Redis is configured to save RDB snapshots……”,接着活动服开始连续崩溃,大概十分钟之后,活动服正常拉起。

经过分析,发现机器由于内存不足,Redis 服务无法正常 dump,导致写入失败引发的连环错误。但是看服务的日志时,我们发现一些特别诡异的问题,从 Redis 中获取出来的数据数据格式和请求的根本的不匹配。熟悉 C++ 的小伙伴深知,这大概率是内存出错了。但是仔细看了看,毫无头绪,主要由于服务使用的是单线程的模型,请求数据时,返回的数据格式就是错误的

HSET 的时候,还会调用 EXPIRE 设置过期时间,调用了两次 redisAppendCommand但却只调用了一次 redisGetReply 命令,也即只获取了 hset 的返回,但是并未获取 expire 的返回这会导致后续的命令再调用 redisGetReply 时获取到是 expire 的返回,后续的命令就会连续错位。

[Read More]
Redis  Code 

2021 年度总结

二宝出生

奥利奥于 2021 年 5 月 28 日出生,农历四月十七,跟我农历生日月和日都差了一。

鉴于生老大时媳妇对顺产的心理阴影,我们思考再三选择了剖腹产,宝宝距离预产期十天来到我们和身边。

第四医院虽然体验极其糟糕,但好在宝宝出生第四天我们就到了月子中心,这感觉简直是天差地别,同样的空间医院竟然能住六个产妇,简直难道想象。**在此我强烈建议,如果想要大人恢复的比较好,一定不要在家做月子。**根据自己的经济条件,能在月子中心多待几天是几天。

老大一到三岁,我陪伴的时间太少了,二宝我是几乎天天看着他长大的,真心体会到当妈妈的辛苦。出生时七斤三两,已经被媳妇奶成了二十二斤的大胖小子了。

二宝在年底最后的几天开始不停地喊”爸~爸,耙,爸爸“。

总之**陪伴孩子成长的过程是一个不停学习,不停治愈自己的过程,孩子真的是来教育大人的。**还没有准备要宝宝的小伙伴们,可以准备啦。陪孩子一起学习成长的感觉其实是非常不错的。

[Read More]

我的 Go 语言学习之路

以下内容是我在 Tony Bai · Go 语言第一课的分享用户故事|罗杰:我的Go语言学习之路
你好,我是罗杰,目前在一家游戏公司担任后端开发主程。今天,我想跟你分享一下我学习Go的一些经历,如果你还是一个Go新人,希望我的这些经历,能给你带来一些启发和帮助。

说起来,我接触Go语言已经很久了,但前面好多次都没真正学起来。

我第一次接触 Go 语言是在 2010 年,当时我还在读大二,一个学长建议我了解一下 Go 语言,毕竟是谷歌出的一门语言,可能未来比较有发展前景。所以我当时下载并安装了Go的开发环境,还写了个 “hello world”,但是由于没有中文的教程,也没有人一起学习,学习 Go 语言这件事情很快就被我抛在脑后了。

[Read More]
Go 

改变从学习开始

以下内容是我在 陈天 · Rust 编程第一课的分享用户故事|绝望之谷:罗杰,改变从学习开始

你好,我是罗杰,目前在一家游戏公司担任后端开发主程。

到现在我也快工作十年了,作为一个从小学习能力很一般的人,这中间的打怪升级史可以说是相当惨痛。

我是13 年毕业的,在师范类院校学的软件工程专业。大四参加校招,历时三个月不断面试、笔试,勉强找到一份工作,做棋牌游戏后端开发,签到了深圳。这份工作实习不到半个月,我就开始失眠,因为在学校里从来没有深入学习,专业知识非常欠缺,代码几乎看不懂,当时也没有太多可以寻求帮助的途径,进入不了工作状态,非常痛苦。

[Read More]

Rust 超快安装方法

由于 Rust 安装需要从 github 下载资源,直接安装,速度会非常感人,而且安装到一半还可能会失败,即使使用源码也会面临相同的情况。

感谢中科大,Respect!!!

以下是简单的解决方法:

export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh

几乎不出一分钟,就安装成功了。

安装成功,执行个 cargo install ripgrep ,依然让人非常无语。

此时只需要添加 ~/.cargo/config 文件

文件内容如下:

[source.crates-io]                                                                                                                                                                                              
registry = "https://github.com/rust-lang/crates.io-index"

replace-with = 'tuna'
[source.tuna]
registry = "https://mirrors.tuna.tsinghua.edu.cn/git/crates.io-index.git"

这样能就能愉快的 cargo install/run/build 了。

注意:ustc 的源已经不能正常使用了,tuna 速度还是不错的

Rust 

除 0 真的会 panic 吗?

某天,小伙伴反馈说程序 panic 在一个比较诡异的地方,差不多是下面的代码。

type Point struct {
		X float32
		Y float32
}

func Get(p Point) {
		// import github.com/shopspring/decimal
		x, _ := decimal.NewFromFloat32(p.X).Round(7).Float64()
}
[Read More]
Go  Rust  C  C++  Python 

如何删除 MySQL 表中 2.5 亿条数据?

为什么会有 2.5 亿条数据

运营需求,需要提供查询用户登录的记录。

我一思索,这简单呀,就设计了如下的数据表。

desc login_record;
+-------------+------------------+------+-----+-------------------+-------+
| Field       | Type             | Null | Key | Default           | Extra |
+-------------+------------------+------+-----+-------------------+-------+
| user_id     | int(10) unsigned | NO   | MUL | NULL              |       |
| ip          | varchar(40)      | YES  |     |                   |       |
| device_mark | varchar(500)     | NO   |     |                   |       |
| time        | timestamp        | NO   | MUL | CURRENT_TIMESTAMP |       |
+-------------+------------------+------+-----+-------------------+-------+
[Read More]
MySQL  Go 

Filco Minila Air 使用体验

今年 6 月,公司喊了两年的搬家终于看起来要搬了,而且我的 IKBC C87 服役超过三个年头了,我想是时候换个新键盘了,毕竟已经相当用了三年零三个月了。

[Read More]

AWS re-invent 12-23

巅峰科技 重塑未来

这次举办的比上一次参加的 10 月 23 的能好一些,人也多一些。不过总体的感觉就是每次都是新产品推销会议。但是对于我们小公司而言,了解趋势有帮助。不然一直用着那些古老的技术也不太合适。

2020 主题分享

算是对于 re:invent 发布的内容的总体概览,讲解者的职位最高,也是最能将东西讲解的最清楚的。

自 2006 年发布 S3,AWS 已经持续创新 15 年。

2019,在拉斯维加斯举办的线上有高达 6.7 万的参会者,而且门票将近 1.8K 美金。

2020 年因为疫情的原因,在线上举行超过 3 周,有超过 50w 的注意用户观看。现在线上的版本已经有了中文版本,对于有需要的可以点击链接去观看了。

AWS 云市场的份额高达 45 %。

目前云计算本地部署高达 96%,而云上部署只有 4%,这个数字让我特别震惊。

[Read More]

aws secrity day 10 月 23 日笔记

Security Day

责任共担 的安全模型

AWS 的安全责任:计算,存储,数据库和网络以及 全球基础设施

  • 安全可视化和安全可控
  • 服务之间高度集成,达到自动化布署 Macie 。。
  • 建立隐私数据保护
  • 丰富的使用场景
[Read More]