BanFS
码龄7年
关注
提问 私信
  • 博客:276,102
    社区:4
    276,106
    总访问量
  • 85
    原创
  • 1,121,409
    排名
  • 194
    粉丝
  • 0
    铁粉

个人简介:欠的技术债,早晚要还

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:广东省
  • 加入CSDN时间: 2018-01-24
博客简介:

班门弄斧

博客描述:
欠的技术债,总是要还的。
查看详细资料
个人成就
  • 获得170次点赞
  • 内容获得69次评论
  • 获得288次收藏
  • 代码片获得188次分享
创作历程
  • 8篇
    2022年
  • 30篇
    2021年
  • 24篇
    2020年
  • 24篇
    2019年
成就勋章
TA的专栏
  • 后端开发基本功
    1篇
  • k8s
    8篇
  • Linux
    16篇
  • 性能优化
    2篇
  • golang
    8篇
  • python
    2篇
  • AI之路
    4篇
  • C++面试准备
  • 笔记
    9篇
  • 随笔
    7篇
  • skynet
    10篇
  • lua
    14篇
  • mysql
    2篇
  • redis
    13篇
兴趣领域 设置
  • 服务器
    linux
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

342人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

如何查看进程占用的内存

方法一top -P pid,其中RSS为进程当前使用的内存top - 22:18:50 up 163 days, 5:48, 64 users, load average: 0.88, 1.07, 1.45Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie%Cpu(s): 1.5 us, 0.9 sy, 0.0 ni, 97.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.3 st
原创
发布博客 2022.05.29 ·
8788 阅读 ·
0 点赞 ·
1 评论 ·
3 收藏

kubernetes cluster autoscale 不会删除nodes

项目上线后,通过kubectl top node,发现有的node上使用的资源非常少,kubectl describe node 发现完全可以驱逐。但是cluster aotuscaler缺没有驱逐。按照官方的说法检查了node上的pod,没发现有什么pod满足以上。gitlab runner原来装在kube-system namespace下,最后把node上的gitlab runner删除,node即可被驱逐,猜测gitlab runner可能满足了以下导致。...
原创
发布博客 2022.04.16 ·
485 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

perf对多线程Profile简单流程

背景知识Perf是用于软件性能分析的工具,通过Perf,应用程序可以利用PMU,tracepoint和内核中的特殊计数器进行性能统计。Perf不但可以分析应用程序的性能问题(per thread),也可以分析内核的性能问题,处理所有性能相关的事件:程序运行期间的硬件事件,如instructions retired ,processor clock cycles等;软件事件,如Page Fault和进程切换。Perf基本原理是对被监测对象进行采样,最简单的情形是根据tick中断进行采样,即在tick中断内
原创
发布博客 2022.02.13 ·
3779 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

redis cluster使用lua脚本的坑,非同一个slot也可以使用lua脚本

在项目中,需要用lua脚本操作redis cluster中的多个key,但是非同slot的时候会报错,例如下面test3、test6在同一个node,但是却不是同一个slot。redis使用lua脚本可以这样`redis-cli -a xxxxx--eval demo.lua key1 key2 , val1 val2`
原创
发布博客 2022.02.10 ·
4922 阅读 ·
4 点赞 ·
1 评论 ·
8 收藏

redis cluster 查看各个节点的slot

`redis-cli -p xxxx -c cluster nodes`
原创
发布博客 2022.02.10 ·
1985 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

如何在linux中通过linux源码安装最新的perf,使用perf data convert --force --to-json

perf可以针对进程进行profile,也可以对线程进行profile。再对进程profile之后,拿到perf.data,也可以修改为针对进程下的线程进行profile。所以照理来说应该是可以从perf.data中查看到有多少线程。这也符合我们的一般要求,即有perf.data之后,可以针对线程显示火焰图。经过查询资料发现,perf中有perf data convert --force --to-json temp.json可以把perf.data转成json进行查看,但是要新版本的perf才有…这就恨
原创
发布博客 2022.02.10 ·
1575 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

iptable为什么之后pod的probability越来越大

项目集群是使用k8s管理的,流量分发使用的是iptable,据压测反馈说负载不均衡,吓得老夫赶紧去查看,发现原来是压测同学搞错了。在查询的过程中,发现iptable规则之后的probability越来越大,记录一下原因。root@ip-10-1-34-89:/home/admin# iptables -t nat -nL...Chain KUBE-SVC-7XZINH2IMK6FHKPK (2 references)target prot opt source d
原创
发布博客 2022.02.10 ·
815 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

redis 怎么查询一个key有多大

在项目开发过程中,最好是能估计出自己开发的功能要使用多大的redis内存使用redis自带的方法debug object key127.0.0.1:6006> get testkey"this is a test"127.0.0.1:6006> debug object testkeyValue at:0x7f4f19e2b500 refcount:1 encoding:embstr serializedlength:15 lru:14327341 lru_seconds_idle:
原创
发布博客 2022.01.09 ·
9317 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

linux top显示CPU占用高,Steal高

top显示cpu高,steal高
原创
发布博客 2021.12.26 ·
1776 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

docker 启动 redis cluster,使用出现CLUSTERDOWN Hash slot not served(redis cluster重新分配slot)

背景就像上一篇所说,我使用了docker-componse启动了redis cluster集群。经过了一天的测试,本来测试已经完毕了,但是今天修改了点代码,再次测试的时候发现redis cluster起不来了。报错CLUSTERDOWN Hash slot not served。从这个错误提示,可以看出是slot分配原因造成的。上网找,真的蛋疼,你复制我,我复制你,最后还是得自己解决。查看详细banfushen@banfushen:~/redis-cluster$ redis-cli -p 16379
原创
发布博客 2021.12.07 ·
4050 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

linux使用docker + docker compose 本地搭建redis cluster集群

背景项目用到一个redis库,对于里面的集群相关功能要自己测试(就像《代码简洁之道》中说的,使用第三方库需要自己有测试用例,这样即使第三方库更新了,直接用原来的测试用例,也知道是否能兼容)。所以需要自己本地搭建redis集群测试。搭建是使用docker搭建的,一下需要启动很多个container,所以使用docker-compose作为容器编排我的环境已经有了,没有的自己下载直接上redis-cluster模式redis集群有三种模式:master+slave(主从)、sentinel(哨兵)、cl
原创
发布博客 2021.12.05 ·
2038 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

linux 磁盘IO满导致的宿主机卡机,pod失败(/kubepods/besteffort/pod4909103c-cdc)

背景开发机上装了minikube,起了一个docker镜像当minikube的宿主机,在启动了一定量的deployment A之后,deployment A就全挂了(启动1~2个deployment A,没有问题,启动到第三个,就全挂)。然后宿主机卡爆。查询pod挂的原因kubectl describe pod ... Exit Code: 137 Started: Wed, 29 Sep 2021 16:02:30 +0800 Finished:
原创
发布博客 2021.09.29 ·
25784 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

第一次服务器上限需要资源评估

本是小辣鸡。以前也只是写业务代码,全靠领导给机会让我自己负责一个服务器的编写,部署,上线需要的资源评估。记录第一次做上线资源评估的过程。项目背景是,搭在云服务商上的集群,集群管理是kubernetes。首次内测目标5000个用户。主要如下1.服务器需要多少内存2.服务器需要多少cpu3.了解购买的云服务参数4.修改kubernetes部署文件首先需要做压测,我写的服务器是用golang写的用于聊天服务器,所以在世界聊天的时候,压力就会非常大。压力也是要测试这里,看看需要消耗多少性能。服务器需
原创
发布博客 2021.08.05 ·
1197 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

Kubernetes nodes are not ready原因查看

今早收到了Prometheus的报警,4% of Kubernetes nodes are not ready。直接查看node情况即可知道原因。banfushen@pro:~/helm-chart/prometheus-netease/templates$ kubectl describe nodes ip-xx-x-xxx-xxx.ap-northeast-1.compute.internalName: ip-xx-x-xxx-xxx.ap-northeast-1.co
原创
发布博客 2021.07.24 ·
707 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

redis集群数据倾斜查询过程

项目上redis cluster数据产生了倾斜,项目是有3个节点,但第一个节点用了80%的内存,第二第三个节点基本没存数据。redis cluster存贮规律redis 集群有16384个槽,会先对要存贮的key进行hash,将得到的结果放到对应的槽。一般会对整个key进行hash,如果key中含有{},会对{}中的字符串进行哈希。先查看集群中是否是因为key的原因造成倾斜redis-cli -h xxx.xxx.xxx.xxx -p xxx -ckeys *{*}*查看之后发现,并不是因为{
原创
发布博客 2021.07.23 ·
508 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

golang非阻塞读写channel

服务器最近压测的时候发现了问题。发现是往channel写数据,但是channel满了,导致服务器部分功能阻塞。golang的channel读或写是会造成阻塞的,但是可以用select的多路复用解决这个问题。不阻塞读channel(也可以加上超时)func readChan(c chan int) (int, error) { select { case num := <-c: return num, nil default: return 0, errors.New("chan do
原创
发布博客 2021.07.23 ·
3455 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

linux 使用tcpdump抓包

最近更换了服务器的消息队列,客户端反馈说服务器有时候会多发消息下去,十分纳闷,只改了服务器的消息队列,但是服务器像客户端发消息的代码一行没改,日志也只是发一条消息下去,但是因为改了消息队列,最后使用linux抓包看看,以证清白。tcpdump输出demo如下(这不是调试时的数据,只是demo)。这里我指定查看8060端口。root@mdev-2:/home/banfushen/webclient# tcpdump port 8060tcpdump: verbose output suppressed,
原创
发布博客 2021.07.21 ·
240 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

redis list插入失败,服务器与redis调试过程记录(redis连接列表,redis日志,redis监视着模式)。

前段时间在项目中碰到一个redis list插不进去的问题。背景是使用了redis list做消息队列,有两个服务器,server1存贮的redis string 类型的key的value是服务器1自己的mq1,server2要将消息插入server1的mq1。然后server1在读出这个mq1中存贮的消息。再去做一些业务操作。server1对mq1采用的是brpop,也就是阻塞的拿消息。下面将mq这个redis list的key成为mq1。我碰到了一个很奇葩的问题,server2从redis中读出了m
原创
发布博客 2021.07.20 ·
717 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

linux grep/ag 匹配反斜杠“\“,记录一下这个有意思的问题

今天项目中抓取日志的时候,因为日志打印出来的数据存是josn字符串,我要匹配的是这串\"userId\":\"867340f5-b992-4fe5-92cc-5390de659491\",按照经验,"和\是需要转换的,特殊字符串使用\做转换,"用"转义,\用\转换,在使用ag做匹配时这样写cat log1.txt | ag "{\\\"userId\\\\\":\\\\\"867340f5-b992-4fe5-92cc-5390de659491\\\","但是却没有结果经过尝试,发现原来\是
原创
发布博客 2021.06.10 ·
1047 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

golang如何快速查询并发写map的位置(concurrent map iteration and map write)

最近项目中高并发时碰到golang碰到了map并发读写的问题。找问题找了好久,可以借助这个方发,编译的时候加上-race,在发生并发读写的地方会有提醒。go run main.go -race会出现DATA RACE,这张图是网上找的,我的的代码是项目代码,不好粘贴。这是一个方法,使用这个也会有所缺陷,例如你的协程就不能开太多了,我记得好像只能开8000多个。最后我的原因是因为一般一个变量会定义在循环之外(这不是理所应当的么,当时写的时候没想那么多,而又是自己的思路,找了好久没找到,最后领导找
原创
发布博客 2021.04.15 ·
1609 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多