notice
文章还在迁移中,更多旧文章见主页主页已停止更新,新文章都在这里。
setroubleshootd引起的CPU高负载问题
记一次setroubleshootd进程引起的CPU高负载问题
上图可以看到CPU和内存在机器上都不正常
$ top查看具体进程为setroubleshootd
继续通过指令查看:tail -f /var/log/audit/audit.log
输出如下:
123type=SYSCALL msg=audit(1659596208.000:3732435): arch=c000003e syscall=4 success=no exit=-13 a0=7fd01c268280 a1=7fd01c267fc0 a2=7fd01c267fc0 a3=0 items=0 ppid=1 pid=75904 auid=4294967295 uid=986 gid=980 euid=986 suid=986 fsuid=986 egid=980 sgid=980 fsgid=980 tty=(none) ses=4294967295 comm="ftdc" exe="/usr/bin/mongod" subj=system_u:system_r:mongod ...
prometheus+grafana搭建监控服务
前言之前使用过InfluxDB+Grafana的方案,主动push监控数据,现在使用Prometheus pull数据的方案,相比前一种方案,现在这种在部署上更加方便。推荐。
Grafana安装可以参考另外一篇文章: InfluxDB和Grafana搭建监控服务
Linux服务器安装
官网选择对应的版本下载并安装。
启动grafana
123456[root@cxm ~]#systemctl daemon-reload[root@cxm ~]#systemctl start grafana-server[root@cxm ~]#systemctl stop grafana-server[root@cxm ~]#systemctl restart grafana-server[root@cxm ~]#systemctl status grafana-server[root@cxm ~]#systemctl enable grafana-server
开放3000端口
123[root@cxm ~]#firewall-cmd --list-ports[root@cxm ~]#firewa ...
【转载】 IO 多路复用
你管这破玩意叫 IO 多路复用?原创 闪客 低并发编程 2021-03-25 09:00
https://mp.weixin.qq.com/s/YdIdoZ_yusVWza1PU7lWaw
收录于合集
#破玩意儿25个
#网络4个
低并发编程
战略上藐视技术,战术上重视技术
为了讲多路复用,当然还是要跟风,采用鞭尸的思路,先讲讲传统的网络 IO 的弊端,用拉踩的方式捧起多路复用 IO 的优势。
为了方便理解,以下所有代码都是伪代码,知道其表达的意思即可。
Let’s go
阻塞 IO服务端为了处理客户端的连接和请求的数据,写了如下代码。
123456789listenfd = socket(); // 打开一个网络通信端口bind(listenfd); // 绑定listen(listenfd); // 监听while(1) { connfd = accept(listenfd); // 阻塞建立连接 int n = read(connfd, buf); // 阻塞读数据 doSomeThing(buf); // 利用读到的数据做些什么 ...
InfluxDB和Grafana搭建监控服务
本篇为监控服务的环境搭建教程。
Docker安装安装教程
问题一:
当前python环境为python3,修改/usr/bin/yum-config-manager使用的python版本为2即可。如下图
InfluxDB下面一是service方式安装,二是docker方式安装,按需选择一种方式安装即可,推荐方式1。
Install InfluxDB as a service with systemd
我的是CentOS的系统,使用yum方式安装如下:
启动influxd:
也可以选择Docker方式安装
问题一:如果服务器上已经使用yum安装了其他版本的influxDB,可以选择将旧版本卸载。
123rpm -q influxdbrpm -e influxdbrpm -q influxdb
Grafana
使用Grafana官网服务
https://grafana.com/grafana/
创建自己的grafana cloud,如:https://zhangga.grafana.net/
配置数据源
配置监控面板
云服务器安装Grafana
...
Linux常用命令
Linux查看物理CPU个数、核数、逻辑CPU个数1234567891011# 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数# 查看物理CPU个数cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l# 查看每个物理CPU中core的个数(即核数)cat /proc/cpuinfo| grep "cpu cores"| uniq# 查看逻辑CPU的个数cat /proc/cpuinfo| grep "processor"| wc -l
查看CPU信息(型号)1cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
查看内存信息1# cat /proc/meminfo
如何查看Linux 内核12uname -acat /proc/version
查看机器型号(机器硬件型号)12dmidecode | grep "P ...
RoadMap
RoadMap
规划
双周产出一篇文章
迁移WordPress的文章
总结Golang的一系列文章
Golang stream作业
C++学习
工作总结
面试总结
自己实现一套开源框架
游戏服务器网络库
最近在开发golang的游戏服网络库,基础开发已经完成,准备做性能测试,在思考测试用例的时候,参考了下主要网络库的测试场景,在这里做一下汇总。
游戏网络库背景通过封装TCP/UDP网络连接,向上层业务提供 可靠、易用 的网络库。
获取网络层的控制权,先于业务做一些探索并最终赋能业务。
特性
易用性
遵循golang net的接口规范,保证通用性。
弱网环境下保证消息顺序、可靠,不需要业务层做额外工作。
可以发送可靠消息,TCP消息,UDP消息。
方便开启/关闭TCP/UDP以及双通道通信。
可靠性
对网络连接进一步封装成逻辑连接(session),将短时间内的断线重连作为同一个连接,对业务层透明。
保证任何情况下消息的可靠,在TCP/UDP上封装KCP,保证UDP的可靠,以及断线重连下同一个逻辑连接(不同的TCP连接)消息的可靠性。
支持上行/下行分别走不同的通道。
针对游戏大包下发的场景(如登录游戏,进入场景/副本等),优先使用TCP发包。
根据网络时延自动选择TCP或UDP。
网络连接自动选择就近IP,登录到就近部署区域。
总结针对游戏服务器特性在设计网络库的时候 ...
容器的网络模式
Bridge独立netns隔离了网络,容器间网络不互相影响,容器内的IP地址是私有网段,仅本地可见,通过NAT与外部交互
Bridge 模式可以看作服务被放在一个独立的网络空间里,它的 IP 是一个虚拟 IP,任何的端口都是可以使用的。但是对外提供服务的时候,需要通过 NAT 转发。
需要进行的配置:
配置服务信息中需要填写一个服务主端口
配置以后的实例列表:
可以看到,Bridge 模式下的实例会有不同的 NodeIP 和内部 IP,内部 IP 是一个虚拟 IP,它通过 NAT 转发映射到 NodeIP。内部端口是配置的固定端口,访问端口是动态配置的转发端口。
Host标准的Host网络
Host 模式使用的是宿主机的端口,相比 Bridge 而言,少了一次内核栈的调用,也没有 NAT 转发的损耗。对于高吞吐,或有大文件传输的业务服务而言,Bridge 模式不符合性能要求,所以架构组又推出来了 Host 模式。
在 Host 模式下,服务端口都是平台自动分配的,因此不同的实例端口可能不同。平台会根据每台机器的可用端口,按照服务的需要,分配给实例对应的端口并保存在环境变量 ...