Docker中应用的性能调优指南(一)- 先谈谈容器化性能调优
前言
性能调优的“望闻问切”
容器化性能调优的难点
- VM级别的调优方式在容器中实现难度较大
在VM级别我们看到的即是所有,网络栈是完整暴漏在我们面前的,CPU、内存、磁盘等也是完全没有限制的。性能调优老司机的工具箱安个遍,诊断流程走一趟基本问题就查个八九不离十了,但是在容器中,很多时候,都是默认不自带诊断、调优工具的,很多时候连ping或者telnet等等基础命令都没有,这导致大部分情况下我们需要以黑盒的方式看待一个容器,所有的症状只能从VM层的链路来看。但是我们知道容器通过namespace的隔离,具备完整网络栈,CPU、内存等通过隔离,只能使用limit的资源,如果将容器当做黑盒会导致很多时候问题症状难以快速发现。排查问题的方式变难了。 - 容器化后应用的链路边长导致排查问题成本变大
容器的场景带来很多酷炫的功能和技术,比如故障自动恢复,弹性伸缩,跨主机调度等等,但是这一切的代价是需要依赖容器化的架构,比如Kubernetes网络中需要FullNat的方式完成两层网络的转发等等,这会给排查问题带来更复杂的问题,当你不清楚编排引擎的架构实现原理的时候,很难将问题指向这些平时不会遇到的场景。例如上面这个例子中,FullNat的好处是降低了网络整体方案的复杂性,但是也引入了一些NAT场景下的常见问题,比如短连接场景中的SNAT五元组重合导致包重传的问题等等。排查问题的方位变大了。 - 不完整隔离带来的调优复杂性
容器技术本质是一种虚拟化技术,提到虚拟化技术就离不开隔离性,虽然我们平时并不需要去考虑隔离的安全性问题,但是当遇到性能调优的时候,我们发现内核的共享使我们不得不面对的是一个更复杂的场景。举个,由于内核的共享,系统的proc是以只读的方式进行挂载的,这就意味着系统内核参数的调整会带来的宿主机级别的变更。在性能调优领域经常有人提到C10K或者C100K等等类似的问题,这些问题难免涉及到内核参数的调整,但是越特定的场景调优的参数越不同,有时会有彼之蜜糖,我之毒药的效果。因此同一个节点上的不同容器会出现非常离奇的现象。
- 不同语言对cgroup的支持
这个问题其实大多数场景下我们是不去考虑的,但是在此我们把他列在第四位的原因是期望能够引起大家的重视。一次在和OracelJava基础库的负责同学聊天中了解到Java针对与Cgroup的场景做了大量的优化,而且时至今日,在Java的标准库中对于Cgroup的支持还是不完全的,好在这点在大多数的场景中是没有任何影响,也就不过多的讨论。排查问题的脑洞更大了。
- 网络方案不同带来的特定场景的先天缺欠
提到容器架构我们逃不掉的话题是网络、存储和调度,网络往往是一个容器架构好坏的最根本的评判标准,不同的网络方案也会有不同的实现方式与问题。比如在阿里云的Kubernetes中我们使用了Flannel的CNI插件实现的网络方案,标准Flannel支持的Vxlan的网络方案,Docker的Overlay的macVlan,ipvlan的方案等等。这些不同的网络方案无一例外都是分布式的网络方案而存储的数据都会存放在一个中心存储中,因此越大型的集群对网络中心存储的压力也就越大,出错的可能性就越大。此外跨宿主机的二层网络很多都会通过一些封包解包的方式来进行数据传输,这种方式难免会增加额外的系能损耗,这是一种先天的缺欠,并不是调优能够解决的问题。有的时候排查出问题也只能绕过而不是调优。
最后
这篇文章中我们主要讨论了基础的性能调优的方式以及容器化场景中性能调优的难点,在下篇文章中我们会来套路下不同的性能瓶颈现象对应的诊断和调优方法。
Docker中应用的性能调优指南(一)- 先谈谈容器化性能调优的更多相关文章
- 《linux性能及调优指南》 3.5 网络瓶颈
3.5 Network bottlenecks A performance problem in the network subsystem can be the cause of many prob ...
- 在Docker中安装和部署MongoDB集群
此文已由作者袁欢授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 在Docker中安装mongodb 采用的mongodb镜像:https://registry.hub.doc ...
- <Linux性能调优指南>主要思路流程
网上IBM很早放出的一本免费电子书, 十来年了,参考意义还是很大. 国内有翻译成中文在线阅读的版本. 见如下两个URL Linux Performance and Tuning Guidelines ...
- Java性能优化权威指南-读书笔记(五)-JVM性能调优-吞吐量
吞吐量是指,应用程序的TPS: 每秒多少次事务,QPS: 每秒多少次查询等性能指标. 吞吐量调优就是减少垃圾收集器消耗的CPU周期数,从而将更多的CPU周期用于执行应用程序. CMS吞吐调优 CMS包 ...
- 《Linux 性能及调优指南》写在后面的话
感谢飞哥的翻译. 目前飞哥 (http://hi.baidu.com/imlidapeng)的网址已经不能访问了. <Linux 性能及调优指南>这本书的原文地址:http://www.r ...
- ElasticSearch中的JVM性能调优
ElasticSearch中的JVM性能调优 前一段时间被人问了个问题:在使用ES的过程中有没有做过什么JVM调优措施? 在我搭建ES集群过程中,参照important-settings官方文档来的, ...
- 调优 | Apache Hudi应用调优指南
通过Spark作业将数据写入Hudi时,Spark应用的调优技巧也适用于此.如果要提高性能或可靠性,请牢记以下几点. 输入并行性:Hudi对输入进行分区默认并发度为1500,以确保每个Spark分区都 ...
- xgboost 参数调优指南
一.XGBoost的优势 XGBoost算法可以给预测模型带来能力的提升.当我对它的表现有更多了解的时候,当我对它的高准确率背后的原理有更多了解的时候,我发现它具有很多优势: 1 正则化 标准GBDT ...
- 直通BAT必考题系列:JVM性能调优的6大步骤,及关键调优参数详解
JVM内存调优 对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数. 1.Full GC 会对整个堆进行整理,包括Young.Tenured和Perm.Full GC因为需要对 ...
- Spark调优指南
Spark相关问题 Spark比MR快的原因? 1) Spark的计算结果可以放入内存,支持基于内存的迭代,MR不支持. 2) Spark有DAG有向无环图,可以实现pipeline的计算模式. 3) ...
随机推荐
- [转]【Qt-license】误操作qt下载导致只能安装商业版试用十天,无法安装社区版
背景:原本是为了学习qml,需要下载一个design studio,而这个需要比较新版的安装程序,但新版的安装程序官方都是online安装.于是从官网找下载链接.毕竟是英文的,又心急,误打误撞中我选择 ...
- C#中使用ping命令测试远程主机网络通信是否正常
说明,使用ping工具 1.可以用来查询域名是否可以访问 2.可以用来查询域名对应的ip地址 如果远程服务器允许ping命令的前提下. 解决思路:主要使用了C#提供的Ping类,效率比较高,相应快 程 ...
- OpenCL入门笔记
1.概述 1.1.OpenCL标准 OpenCL(Open Computing Language)是一个开放标准的并行编程框架,它允许开发者在异构系统上利用各种计算设备(例如CPU.GPU.FPGA等 ...
- 利用Linq Skip() Take()分页
private void TestPostData() { string all = ""; List<int> listTimeCard = new List< ...
- Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2)
题目链接:Codeforces Round 959 sponsored by NEAR (Div. 1 + Div. 2) 总结:Bwa两发,C读假题.发挥很一般,补题感觉到E都是能做的,红温. A. ...
- Django项目实战:配置 setting.py
Django项目实战:配置 setting.py Django项目的配置主要通过settings.py文件完成.这个文件位于项目的根目录下(与manage.py同级).为了让你的应用更加本地化,你可能 ...
- 关于SpringBoot的测试类中运行时报空指针异常
1. 首先给出我所遇到的问题源代码 一直会报错 java.lang.NullPointerException: Cannot invoke "com.course.rainngcourseb ...
- 7.1 闲话-Erdős–Gallai 定理和哈基米算法
Erdős–Gallai 定理 前几天考试有一个建出最大流模型,转为最小割,然后模拟最小割的套路. 这一个套路并不是少见的.在 Gale-Ryser 定理和 Erdős–Gallai 定理的证明都体现 ...
- 在table中tr的display:block显示布局错乱问题
参考链接:https://blog.csdn.net/zj853975468/article/details/51554054?utm_medium=distribute.pc_relevant_do ...
- HTTP协议与RESTful API实战手册(二):用披萨店故事说透API设计奥秘 🍕
title: HTTP协议与RESTful API实战手册(二):用披萨店故事说透API设计奥秘 date: 2025/2/27 updated: 2025/2/27 author: cmdragon ...