我们知道Pod看似复杂的API对象,实际上就是对容器的进一步抽象和封装而已。“容器”镜像虽然好用,但是容器这样一个“沙盒”的概念,对于描述应用来说,还是太过简单了。就好比,集装箱固然好用,但是如果它四面都光秃秃的,吊车还怎么把这个集装箱吊起来并摆放好呢?因此,Pod对象,其实就是容器的升级版。它对容器进行了组合,添加了更多的属性和字段。这就好比给集装箱四面安装了吊环,使得 Kubernetes 这
一、VolumePod作为 Kubernetes 项目里最核心的编排对象,Pod 携带的信息非常丰富。其中,资源定义(比如 CPU、内存等),以及调度相关的字段,本文从volume入手,深入理解Pod对象各个重要字段的含义。Volume,叫作Projected Volume,可以把它翻译为“投射数据卷”。(kubernetes v1.11之后的新特性)在 Kubernetes 中,有几种特殊的 V
我们知道,Pod是kubernetes项目中最小的编排单位,而不是容器。将这个设计落实到API对象上,容器(Container)就成了 Pod 属性里的一个普通的字段。那么,到底哪些属性属于 Pod 对象,而又有哪些属性属于 Container 呢?Pod其实扮演的是传统部署环境里“虚拟机”的角色。这样的设计,是为了使用户从传统环境(虚拟环境)向kubernetes(容器环境)的迁移,更加平滑。如
一、为什么是PodPod,是Kubernetes 项目中最小的 API 对象;是 Kubernetes 项目的原子调度单位。在探讨为什么k8s需要pod这个问题时,需要回忆一下,容器的本质到底是什么?容器的本质是进程。就是云计算系统中的进程,然而容器镜像就是这个系统里的安装包。那么kubernetes呢?其实kubernetes就是操作系统。登录一台Linux机器,执行如下命令:$ pstree
一、性能指标描述I/O的性能指标有哪些呢?可以回想下文件系统和磁盘I/O的原理,结合下面这张Linux系统的I/O栈图复习下。二、文件系统I/O性能指标我们先来看文件系统的情况。首先,最容易想到的是存储空间的使用情况,包括容量、使用量以及剩余空间等。我们通常也称这些为磁盘空间的使用量,因为文件系统的数据最终还是存储在磁盘上。不过要注意,这些只是文件系统向外展示的空间使用,而非在磁盘空间的真实用量,
案例:分析利用Redis作为缓存的案例,一个基于 Python Flask 的应用程序,它提供了一个 查询缓存的接口,但接口的响应时间比较长,并不能满足线上系统的要求。一、案例准备案例环境:Ubuntu 18.04,同样适用于其他的Linux系统机器配置:2CPU、8GB内存预先安装docker、sysstat等工具,如apt install docker.io sysstat本案例由p
在实际应用中,大量数据肯定是要存入数据库的,而不会直接用文本文件的方式存储。不过,数据库也不是万能的。当数据库出现性能问题时,又该如何分析和定位它的瓶颈呢?本文分析一个数据库的案例。这是一个基于 Python Flask 的商品搜索应用,商品信息存在 MySQL 中。这个应用可以通过 MySQL 接口,根据客户端提供的商品名称,去数据库表中查询商品信息。一、案例准备案例环境:Ubuntu 18.
实验案例:一个基于 Python Flask 框架的 Web 应用,它提供了一个查询单词热度的 API,但是 API 的响应速度并不让人满意。一、案例准备案例环境:Ubuntu 18.04,同样适用于其他的Linux系统机器配置:2CPU、8GB内存预先安装docker、sysstat等工具,如apt install docker.io sysstat将应用打包成镜像,方便运行。本案例需要
问题:在碰到文件系统和磁盘的 I/O 问题时,具体应该怎么定位和分析呢?一、案例准备案例环境:ubuntu 18.04,同样适用于其他Linux系统机器配置:2 CPU,8GB 内存预先安装 docker、sysstat 等工具,如 apt install docker.io sysstat此案例,是用了一个Python开发的小应用,为了方便运行,打包了一个Docker镜像。接下来,打开一
掌握了磁盘 I/O 的工作原理,怎么才能衡量磁盘的 I/O 性能?一、磁盘性能指标说到磁盘性能的衡量标准,必须要提到五个常见指标,也就是我们经常用到的,使用率、饱和度、IOPS、吞吐量以及响应时间等。这五个指标,是衡量磁盘性能的基本指标。使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。饱和度,是指磁盘处理 I/O 的繁忙程度。过
在Linux文件系统是怎么工作的?中讲了Linux文件系统的工作原理。目录项是一个内存缓存;而超级块、索引节点和逻辑块,都是存储在磁盘中的持久化数据。那么,磁盘是怎么工作的呢?又有哪些指标可以用来衡量它的性能呢?一、磁盘磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘。第一类,机械磁盘,也称为硬盘驱动器(Hard Disk Driver),通常缩写为
同 CPU、内存一样,磁盘和文件系统的管理,也是操作系统最核心的功能。磁盘为系统提供了最基本的持久化存储。文件系统则在磁盘的基础上,提供了一个用来管理文件的树状结构。问题:磁盘和文件系统是怎么工作的呢?又有哪些指标可以衡量它们的性能呢?先来看看Linux文件系统的工作原理。一、索引节点的目录项文件系统,本身是对存储设备上的文件,进行组织管理的机制。组织方式不同,就会形成不同的文件系统。请记住最重要
一、内存性能指标为了分析内存的性能瓶颈,首先要知道,怎样衡量内存的性能,也就是性能指标问题。首先,最容易想到的是系统内存使用情况,如:已用内存、剩余内存、共享内存、可用内存、缓存和缓冲区的用量等。已用内存和剩余内存:就是已经使用和还未使用的内存。共享内存:通过 tmpfs 实现,所以它的大小也就是 tmpfs 使用的内存大小。tmpfs 其实也是一种特殊的缓存。可用内存:新进程可以使用的最大内存,
问题:当 Swap 使用升高时,要如何定位和分析呢?一、案例1.1、环境准备案例基于 Ubuntu 18.04,同样适用于其他的 Linux 系统。机器配置:2 CPU,8GB 内存预先安装 sysstat 等工具,如apt install sysstat案例所有命令默认root用户运行1.2、终端运行free,查看swap的使用情况$ free total
问题:当发生了内存泄露时,或者运行了大内存的应用程序,导致系统的内存资源紧张时,系统又会如何应对?内存紧张时,会导致两种可能结果,内存回收和OOM杀死进程。内存资源紧张导致的OOM(Out Of Memory),相对容易理解,指的是系统杀死占用大量内存的进程,释放这些内存,再分配给其他跟需要的进程。内存回收就是系统释放掉可回收的内存。比如缓存和缓冲区。就属于可回收内存。它们在内存管理中,通常被叫做
对于普通进程,看到的是内核提供的虚拟内存,这些虚拟内存还需要通过页表,由系统映射为物理内存。当进程通过malloc()申请虚拟内存后,系统并不会立即为其分配物理内存,而是首次访问时,才通过缺页异常陷入内核中分配内存。对于应用程序来说,动态内存的分配和回收,是既核心又复杂的一个逻辑功能模块。管理内存的过程中,也很容易发生各种各样的事故。如:没正确回收分配后的内存,导致了泄露访问的是已分配内存边界外的
Buffer和Cache的设计目的,是为了提升系统的I/O性能。它们利用内存,充当慢速磁盘与快速CPU之间的桥梁,可以加速I/O访问速度。Buffer和Cache分别缓存的是对磁盘和文件的读写数据。写角度:不仅可以优化磁盘和文件写入,对应用程序也有好处,应用程序可以在数据真正落盘前,就返回去做其他工作。读角度:不仅可以提高那些频繁访问数据的读取速度,也降低了频繁I/O对磁盘的压力。一、环境准备机器
一、free数据的来源Buffer 和 Cache是通过free获取的指标,可以通过man命令查询free的文档,找到对应指标的详细说明,如:执行man freebuffers Memory used by kernel buffers (Buffers in /proc/meminfo) cache Memory used by the p
一、内存映射我们通常所说的内存容量,其实指的是物理内存。物理内存也称为主存,大多数计算机用的主存都是动态随机访问内存(DRAM)。只有内核才可以直接访问物理内存。那么,进程要访问内存时,该怎么办呢?Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。这样,进程就可以很方便地访问内存,更确切地说是访问虚拟内存。虚拟地址空间的内部又被分为内核空间和用户空间两部分,不同字
一、使用perf工具时,看到的是16进制地址而不是函数名?在 CentOS 系统中,使用 perf 工具看不到函数名,只能看到一些 16 进制格式的函数地址。观察perf界面最下面一行,就会发现一个警告信息:Failed to open /opt/bitnami/php/lib/php/extensions/opcache.so, continuing without symbols说明,perf
一、性能优化方法论问题:通过各种性能分析方法,找到引发性能问题的瓶颈后,是不是就要开始优化了呢?在动手之前,可以先思考下几个问题:首先,既然要做性能优化,那要怎么判断它是不是有效呢?特别是优化后,到底能提升多少性能呢?第二,性能问题通常不是独立的,如果有多个性能问题同时发生,你应该先优化哪一个呢?第三,提升性能的方法并不是唯一的,当有多种方法可以选择时,你会选用哪一种呢?是不是总选那个最大程度提升
问题:CPU性能指标那么多,CPU性能分析工具也是一抓一大把,实际工作场景复杂多变,该观察什么指标、选择哪个性能工具呢?一、CPU性能指标问题:描述CPU的性能指标都有哪些?CPU 使用率,也是实际环境中最常见的一个性能指标。平均负载进程上下文切换CPU缓存的命中率1.1、CPU使用率CPU 使用率描述了非空闲时间占总 CPU 时间的百分比,根据 CPU 上运行任务的不同,又被分为用户 CPU、系
中断是一种异步的事件处理机制,用来提高系统的并发处理能力。中断事件发生,会触发执行中断处理程序,而中断处理程序被分为上半部和下半部这两个部分。上班部对应硬中断,用来快速处理中断;下半部对应软中断,用来异步处理上半部未完成的工作。Linux 中的软中断包括网络收发、定时、调度、RCU 锁等各种类型,可以查看 proc 文件系统中的 /proc/softirqs ,观察软中断的运行情况。在 Linux
进程的不可中断状态是系统的一种保护机制,可以保证硬件的交互过程不被意外打断。所以,短时间内的不可中断状态是正常的。当进程长时间处于不可中断状态时,就应该小心,可以使用dstat、pidstat等工具,确认是不是磁盘I/O的问题,进而排查相关的进程和磁盘设备。一、中断中断:是系统用来响应硬件设备请求的一种机制,它会打断进程的正常调度和执行,然后调用内核中的中断处理程序来响应设备的请求。例子1:比如说
一、进程状态当 iowait 升高时,进程很可能因为得不到硬件的响应,而长时间处于不可中断状态。从 ps 或者 top 命令的输出中,你可以发现它们都处于 D 状态,也就是不可中断状态(Uninterruptible Sleep)。top 和 ps 是最常用的查看进程状态的工具,我们就从 top 的输出开始。下面是一个 top 命令输出的示例,S 列(也就是 Status 列)表示进程的状态。从这
问题:当你发现系统的CPU使用率很高的时候,不一定找到对应的高CPU使用率的进程。一、案例分析环境准备&配置本次案例还是基于 Ubuntu 18.04,同样适用于其他的 Linux 系统。机器配置:2 CPU,8GB内存预先安装docker、sysstat、perf、ab 等工具,如apt install docker.io sysstat li
CPU 使用率是单位时间内 CPU 使用情况的统计,以百分比的方式展示。问题:CPU 使用率到底是怎么算出来的?再有,诸如 top、ps 之类的性能工具展示的 %user、%nice、 %system、%iowait 、%steal 等等,它们之间又有什么不同吗?一、CPU使用率Linux 作为一个多任务操作系统,将每个 CPU 的时间划分
一、怎么查看系统的上下文切换情况过多的上下文切换,会把 CPU 时间消耗在寄存器、内核栈以及虚拟内存等数据的保存和恢复上,缩短进程真正运行的时间,成了系统性能大幅下降的一个元凶。1.1、查询工具01【 vmstat - 系统总体 】说明:vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析CPU 上下文切换和中断的次数。比如:# 每隔5秒输出1组
问题:进程在竞争CPU的时候并没有真正运行,为什么会导致系统的负载升高呢? CPU上下文切换就是罪魁祸首一、CPU寄存器和程序计数器(Program Counter PC)1.1、CPU寄存器是CPU内置的容量小,但速度极快的内存。1.2、程序计数器(PC)用来存储CPU正在执行的指令位置、或者即将执行的下一条指令位置。1.3、CPU上下文CPU寄存器和程序计数器,都是CPU在运行任何任务前,必
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号