说透IO多路复用模型_京东云开发者的博客
术实现了用户态和内核态的内存共享,所以性能好,我前期被这个观点误导了好久,后来下来了linux源码,翻了一下,并没有在epoll中翻到mmap的技术点,所以这个观点是错误的。这些错误观点的文章,国内不少,国外也不少,希望大家能审慎抉择,避免被错误带偏。 所以,epoll高性能的根本就是,其高效的文件描述符处理方式加上颇具特性边的缘触发处理模式,以极少的内核态和用户态的切换,实现了真正意义上的高并发。...阅读全文
术实现了用户态和内核态的内存共享,所以性能好,我前期被这个观点误导了好久,后来下来了linux源码,翻了一下,并没有在epoll中翻到mmap的技术点,所以这个观点是错误的。这些错误观点的文章,国内不少,国外也不少,希望大家能审慎抉择,避免被错误带偏。 所以,epoll高性能的根本就是,其高效的文件描述符处理方式加上颇具特性边的缘触发处理模式,以极少的内核态和用户态的切换,实现了真正意义上的高并发。...阅读全文
4、反序链接关系 rev 属性在 HTML4 里有定义,但是它并没出现在 HTML5 里。W3C 决定在 和 元素里重新包含 rev 属性。rev 属性标识当前和反向的链接文档的关系。它已经被包含来支持广泛使用数据结构标记格式,RDFa。 让我们用两个文档来举个例子,每个包含一课程,在它们之间的链接可以使用如下 rel 和...阅读全文
register: join_command_raw - name: set join command set_fact: join_command: "{{ join_command_raw.stdout_lines[0] }}" - hosts: workers become: yes tasks: - name: join cluster shell: "{{ hostvars['master'].join_command }} >> node_joined.txt" args: chdir: $HOME creates: node_joined.txt 这是剧本的作用: 第一个play获取需要在worker节点上运行的join命令。 此命令将采用以下格式: kubeadm join --token...阅读全文
}cgc.evictPodLogsDirectoriescgc.evictPodLogsDirectories 方法会回收所有可回收 pod 以及 container 的 log dir,其主要逻辑为:1、首先回收 deleted 状态 pod logs dir,遍历 pod logs dir /var/log/pods,/var/log/pods 为 pod logs 的默认目录,pod logs dir 的格式为 /var/log/pods/NAMESPACE_NAME_UID,解析 pod logs dir 获取 pod uid,判断 pod 是否处于 deleted 状态,若处于 deleted 状态则删除其 logs dir;2、回收 deleted 状态 container logs 链接目录,/var/log/containers 为 container log 的默认目录,其会软链...阅读全文
Prometheus是否向Cortex发送指标:up{cluster="one"} prometheus_tsdb_head_samples_appended_total{cluster="one"} 要测试HA,我们可以尝试删除Prometheus窗格之一。kubectl delete pod -l app=prometheus,component=server,release=prom-one Grafana图中应该没有数据缺失,因为Cortex将故障转移到另一个实例。清理kubectl delete -f k8s/ helm delete --purge prom-one helm delete --purge prom-two helm delete --purge grafana 使用...阅读全文
influxdb在内存中引入了大量文件,在内存充足时,会占用较多的空间,用于提高程序读取性能。5.SMP与NUMA?cpu硬件体系架构可以分为:SMP(Symmetric Multi-Processor)/UMA(Uniform Memory Access)模式SMP架构,所有的CPU争用一个总线来访问所有内存,优点是资源共享,而缺点是总线争用激烈。 实验证明,SMP服务器CPU利用率最好的情况是2至4个CPUNUMA(Non-Uniform Memory Access)模式NUMA架构引入了node和distance的概念。对于CPU和内存这两种最宝贵的硬件资源, NUMA用近乎严格的方式划分了所属的资源组(node),而每个资源组内的CPU和内存是几乎相等。在influxdb服务器上,查看当前cpu及...阅读全文
消费消息需要紧急处理,可以修改消费端程序,让其将收到的消息快速转发到其他topic(可以设置很多分区),然后再启动多个消费者同时消费新主题的不同分区。 2)由于消息数据格式变动或消费者程序有bug,导致消费者一直消费不成功,也可能导致broker积压大量未消费消息。 此种情况可以将这些消费不成功的消息转发到其它队列里去(类似死信队列,kafka没有死信队列,需要自己写),后面再慢慢分析死信队列里的消息处理问题。 2.1.5 延时队列 kafka没有延时队列,需要自己实现;延时队列存储的对象是延时消息。所谓的“延时消息”是指消息被发送以后,并不想让消费者立刻获取,而是等待特定的时间后,消费者才能获取这个消息进行消费,延时队列的使用场景有很多, 比如 : 1)在订单系统中, 一个用户下单之后通常...阅读全文
通过使用虚拟内存使用共享内存也很简单,系统只需要将各个进程的虚拟内存地址指向系统分配的共享内存地址即可。 SWAP 虚拟内存可以让帮进程”扩充”内存。 我们前文提到了虚拟内存通过缺页中断为进程分配物理内存,内存总是有限的,如果所有的物理内存都被占用了怎么办呢? Linux 提出 SWAP 的概念,Linux 中可以使用 SWAP 分区,在分配物理内存,但可用内存不足时,将暂时不用的内存数据先放到磁盘上,让有需要的进程先使用,等进程再需要使用这些数据时,再将这些数据加载到内存中,通过这种”交换”技术,Linux 可以让进程使用更多的内存。 常见问题 在了解虚拟内存时,我也有过很多的问题。 32位和64位 最常见的就是 32位和64位的问题了。 CPU 通过物理总线访问内存,那么访问地址的范围就...阅读全文
用,容器之间相互隔离,并且能按需分配资源。大大提高了运维效率和资源利用率 架构 Docker使用了 C/S 体系架构,Docker 客户端与 Docker 守护进程通信,Docker 守护进程负责构建,运行和分发 Docker 容器。Docker 客户端和守护进程可以在同一个系统上运行,也可以将Docker客户端连接到远程Docker守护进程。 我们日常在命令行的操作 docker build, docker push, docker pull, docke build 等等操作都是客户端通过 rest api 请求与 Docker 守护进程交互。 实现原理 下面我们就介绍一下 Docker 在实现隔离,资源控制,文件系统等关键部分所采用的的技术 Namespace Linux manaul...阅读全文