自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

屈帅波的技术博客

努力过好每一天,充实每一天

  • 博客(31)
  • 资源 (1)
  • 收藏
  • 关注

原创 Linux内存是怎么工作的?

课程连接https://time.geekbang.org/column/intro/100020901这里是学习课程的时候记录的一些学习笔记一 内存映射我们通常所说的内存容量,就像我刚刚提到的 8GB,其实指的是物理内存。物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。虚拟地址空间的内部又被分

2020-11-29 18:24:18 242

原创 CPU 性能优化

课程连接https://time.geekbang.org/column/intro/100020901这里是学习课程的时候记录的一些学习笔记一 性能优化方法论通过各种性能分析方法,终于找到引发性能问题的瓶颈后,是不是立刻就要开始优化了呢?别急,动手之前,你可以先看看下面这三个问题。首先,既然要做性能优化,那要怎么判断它是不是有效呢?特别是优化后,到底能提升多少性能呢?第二,性能问题通常不是独立的,如果有多个性能问题同时发生,你应该先优化哪一个呢?第三,提升性能的方法并不是唯一的,当有多种

2020-11-29 15:28:29 2741

原创 如何迅速分析出系统CPU的瓶颈在哪里

一 CPU 性能指标首先,最容易想到的应该是 CPU 使用率,这也是实际环境中最常见的一个性能指标。CPU 使用率描述了非空闲时间占总 CPU 时间的百分比,根据 CPU 上运行任务的不同,又被分为用户 CPU、系统 CPU、等待 I/O CPU、软中断和硬中断等。用户 CPU 使用率,包括用户态 CPU 使用率(user)和低优先级用户态 CPU 使用率(nice),表示 CPU 在用户态运行的时间百分比。用户 CPU 使用率高,通常说明有应用程序比较繁忙。系统 CPU 使用率,表示 CPU

2020-11-28 18:57:13 1309

原创 怎么理解Linux软中断

课程连接https://time.geekbang.org/column/intro/100020901这里是学习课程的时候记录的一些学习笔记一 中断的概念中断其实是一种异步的事件处理机制,可以提高系统的并发处理能力。由于中断处理程序会打断其他进程的运行,所以,为了减少对正常进程运行调度的影响,中断处理程序就需要尽可能快地运行。如果中断本身要做的事情不多,那么处理起来也不会有太大问题;但如果中断要处理的事情很多,中断服务程序就有可能要运行很长时间。特别是,中断处理程序在响应中断时,还会临时关闭

2020-11-28 17:56:55 320

原创 系统中出现大量不可中断进程和僵尸进程(理论)

一 进程状态当 iowait 升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断状态。从 ps 或者 top 命令的输出中,你可以发现它们都处于 D 状态,也就是不可中断状态(Uninterruptible Sleep)。R 是 Running 或 Runnable 的缩写,表示进程在 CPU 的就绪队列中,正在运行或者正在等待运行。D 是 Disk Sleep 的缩写,也就是不可中断状态睡眠(Uninterruptible Sleep),一般表示进程正在跟硬件交互,并且交互过程不允许被其

2020-11-28 14:29:13 559

原创 CPU使用率很高但找不到高CPU的应用

课程连接https://time.geekbang.org/column/intro/100020901这里是学习课程的时候记录的一些学习笔记我们知道,系统的 CPU 使用率,不仅包括进程用户态和内核态的运行,还包括中断处理、等待 I/O 以及内核线程等。所以,当你发现系统的 CPU 使用率很高的时候,不一定能找到相对应的高 CPU 使用率的进程。1.准备工作预先安装 docker、sysstat、perf、ab 等工具,如 apt install docker.io sysstat linux

2020-11-28 08:49:51 1032

原创 Prometheus-rate与irate源码详解

我们先看prometheus的函数格式一 类型var Functions = map[string]*Function{ ... "rate": { Name: "rate", ArgTypes: []ValueType{ValueTypeMatrix}, ReturnType: ValueTypeVector, Call: funcRate, }, ... "irate": { Name: "irate", ArgType

2020-11-27 17:18:26 2140

原创 CPU上下文切换(实践)

一 vmstatvmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数。#每隔5秒输出1组数据vmstat 5procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 3

2020-11-27 07:58:50 380

原创 CPU使用率

课程连接https://time.geekbang.org/column/intro/100020901这里是学习课程的时候记录的一些学习笔记CPU 使用率是单位时间内 CPU 使用情况的统计一 CPU使用率Linux 通过事先定义的节拍率(内核中表示为 HZ),触发时间中断,并使用全局变量 Jiffies 记录了开机以来的节拍数。每发生一次时间中断,Jiffies 的值就加 1。节拍率 HZ 是内核的可配选项,可以设置为 100、250、1000 等。不同的系统可能设置不同数值,你可以

2020-11-26 08:15:24 1117

原创 CPU之上下文切换(理论)

一 概念Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉。而在每个任务运行前,CPU 都需要知道任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好 CPU 寄存器和程序计数器(Program Counter,PC)。CPU 寄存器,是 CPU 内置的容量小、但速度极快的内存。而程序计数器,则是用来存储 CPU 正在执行的指令位置、或者即将

2020-11-23 13:04:23 207

原创 CPU性能之如何理解平均负载

课程连接https://time.geekbang.org/column/intro/100020901这里是学习课程的时候记录的一些学习笔记一.uptime uptime 04:47:50 up 236 days, 1:25, 1 user, load average: 0.01, 0.06, 0.22 # 04:47:50 现在的时间 #236 days 系统运行时间 #1 user 登录用户数量 #load average: 0.01, 0.06, 0.22 过去1 5 1

2020-11-21 19:10:26 514

原创 Python爬虫之BeautifulSoup4

和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。lxml 只会局部遍历,而Beautiful Soup 是基于HTML DOM(Document Object Model)的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,所以性能要低于lxml。BeautifulSoup用来解析 HTML 比较简单,API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 .

2020-11-19 21:57:52 1790

原创 Prometheus报警以及联邦

本次读后感来自于《深入浅出Prometheus:原理、应用、源码与拓展详解》书籍链接https://item.jd.com/12573580.html一 报警Prometheus 本身对不会对告警进行处理,需要借助另一个组件 AlertManager。Prometheus会配置AlertManager的地址,这样Prometheus发出的告警记录便可以被发送到AlertManager进行处理。AlertManager 和 Prometheus同样是由 Go 语言开发的,主要功能包括:告警分组、告警抑

2020-11-18 12:56:39 1177

原创 Prometheus监控Es

一 Es我们需要关注的一些指标我们需要从几个维度来关注1.节点运行状况(内存 磁盘和CPU指标)每个节点都运行物理硬件上,需要访问系统内存,磁盘存储和CPU周期,以便管理其控制下的数据并响应对集群的请求。Elasticsearch是一个严重依赖内存 以实现性能的系统,因此密切关注内存使用情况与每个节点的运行状况和性能相关。改进指标的相关配置更改也可能会对内存分配和使用产生负面影响,因此记住从整体上查看系统运行状况非常重要。监视节点的CPU使用情况并查找峰值有助于识别节点中的低效进程或潜在问题。CP

2020-11-17 17:26:17 3529

原创 深入Prometheus设计

本次读后感来自于《深入浅出Prometheus:原理、应用、源码与拓展详解》书籍链接https://item.jd.com/12573580.html一 指标含义Prometheus的所有监控指标(Metric)被统一定义为go_memstats_alloc_bytes{instance="localhost:9090",job="prometheus"}指标定义涉及指标名称和标签这两部分1.指标名称(metric name)指标名称用于说明指标的含义,例如http_request_tot

2020-11-16 22:06:49 918

原创 Python爬虫之XPath语法和lxml模块

一 XPath1.简介xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历。2.工具Chrome插件XPath Helper。Firefox插件Try XPath。3.XPath语法(1)选取节点XPath 使用路径表达式来选取 XML 文档中的节点或者节点集。这些路径表达式和我们在常规的电脑文件系统中看到的表达式非常相似。表达式描述示例结果nodename选取此节点的所有

2020-11-14 08:36:52 987

原创 Python爬虫之requests库

虽然Python的标准库中 urllib模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests宣传是 “HTTP for Humans”,说明使用更简洁方便。一 安装利用pip可以非常方便的安装:pip install requests文档地址中文文档:http://docs.python-requests.org/zh_CN/latest/index.htmlgithub地址:https://github.com/requests/reques

2020-11-12 07:31:46 441

原创 Python爬虫之ulib库

urllib库是Python中一个最基本的网络请求库。可以模拟浏览器的行为,向指定的服务器发送一个请求,并可以保存服务器返回的数据。一 urlopen函数在Python3的urllib库中,所有和网络请求相关的方法,都被集到urllib.request模块下面了,以先来看下urlopen函数基本的使用:from urllib import requestresp = request.urlopen('http://www.baidu.com')print(resp.read())实际上,使.

2020-11-11 22:34:19 1284

原创 开源监控工具的对比

一 Zabbix1.简介Zabbix是由Alexei Vladishev开源的分布式监控系统,支持多种采集方式和采集客户端,同时支持SNMP、IPMI、JMX、Telnet、SSH等多种协议,它将采集到的数据存放到数据库中,然后对其进行分析整理,如果符合告警规则,则触发相应的告警2.核心理念◎ 主机(Host):是Zabbix监控的对象抽象,每个监控对象都有一个IP地址,这里的主机不仅限于物理服务器,可能是虚拟机容器或者某个网络设备。◎ 主机组(Host Group):是一组主机的集合,主要用于多

2020-11-11 12:48:24 1162

原创 我们需要监控什么(深入浅出Prometheus读后感)

本次读后感来自于《深入浅出Prometheus:原理、应用、源码与拓展详解》书籍链接https://item.jd.com/12573580.html一.简介从程序设计的角度来看,可以将监控分为基础资源监控、中间件监控、应用程序监控和日志监控每种监控都涉及不同的监控指标,并使用了不同的数据采集方式。要做到全栈监控,我们还需要不断加强开发能力并积累运维经验。虽然当前有很多开源监控项目能够帮助企业迅速搭建监控系统,但在选择开源监控项目时需要保持谨慎,优先选择社区活跃度较高、落地案例较多、容易扩展

2020-11-10 23:15:07 552 1

原创 Prometheus监控Redis-Cluster

一 安装Prometheus我们需要对prometheus的数据目录跟配置文件目录做持久化并且设置数据删除时间90天,至于数据目录挂在可以提前copy出来一份docker run -d --name=prometheus -v /opt/prome/conf/prometheus:/etc/prometheus -v /opt/prome/data/prometheus:/prometheus -p 9090:9090 prom/prometheus --config.file=/etc/pro

2020-11-10 18:42:12 984

原创 Python爬虫之前奏

一 爬虫的实际例子搜索引擎(百度、谷歌、360搜索等)。伯乐在线。惠惠购物助手。数据分析与研究(数据冰山知乎专栏)。抢票软件等。二 什么是网络爬虫通俗理解:爬虫是一个模拟人类请求网站行为的程序。可以自动请求网页、并数据抓取下来,然后使用一定的规则提取有价值的数据。专业介绍:百度百科。三 通用爬虫和聚焦爬虫通用爬虫:通用爬虫是搜索引擎抓取系统(百度、谷歌、搜狗等)的重要组成部分。主要是将互联网上的网页下载到本地,形成一个互联网内容的镜像备份。聚焦爬虫:是面向特定需求的一种网络爬虫程

2020-11-10 12:41:51 240

原创 安装Grafana以及安装部分插件

使用容器搭建Grafana 并且对接阿里云的日志系统以及aws的cloud watch一 搭建1.前情介绍首先我们要知道Grafana如果容器化部署我们需要持久化/etc/grafana配置文件路径以及/var/lib/grafana 数据目录路径2.容器部署以及copy文件我们需要吧grafana的文件首先copy至宿主机目录然后在容器化部署并且挂在hostpathdocker run -d --name=grafana -p 3000:3000 grafana/grafana:7.3.1

2020-11-09 17:37:17 4096

原创 Python基础进阶之线程

有些时候,比如下载图片,因为下载图片是一个耗时的操作。如果采用之前那种同步的方式下载。那效率肯会特别慢。这时候我们就可以考虑使用多线程的方式来下载图片。一 多线程介绍多线程是为了同步完成多项任务,通过提高资源使用效率来提高系统的效率。线程是在同一时间需要完成多项任务的时候实现的。最简单的比喻多线程就像火车的每一节车厢,而进程则是火车。车厢离开火车是无法跑动的,同理火车也可以有多节车厢。多线程的出现就是为了提高效率。同时它的出现也带来了一些问题。更多介绍请参考:https://baike.baidu.

2020-11-08 11:06:05 230

原创 Python基础进阶之进程

在Python中,可以通过os.fork()创建子进程,但是这种方式只能在linux和unix以及mac下面使用,不能跨平台,所以一般不推荐使用这种方式。使用multiprocessing模块也可以创建多进程,并且这种方式在写起来更加简单,并且支持跨平台。所以一般推荐使用multiprocessing的方式来写多进程的代码。一 什么是进程操作系统在运行过程中,一个程序运行起来就是一个进程。在Python中,多进程编程可以让我们的程序运行效率更高。同一时刻可以做更多的事情。因此多进程编程显得十分..

2020-11-08 10:50:14 150

原创 Python基础进阶之魔术方法(五)——可调用的对象和会话管理以及序列化对象

一 可调用的对象在Python中,一个特殊的魔术方法可以让类的实例的行为表现的像函数一样,你可以调用他们,将一个函数当做一个参数传到另外一个函数中等等。这是一个非常强大的特性让Python编程更加舒适甜美。call(self, [args…])允许一个类的实例像函数一样被调用。实质上说,这意味着x()与 x.call()是相同的。注意__call__参数可变。这意味着你可以定义__call__为其他你想要的函数,无论有多少个参数。例子如下:class Coornidate(object):

2020-11-08 09:53:47 340

原创 Python基础进阶之魔术方法(四)——控制属性的访问和设置以及创建定制的序列

一 控制属性的访问和设置1.__getattr__魔术方法在访问一个对象的某个属性的时候,如果这个属性不存在,那么就会执行__getattr__方法,将属性的名字传进去。如果这个属性存在,那么就不会调用__getattr__方法:class Person(object): def __init__(self,name): self.name = name def __getattr__(self, item): if item == 'age':

2020-11-08 09:39:15 175

原创 Python基础进阶之魔术方法(三)——运算符魔术方法

一 一元操作符和函数pos(self)魔术方法:在这个对象前面使用正号的时候执行的方法。neg(self)魔术方法:在这个对象前面使用负号的时候执行的方法。abs(self)魔术方法:在这个对象上使用abs函数的时候执行的方法。invert(self)魔术方法:在这个对象前面使用~的时候执行的方法。相关的示例代码如下:class Coornidate(object): def __init__(self,x,y): self.x = x s

2020-11-08 09:13:55 290

原创 云原生模式读后感(二)

云原生模式书籍介绍:https://item.jd.com/12704245.html记录一些书中的总结第二部分云原生模式7.应用程序生命周期:考虑不断的变化(1)在云原生环境中,必须考虑应用程序的生命周期,并将它看作单独的逻辑实体,即使每个应用程序实例都有自己独立的生命周期。(2)还必须仔细关注某个应用程序的生命周期事件,看其会如何影响软件中其他的应用程序。(3)只有当一个应用程序的多个实例可以同时支持不同的配置时,才能使用滚动升级的部署方式。否则,必须使用蓝/绿升级的部署方式。两者都可以在零

2020-11-05 18:30:32 1088 2

原创 Python基础进阶之魔术方法(二)——用于比较的魔术方法

有些时候我们想要比较两个对象。比如哪个对象更大,哪个对象更小,两个对象是否相等。如果我们不告诉Python要根据什么方式比较,那么Python是不知道如何比较的。这时候我们就可以实现一些比较的魔术方法来达到我们的需求。__cmp__魔术方法: __cmp__(self,other)这个方法在Python2中可以正常使用。如果self是大于other的,那么应该返回正数,如果self等于other,那么应该返回0,如果self小于other,那么应该返回负数。这个方法只能在Python2中起作用,在Py

2020-11-02 15:33:53 1390

原创 Python基础进阶之魔术方法(一)——常用魔术方法

一 __init__魔术方法初始化class Test(object): def __init__(self): self.name = "aaa" self.age = "bbb" def Name(self): print(self.name) def Age(self): print(self.age)test = Test()test.Age()test.Name()二 __del__魔术方法

2020-11-02 15:05:55 850

K8s学习路线.mmap

kubernetes学习路线主要介绍,所属博客为https://blog.csdn.net/weixin_45413603/article/details/107678496 有什么不足之处可以一起讨论

2020-08-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除