Linux
BanFS
欠的技术债,早晚要还
展开
-
perf对多线程Profile简单流程
背景知识Perf是用于软件性能分析的工具,通过Perf,应用程序可以利用PMU,tracepoint和内核中的特殊计数器进行性能统计。Perf不但可以分析应用程序的性能问题(per thread),也可以分析内核的性能问题,处理所有性能相关的事件:程序运行期间的硬件事件,如instructions retired ,processor clock cycles等;软件事件,如Page Fault和进程切换。Perf基本原理是对被监测对象进行采样,最简单的情形是根据tick中断进行采样,即在tick中断内原创 2022-02-13 20:48:52 · 3302 阅读 · 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 20:25:42 · 1450 阅读 · 0 评论 -
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 20:03:47 · 776 阅读 · 0 评论 -
linux top显示CPU占用高,Steal高
top显示cpu高,steal高原创 2021-12-26 21:50:18 · 1566 阅读 · 0 评论 -
linux使用docker + docker compose 本地搭建redis cluster集群
背景项目用到一个redis库,对于里面的集群相关功能要自己测试(就像《代码简洁之道》中说的,使用第三方库需要自己有测试用例,这样即使第三方库更新了,直接用原来的测试用例,也知道是否能兼容)。所以需要自己本地搭建redis集群测试。搭建是使用docker搭建的,一下需要启动很多个container,所以使用docker-compose作为容器编排我的环境已经有了,没有的自己下载直接上redis-cluster模式redis集群有三种模式:master+slave(主从)、sentinel(哨兵)、cl原创 2021-12-05 23:19:04 · 1922 阅读 · 0 评论 -
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 19:35:42 · 20211 阅读 · 0 评论 -
linux 使用tcpdump抓包
最近更换了服务器的消息队列,客户端反馈说服务器有时候会多发消息下去,十分纳闷,只改了服务器的消息队列,但是服务器像客户端发消息的代码一行没改,日志也只是发一条消息下去,但是因为改了消息队列,最后使用linux抓包看看,以证清白。tcpdump输出demo如下(这不是调试时的数据,只是demo)。这里我指定查看8060端口。root@mdev-2:/home/banfushen/webclient# tcpdump port 8060tcpdump: verbose output suppressed,原创 2021-07-21 17:50:09 · 180 阅读 · 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 17:02:46 · 944 阅读 · 0 评论 -
Linux 运行程序时如何保存堆栈(Linux如何把标准输出和错误输出 输出到一个文件里)
最近在使用golang开发中,并发量达到一定程度时就会发生panic,想看堆栈,但是因为是跑在k8中的程序,输出都是直接输出到标准输出的。也没有日志。在本地调试的时候直接运行了go程序,输出也是一大堆,一下子就被刷掉了,所以要把输出输入到一个文件里。一般这样command > filename // 把标准输出重定向到一个新文件中// 例如./programmer > log.txt但是这样,如果发生堆栈错误还是会直接输出到屏幕。无法保存。使用以下方法command >原创 2021-04-09 18:30:51 · 546 阅读 · 0 评论 -
ubuntu apt-get安装软件Unable to locate package...
由于受疫情影响(希望快点好起来),只能在家办公,再一次安装开发环境。 使用 apt-get install碰到以下问题 1.sudo apt-get update更新软件源 如果更新成功,无报错,无警告,则执行自己的下载即可 但是我执行最后有警告 Some index files f...原创 2020-02-10 11:09:40 · 789 阅读 · 0 评论 -
本地复制文本无法在Ubuntu中粘贴问题
在家办公,安装开发环境后无法粘贴。查询并自己实践后,解决方法如下: 1.sudo apt-get autoremove open-vm-tools 2. sudo apt-get install open-vm-tools-desktop 3.重启虚拟机 我通过以上方法即可解决,如果执行步骤1失败,可参考...原创 2020-02-10 12:34:13 · 13716 阅读 · 3 评论 -
Linux 无root权限安装tmux
在新公司中,开发是需要连接到开发机上的,而且员工作为普通用户,无法安装软件到除用户目录以外的目录(也就是没有root权限)。当我们需要下载安装一些常用工具时,因为没网,所以无法使用apt-get等下载指令。 ps:为什么没有root,就无法使用apt-get,因为apt-get是会去写一些文件到root用户才有权限的文件夹(例如/user....)或者修改系统环境变量的。而普通用户是没有权限,所以没法使用。 要解决这个问题,最主要的方法就是,修改安装的目录,添加...原创 2020-11-23 09:57:06 · 1904 阅读 · 4 评论 -
Ubuntu 安装、使用SVN
1.在terminal 输入 svn 看是否有安装svn 2.如果和我一样没装有svn则执行sudo apt install subversion 3.在首次使用svn check out的时候,会直接提示输入账号密码。 4.如果想要修改svn的账号与密码,删除目录 ~/.subversion/auth/ 下的所...原创 2020-02-10 14:08:52 · 263 阅读 · 0 评论 -
Ubuntu连接redis时可指定ip,端口,密码。
转做游戏服务器开发之后,基本上都在写游戏逻辑,关于redis的操作也已经有了现成的接口。今天提交了代码有点空闲时间打算学一学redis。 博主是按照网上的教程使用redis-cli去连接redis,但是之前本地的redis已经改过redis的默认配置文件,直接使用redis-cil发现并不能连接上。 查询资料后发现可以指定ip,端口,和密码如下。...原创 2019-09-04 17:04:31 · 1414 阅读 · 0 评论 -
Ubuntu 18.04.3 安装svn
今天早上上班后,发现电脑的机械硬盘居然崩了,原来以为这种情况只会存在传说中,没想到自己真正碰到了。由于基本上所有的资料和开发环境都是存在机械硬盘上的,一切的一切只能重来,借此机会,记录一下自己走过的路。 使用的是: VMware:Workstation 15 Pro https://www.7down.com/soft/310739...原创 2019-08-12 15:01:32 · 645 阅读 · 0 评论 -
Linux 创建属于自定义命令
在家办公,再次搭建开发环境,加上这次多次碰到,做此记录subl 是我安装的编辑器,如果你看到这这篇博客,把subl换成自己的编辑器(vi、vim)即可。1.在terminal 输入:subl ~/.bashrc2.找到这个地方并添加自己的命令,可添加多个指令,用";"隔开3.在terminal 输入:source ~/.bashrc (立即生效)...原创 2020-02-11 17:21:56 · 388 阅读 · 0 评论