c0refast.github.io's People
c0refast.github.io's Issues
使用udev重命名网卡 | C0reFast记事本
https://www.ichenfu.com/2020/06/08/rename-nic-names/
在老的Linux中,特别是CentOS 6系统下,网卡大多数都是命名为eth0,eth1这样的形式,但是这样的命名是不稳定的,因为后面的数字是根据驱动的加载顺序来的,那么就有可能出现两次启动导致网卡名称不一样的情况了。在CentOS 7中,由于有了Systemd,所以引入了一种新的命名规则叫一致网络设备命名,具体的可以参考文档第 8 章 一致网络设备命名,这里就不再赘述了。 现在问题来了,如何真正
替换PHP底层函数实现 | C0reFast记事本
https://www.ichenfu.com/2015/03/01/override-php-function/
在PHP中,有很多内置的函数,这些函数包括绝大部分的功能,还有一些函数,是PHP的扩展提供的,只有安装了扩展并开启,函数才可以被使用,这些函数的实现,都是用C来实现的,因此有着最好的效率。 在某些情况下,可能要对这些用C实现的函数进行一些额外的更改,比如说,对其进行一个伪实现,或者,在调用之前检查是否满足特定的情况,也就是说,对这些函数进行Hook。比较暴力的办法,就是找到需要伪实现或者Hook的
Kubernetes Pod dnsPolicy 配置 | C0reFast记事本
https://www.ichenfu.com/2018/12/20/k8s-pod-dns-policy/
在Kubernetes中,可以针对每个Pod设置DNS的策略,通过PodSpec下的dnsPolicy字段可以指定相应的策略,目前支持的策略如下: “Default“: Pod继承所在宿主机的设置,也就是直接将宿主机的/etc/resolv.conf内容挂载到容器中。 “ClusterFirst“: 默认的配置,所有请求会优先在集群所在域查询,如果没有才会转发到上游DNS。 “ClusterFi
Intel X700系列网卡(i40e驱动)收不到LLDP包问题 | C0reFast记事本
https://www.ichenfu.com/2020/05/07/intel-x700-i40e-do-not-receive-LLDP-frames/#more
在我们的机房服务器上,启用了LLDPD服务,通过LLDP协议实现网络层的自动发现,从而根据收到的消息绘制网络拓扑关系。 之前的大部分机器一直工作正常,也没有多关注,然而今天突然发现有一批机器工作不太正常,因为后期的工作依赖这个拓扑关系,如果关系不正确,后面的工作就没办法进行,所以遇到不正常的机器还是需要具体分析一下为什么。 正常情况下,启动lldpd服务,并调用lldpctl可以看到网卡连接到的交
再谈CPU的电源管理(如何做到稳定全核睿频?) | C0reFast记事本
https://www.ichenfu.com/2020/07/17/cpu-idle-time-managment/
在之前的一篇Blog: 服务器的能耗控制以及高性能模式配置(Dell)中,说到在Dell的服务器BIOS中打开Performance模式。就可以实现真正非软件管理的高性能模式,让CPU时刻处在最高性能状态上。但是呢,最近的一批机器,升级到CentOS 7.7系统之后,这个行为发生了一些变化,而针对这批机器的两个供应商的表现呢,也不完全一致,这个现象驱使我研究了一下到底怎么样设置,可以实现期望的运行
Istio的流量劫持和Linux下透明代理实现 | C0reFast记事本
https://www.ichenfu.com/2019/04/09/istio-inbond-interception-and-linux-transparent-proxy/
一般情况下,如果一个程序需要使用代理服务器,那么需要在运行的时候设置一下参数,或者,在Linux下,大部分的程序支持http_proxy这个环境变量,设置这个环境变量,意味着程序将使用设置值作为代理。这样的问题在于,设置代理这个操作是不透明的,也就是说,客户端必须要知道代理的存在,需要手动设置将流量导入到代理,如果程序本身不支持代理,或者我们不希望执行所有程序的时候都手动设置代理,那么就需要一个相
挂载CephFS时出现failed: No such process的问题 | C0reFast记事本
https://www.ichenfu.com/2019/09/07/mount-cephfs-no-such-process/
今天在我们的环境中遇到了一个比较诡异的问题,我们在一台虚拟机上想要挂载一个CephFS,但是出现了一个failed: No such process的诡异问题,具体表现如下: 1]# mount -t ceph mon1.ichenfu.com:6789,mon2.ichenfu.com:6789,mon3.ichenfu.com:6789:/ /tmp/data2mount: mount mon
Calico的IP分配策略以及存在的一些问题 | C0reFast记事本
https://www.ichenfu.com/2019/09/21/calico-ip-allocation-problems/
之前线上运行的K8S集群出现了一个Pod IP无法访问问题,调查了一下,发现和CalicoIP地址的分配策略相关,具体表现为一个/26的IP Block192.168.100.0/26分配给了A机器之后,在另外一台B机器上又出现了该IP Block内的一个IP 192.168.100.10,同时因为A机器上有该IP Block的blackhole路由blackhole 192.168.100.0/
编写Udev规则文件开机设置网卡SR-IOV | C0reFast记事本
https://www.ichenfu.com/2020/08/23/simple-example-for-enabling-sriov-using-udev/
在虚拟化场景下,SR-IOV(Single Root I/O Virtualization)是一个很常用的功能,通过SR-IOV,一个物理的设备(Physical Function),可以派生出很多虚拟设备(Virtual Function),这些虚拟设备具有简单的PCIe功能。以网卡为例,通过SR-IOV,我们可以将一块网卡,虚拟化成很多块网卡,这些虚拟出来的网卡,有自己独立的PCIe地址,中断
Unrecoverable Read Error Rate (URE) | C0reFast记事本
https://www.ichenfu.com/2016/12/04/ure/
很久之前,对于磁盘的了解,就知道一个很关键的指标MTBF,即相邻两次故障之间的平均工作时间,也称为平均故障间隔,这个值越大越好,越大意味着硬盘更不容易坏。对于RAID,也是很相信,觉得大多数情况下,使用RAID,就能保证数据的安全性,几乎不会有数据丢失的风险。 突然的,读到一篇对于RAID 6的文章 Why RAID 6 stops working in 2019,这是一篇2010年的文章,很遗憾
Ceph Monitor标记OSD DOWN分析 | C0reFast记事本
https://www.ichenfu.com/2021/03/18/ceph-osd-mark-down/
在上篇Blog:Ceph OSD的心跳机制分析的最后,我们知道Ceph OSD将心跳检测失败的OSD打包成MOSDFailure消息发送给Monitor,但是还遗留了一个问题,就是Monitor是怎么处理这个消息的?又是在什么的情况下会把这个OSD标记为Down状态?所以这篇就是要把整个流程补完。 还是来看代码,首先需要注意的是,MOSDFailure不是一个原始的消息,我们得先找到这个消息对应得
关于我 | C0reFast记事本
纯手动部署Ceph之OSD部署 | C0reFast记事本
https://www.ichenfu.com/2017/02/09/ceph-osd-manual-deployment/
Monitor部署结束后,需要部署Ceph的OSD,OSD是Ceph实际存储的核心,有了OSD,数据才能正常进行存储,这里还是在一台机器上部署3个OSD,实际生产环境中,会有更多的OSD以及更多的机器。这里默认机器上已经装好了所有Ceph对应的包。出于简单考虑,所有的OSD只分配一个对应的数据目录。实际生产环境中,一般一个OSD会对应一个设备。
CVE-2016-3714 - ImageMagick漏洞分析和解决 | C0reFast记事本
https://www.ichenfu.com/2016/05/08/cve-2016-3714/
2016年5月3号,一个被广泛使用的图片处理库ImageMagick被爆出存在一处远程命令执行漏洞(CVE-2016–3714),当其处理的上传图片带有攻击代码时,攻击代码中的远程命令将会被执行,进而可能控制服务器。这个漏洞被命名为ImageTragick,甚至还有了一个属于这个漏洞自己的网站(https://imagetragick.com/)同样,SAE上也是安装了这个库的,在PHP运行环境中
speedtest.net命令行版本 | C0reFast记事本
https://www.ichenfu.com/2017/06/29/speedtest-cli/
找到一个命令行版本的speedtest.net,可以在没有浏览器的情况下进行网络测速,具体的地址在[sivel/speedtest-cli][1][1]: https://github.com/sivel/speedtest-cli 单文件,只依赖Python,可以直接下载: 1curl -Lo speedtest-cli https://raw.githubuserconte
Hello World | C0reFast记事本
https://www.ichenfu.com/2014/11/20/hello-world/
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in trobuleshooting or you can ask me on GitHub. Quick
京东云主机试用 | C0reFast记事本
https://www.ichenfu.com/2017/01/03/jd-vm/
前几天拿到了京东云的代金券,87块钱,刚好能用一台1核1G的虚拟机一个月,外加1M的外网带宽。于是就随便试用了一下,感觉还行,说说感受吧。 首先是镜像,目前镜像不是很多,主要集中在CentOS、Ubuntu、Windows。CentOS还是比较全的,从5.8到7.3都有,Ubuntu只用12.04和14.04两个LTS版本,Windows还是有一些的,不过没怎么关注。除了官方的镜像,还有安全镜像,
/proc/cpuinfo里的CPU型号怎么来的? | C0reFast记事本
https://www.ichenfu.com/2020/12/17/cpuinfo-model-name/
今天有一件小事,勾起了我的好奇心。有个同事反馈说,我们虚拟的CPU主频较低,对性能有影响,于是就问了一下,怎么看主频的,很简单,看看lscpu里的Model name:字段就行了: [root@]# lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Lit
Linux中的主设备号 | C0reFast记事本
https://www.ichenfu.com/2014/12/28/linux-devices/
由于工作中某个需求,需要使用Cgroups对某个进程的IO进行限制。所以,需要在Cgroup的blkio子系统中进行配置,我们限制的是读取磁盘的iops,所以,需要在blkio.throttle.write_iops_device中写入该限制。 echo "8:0 10" > /cgroup/blkio/test/blkio.throttle.read_iops_devi
当我们在讨论可用内存,我们在讨论什么? | C0reFast记事本
https://www.ichenfu.com/2020/10/11/measuring-avaliable-memory/
事情的起因呢,是我们收到了一条内存报警,提示某台机器的可用内存不足,可用内存剩下不到14G。原本只是一个很简单的问题,但是呢,这次却发现了一些不一样的点。登录机器后,free -m命令执行的结果如下: 1234]# free -m total used free shared buff/cache availableMem:
使用libguestfs挂载qcow2文件 | C0reFast记事本
https://www.ichenfu.com/2019/12/19/mount-qcow2-with-libguestfs/
安装1sudo yum install libguestfs-tools # Fedora/RHEL/CentOS2sudo apt-get install libguestfs-tools # Debian/Ubuntu 挂载1mkdir -p /tmp/mnt2guestmount -a xxxx.qcow2 -m /dev/sda1 --rw /tmp/mnt 其中/dev/
Kubernetes DNS-Based Service Discovery 翻译 | C0reFast记事本
https://www.ichenfu.com/2018/05/17/kube-dns-spec/
本文是Kubernetes DNS-Based Service Discovery的翻译,也就是Kubernetes DNS specification的翻译,目前最新版本号是1.0.1。 0 - 关于此文档本文档是Kubernetes基于DNS的服务发现的规范说明,尽管在Kubernetes中还有其他方式的服务发现协议和机制,但是DNS仍然是最常见而且是最推荐使用的扩展。实际的DNS服务并不一定
使用iptables结合ipset封锁国外的异常IP访问 | C0reFast记事本
https://www.ichenfu.com/2020/01/07/block-ips-outside-china-with-iptables-and-ipset/
最近遇到了网站不断被一些国外的IP扫描的问题,想了想,决定将所有非国内的客户端全部封锁,只允许国内的用户进行访问。 首先需要找到所有国内的IP段,这个比较简单,ipip.net的github提供了一个china_ip_list项目,记录了目前所有国内的IP地址段,每月更新。这个列表可以通过wget https://raw.githubusercontent.com/17mon/china_ip_l
Kubernetes CronJob Controller源码分析 | C0reFast记事本
https://www.ichenfu.com/2018/05/10/k8s-cronjob-source-code/
最近的一个项目需要用到Kubernetes的CronJob,主要用来定时执行一个备份任务,刚开始使用的时候发现没有按照预期的情况运行,所以决定看看CronJob Controller的代码,看看他是怎么实现对应的功能的,正好发现网上也没有其他人写过关于CronJob Controller代码的解析(可能是太简单了不用写吧)。所以也就正好记录一下。 CronJob Controller的代码在kub
Kubelet启动报错Failed to start ContainerManager failed to initialize top level QOS containers | C0reFast记事本
https://www.ichenfu.com/2019/12/06/kubelet-failed-to-initialize-top-level-qos-containers/#more
最近往K8s集群中添加节点的时候,发现部分节点的kubelet进程无法启动,导致节点处于NotReady状态。journalctl -u kubelet查看日志可以发现类似的日志: 1....2Nov 29 23:32:13 localhost kubelet[3830]: I1129 23:32:13.311881 3830 server.go:333] Adding debug hand
在CentOS下配置DDNS并实现动态更新 | C0reFast记事本
https://www.ichenfu.com/2014/11/23/centos-ddns/
由于项目需要,最近在CentOS 6系统中配置了一个DDNS(Dynamic DNS)服务器,从而实现了动态对域名的添加删除等操作,记录一下步骤,备忘。
lspci命令输出的一些解释 | C0reFast记事本
https://www.ichenfu.com/2019/11/03/interpreting-the-output-of-lspci/
最近一段时间在折腾虚拟化,想把SR-IOV硬件直通给用起来,所以免不了要利用lspci这个工具,用来查看当前系统连接的所有PCI/PCIe设备。其实之前也有用到过,也有一些不理解的地方,只是当时无脑跟着文档设置,也就没多关心了,这次需要好好的理解一下相关的概念什么的。 首先很简单,看看不加参数直接调用lspci命令的输出结果,下面的是我笔记本上的输出: 100:00.0 Host bridge:
使用rpmbuild打包时不对文件进行strip操作 | C0reFast记事本
https://www.ichenfu.com/2017/11/20/rpmbuild-not-strip/
默认情况下,在使用rpmbuild打包时,会对安装的所有文件进行strip操作,去除文件的一些调试信息,并将这些调试信息放到debuginfo包中,但在很多时候,我们并不需要rpmbuild帮我们执行strip,也不需要生成debuginfo包,所以我们可以修改一下spec文件,关闭这些选项。 针对文件的strip操作是在__os_install_post这个宏中定义的,我们可以运行一下rpmbu
NetworkManager简单教程 | C0reFast记事本
https://www.ichenfu.com/2021/02/16/networkmanager-tutorial/
最近在尝试切换到CentOS 8,虽然不久前CentOS宣布从RHEL下游转向CentOS Stream了,但是相信以后会有类似的替代品出现,本质上也是在适应RHEL 8。这一试不要紧,一开始就被NetworkManager给吓住了,这都什么玩意,怎么这么难用? 一开始呢,想着先用被废弃但是还没被删除的老network-scripts顶一顶,想回滚也很简单:执行dnf install -y net
Git的浅克隆功能 | C0reFast记事本
https://www.ichenfu.com/2019/07/25/git-shallow-clone/
随着Git仓库不断的被修改,整个仓库会变得越来越大,其中最主要的原因是历史提交特别的多,这个对于想立即阅读最新代码或者CI/CD场景下不是特别友好。 面对这种场景,可以利用git提供的浅克隆功能,只clone少部分历史到本地,这样可以极大的减少clone的仓库大小,以PHP源代码代码为例:
类似\xe4\xb8\xad等字符串的解码 | C0reFast记事本
https://www.ichenfu.com/2017/01/13/decode-hex-string/
经常会在日志,或者其他地方遇到类似 '\xe4\xb8\xad\xe5\x8d\x8e\xe4\xba\xba\xe6\xb0\x91\xe5\x85\xb1\xe5\x92\x8c\xe5\x9b\xbd' 的字符串,但是不知道实际是代表的什么,因此要做一个解码。 之前一直没有找到比较好的网页的工具,所以就直接尝试用Python进行解码,实际上类似的字符串就是二进制数据,所以作为
如何实现CPU单核睿频? | C0reFast记事本
https://www.ichenfu.com/2020/07/24/achieve-one-core-turbo/
之前的Blog:再谈CPU的电源管理(如何做到稳定全核睿频?)最终通过了tuned实现了CPU全核心运行在允许的全核睿频频率上。但是这个只是场景之一,并不是所有场景下都会用到很多的核心,从这些应用角度讲,更需要少量但是更高频率的核心,一个比较简单的例子就是DPDK,作为DPDK应用,一般来说也不会用到很多核心,但是他的polling模型,是希望单核频率越高越好的。针对类似的这种场景,实现少量核心,
PHP扩展加载过程 | C0reFast记事本
https://www.ichenfu.com/2015/03/02/php-load-extension/
在PHP的配置文件中,添加一行extension=xxxx.so,就可以使PHP加载xxx这个扩展,那么这个扩展具体是怎么被加载到PHP中的?可以看一下。
树莓派启动时需要连接HDMI问题 | C0reFast记事本
https://www.ichenfu.com/2019/09/14/raspberrypi-boot-without-HDMI-connected/
前段时间将家里的树莓派3B系统换成了ArchLinux Arm,这样就可以用上64位指令集,不过遇到了一个问题,在没有连接HDMI时系统无法启动,刚开始还以为是什么其他的原因,因为之前接上显示器开机一切正常,但是换个地方不接显示器就启动不了,后来把显示器搬到旁边,一插上HDMI,立马就进入启动了。 定位到和HDMI相关之后,搜索了一下,刚开始以为和系统有关,后来搜到了Won’t boot with
挂载CephFS出现wrong fs type的问题 | C0reFast记事本
https://www.ichenfu.com/2020/09/04/mount-cephfs-wrong-fs-type/
最近在我们的集群中遇到一个问题,在一台机器上,尝试挂载CephFS失败了,报错如下: 123456~]# mount -t ceph mon1.ichenfu.com:6789,mon2.ichenfu.com:6789,mon3.ichenfu.com:6789:/ /tmp/datamount: wrong fs type, bad option, bad superblock on mon1
删除K8s Namespace时卡在Terminating状态 | C0reFast记事本
https://www.ichenfu.com/2019/02/20/kubernetes-namespaces-stuck-in-terminating-state/
想要删除K8s里的一个Namespace,结果删除了所有该Namespace资源之后使用kubectl delete namespace test发现删除不掉,一直卡在Terminating状态,使用--force参数依然无法删除,报错:Error from server (Conflict): Operation cannot be fulfilled on namespaces "t
纯手动部署Ceph之Monitor部署 | C0reFast记事本
https://www.ichenfu.com/2017/02/07/ceph-monitor-manual-deployment/
Ceph官网上介绍了使用ceph-deploy工具部署Ceph集群的方法,但是手工部署的方法文档中写的不够详细,花了点时间研究了一下,下面是手工部署一个简单的Ceph集群的步骤,先说怎么部署Monitor。 Monitor是Ceph的核心,用于存储所有的元信息,这里部署的是一个3 Monitor的集群,出于简单考虑,这三个Monitor被我放在了同一台机器上,实际部署的话,还是要放在不同的机器上保
一个epoll惊群导致的性能问题 | C0reFast记事本
https://www.ichenfu.com/2017/05/03/proxy-epoll-thundering-herd/
在我们内部的系统中,有一个tcp的代理服务,用户所有的网络相关的请求,比如访问外网,或者访问在内网的某些服务,都需要通过这个服务,一方面是实现对外网访问的计费,另外也通过白名单机制,对应用的内网访问进行相应的限制。随着业务量的增加,发现提供服务的机器负载逐渐变高,当流量高峰的时候,经常出现客户端无法连接的情况,本来这个服务也是一个无状态的服务,可以很方便的水平扩容,在添加机器的同时,也尝试去分析一
仿照PHP的实现简单的扩展动态加载 | C0reFast记事本
https://www.ichenfu.com/2015/03/09/ext-skel-like-php/
PHP通过扩展机制,可以方便的实现对PHP的动态扩展,在PHP扩展加载过程中简单的分析了PHP扩展的加载过程,下面可以继续根据PHP的相关实现,实现一个自己的简单的支持扩展的程序。
Cgroups Memory子系统数据不正确的问题 | C0reFast记事本
https://www.ichenfu.com/2015/03/25/cgroups-memory-fuzzy-usage/
工作中,需要对单个MySQL进程进行限制,并且对MySQL进程消耗的IO,CPU Time,Memory等进行统计,首先想到的就是使用Cgroups对进程进行限制,同时,Cgroups提供的一些接口,也可以非常方便地读取到进程消耗的IO,CPU Time, Memory等数据。 但是在实现自动化之后(使用了自己编写的一套管理程序来对MySQL进程进行管理),却发现了一个非常奇怪的问题:从Cgrou
记一次SAE Web服务器的调优过程 | C0reFast记事本
https://www.ichenfu.com/2015/12/07/tuning-webruntime/
事情的原因,是发生在某个晚上的9点30左右,SAE的报警系统突然报出了异常,所有的Web服务器的负载突然变得很高,流量也变得异常的大。这个是很有问题的,在SAE最前面的反向代理上,是部署了SAE自己开发的‘CC防火墙’的,如果出现了异常的被攻击的情况,这些异常的流量是不会到达Web服务器的,现在这些流量都到达了Web服务器,说明要么是攻击没有被正常判断,要没就是这不是一次攻击。 事实上确实这也不是
再谈网卡的一致性命名 | C0reFast记事本
https://www.ichenfu.com/2020/11/10/consistent-network-device-naming/
针对网卡名字这个问题,其实之前也讨论过一次,主要是如何利用udev去重命名网卡,里面提到了新的一致性命名规则,但是没有细说。 当然肯定是遇到问题了,所以针对网卡命名的细节,需要再探讨一下。 其实目前大家还是更熟悉老的那种eth0,eth1…那种命名,目前我们大部分生产环境里也是这么用的。但是随着网卡数量越来越多(在我们使用的SR-IOV场景,加上VF虚拟网卡,机器上已经有超过16个网卡)这种命名规
CNI Plugin Bridge代码解析 | C0reFast记事本
https://www.ichenfu.com/2018/01/23/cni-bridge-host-local/
在CNI所以默认提供的Plugin中,bridge应该算是最简单的插件了,针对IPAM Plugin,最简单的应该是host-local,这两个插件也是Kubernetes网络kubenet需要的两个插件。所以这里看一下这两个插件的代码。 所有官方维护的代码,都开源在containernetworking/plugins项目中了。 其中bridge的代码在plugins/main/bridge目录
多网卡环境下利用策略路由实现网络流量同进同出 | C0reFast记事本
https://www.ichenfu.com/2020/11/24/multi-nics-policy-routing/
当一台机器有超过1块网卡,并且配置的IP地址不在一个段里的时候,会出现在外部只有一个IP地址能够ping通的情况,举个最简单的例子: 一个有2块网卡的机器: [root@test]# ip addr 2: enp24s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 100
Ceph OSD的心跳机制分析 | C0reFast记事本
https://www.ichenfu.com/2021/03/16/ceph-osd-heartbeat/
心跳机制在Ceph中承担非常重要的角色,所有OSD之间都需要通过心跳来确认各个OSD的状态,并且在OSD出现失联,Crash等情况下能及时的被发现,从而进行故障OSD摘除,触发数据重平衡等,保证数据的安全性。 所以弄明白当前Ceph的心跳机制,理顺OSD从故障到被集群踢出的流程是十分必要的。 心跳初始化 & 心跳发送首先我们从Ceph OSD进程的启动main函数开始,代码在src/cep
服务器的能耗控制以及高性能模式配置(Dell) | C0reFast记事本
https://www.ichenfu.com/2020/02/26/cpu-power-management/
事情的起因要算很久之前一次测试,一个同事借了我们的一台机器测试,在测试之前惯例使用cpupower frequency-set -g performance命令将CPU高性能模式打开,避免因为系统处于节能模式导致性能测试不准确。但是在我们这台机器上执行命令却报错了: 1]# cpupower frequency-set -g performance2Setting cpu: 03Error set
Calico网络中的ProxyARP | C0reFast记事本
https://www.ichenfu.com/2019/03/14/proxy-arp-in-calico/
如果K8s使用Calico作为网络方案的话,应该都会知道Calico是个纯3层的方案,也是就说,所有的数据包,都是通过路由的形式找到对应机器和容器的,然后通过BGP协议来将所有的路由同步到所有的机器或者数据中心,来完成整个网络的互联。简单的来说,Calico针对一个容器,在主机上创建了一堆veth pair,其中一端在主机,一端在容器的网络空间里,然后在主机和容器中分别设置几条路由,来完成网络的互
使用SAE提供的VPN隧道连接SAE服务 | C0reFast记事本
https://www.ichenfu.com/2016/05/29/sae-vpn/
SAE内部的一些服务,比如MySQL,包括独享型和共享型,默认是无法在外网访问的,这给本地调试带来了一些麻烦,但是,有了VPN隧道服务之后,可以利用VPN隧道服务连接到SAE的内网环境,这时候,就可以在本地计算机直接连接这些服务了。
Qemu-KVM的CPUID初始化和自定义CPU Model显示 | C0reFast记事本
https://www.ichenfu.com/2020/12/28/qemu-kvm-fake-cpuid/
在上一篇Blog:/proc/cpuinfo里的CPU型号怎么来的?里,可以知道Linux系统是根据CPUID指令来显示具体的CPU型号的。所以很自然的一个想法:是不是可以自定义显示的内容呢? 答案显而易见,必然是可以的。但是如果要改物理CPU的寄存器,那确实会有些困难,不过没关系,我们还有虚拟机嘛,理论上虚拟机可以虚拟这些东西,那改动起来应该也是比较方便的。 想要修改这些寄存器,首先得先看看CP
PHP设置open_basedir导致的性能问题 | C0reFast记事本
https://www.ichenfu.com/2016/12/04/openbasedir-lstat/
某天收到报警,发现某台PHP Web机器的CPU比较高,压力比较大,登录到机器看了一下,发现,user的CPU还行,但是system的CPU比较高,导致了整个机器的负载比较高,于是就怀疑是不是系统某些地方存在性能瓶颈。 于是先用perf+FlameGraph生成了一下火焰图看一下: 发现有很多 __lxstat64 调用占用了很多的CPU时间,这个调用是 stat 函数在64位Linux下的实现,
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.