18丨CentOS:操作系统级监控及常用计数器解析(下)
18丨CentOS:操作系统级监控及常用计数器解析(下)
讲述:高楼
时长22:40大小20.70M
I/O
Memory
NetWork
Recv_Q 和 Send_Q
三次握手和四次挥手
System
Swap
总结
思考题
赞 5
提建议
精选留言(23)
- 罗辑思维2020-04-05当操作系统中配置了vm.swappiness是 30%,那么当内存用到1-30%=70%的时候,就会发生 Swap。 高老师,文中对swappiness参数设置值描述跟倪鹏飞老师在专栏讲解有不一样的地方。个人还是认同swappiness不是内存的百分比。下面这段是摘自是倪鹏飞老师《Linux性能分析实战》第19讲。 --------------------------- /proc/sys/vm/swappiness 选项,用来调整使用 Swap 的积极程度。 swappiness 的范围是 0-100,数值越大,越积极使用 Swap,也就是更倾向于回收匿名页;数值越小,越消极使用 Swap,也就是更倾向于回收文件页。 虽然 swappiness 的范围是 0-100,不过要注意,这并不是内存的百分比,而是调整 Swap 积极程度的权重,即使你把它设置成 0,当剩余内存 + 文件页小于页高阈值时,还是会发生 Swap。展开
作者回复: 仔细检查了一下。这个直接说是内存的百分比,确实不够精确。我之前看到过一些文章应该就是直接写的内存使用率百分比。 多谢指正,可以联系我,拿200块钱红包。 在这里更正如下: 在操作系统中,vm.swappiness是用来定义使用swap的倾向性。官方说明如下: swappiness This control is used to define how aggressive the kernel will swap memory pages. Higher values will increase agressiveness, lower values decrease the amount of swap. A value of 0 instructs the kernel not to initiate swap until the amount of free and file-backed pages is less than the high water mark in a zone. The default value is 60. 1. 值越高,则使用swap的倾向性越大。 2. 值越低,则使用swap的倾向性越小。 但这个倾向性是谁跟谁比呢?简单地说,在内存中有anon内存(匿名而链表,分为:inactive/active)和file内存(映射页链表,也分为:inactive/active),而swappiness是定义了对anon页链表扫描的倾向性。在linux源码vmscan.c中有这样的定义: /* * With swappiness at 100, anonymous and file have the same priority. * This scanning priority is essentially the inverse of IO cost. */ anon_prio = swappiness; file_prio = 200 - anon_prio; 也就是说如果swappiness设置为100时,则anon和file内存会同等的扫描;如果设置为0时,则file内存扫描的优先级会高。但是这并不是说设置为了0就没有swap了,在操作系统中还有其他的逻辑使用swap。 以后我会找个时间专门写一下这个逻辑。这里面涉及到几个部分的源代码逻辑,还是有点小复杂。
共 2 条评论19 - 木剑温华2021-08-31一个 TCP 连接大概占 3KB,创建 10 万个连接,才100000x3KB≈300M左右,何况最多才 65535 呢?服务器有那么穷吗? 这里感觉老师说的有一点问题,一个tcp链接由四元组组成:sip:sport---cip:cport,单机最多65535个端口,但是可以根据公式可以看到只影响了sport的数量,但是cip和cport的组合是无穷尽的,所以单机理论最大连接数远大于65535,我之前在iot项目和消息推送项目做过相关的压测,成功地把单机最大长连接数提高到100w以上。展开
作者回复: 这里的描述有问题。我修改一下。 对客户端来说,会受到65535的端口数限制,对服务端来说不受端口数限制。
7 - SeaYang2020-10-27使用Linux服务器作为压力机,TPS达到比较高的时候压力机会大量报无法分配请求地址的错误,从而导致TPS直接降为0,命令看了下TIME_WAIT的数量很多,调整了一下几个内核参数,就解决了
作者回复: 一看就是高手。
3 - 月亮和六便士2020-03-27高老师,看完您的课程,有一些思路了,但是我发现思路和实战之间有一道鸿沟,我已经掉到沟里了,比如 分析的起点拆分响应时间,但是不知道怎么拆分,开发更是一头雾水。应用又是部署在docker里面,好不容易配置了个Tomcat监控,结果重启了一下配置又没了,运维说docker里没法暴露监控端口,真是寸步难行啊
作者回复: 你这个是管理和沟通的问题,和技术无关。docker里当然可以暴露监控端口。 即使不这样,也得有其他的监控docker的手段。 技术角度来说,没有收拾不了的系统。
3 - aoe2020-10-14老师硬核调优!测试、开发、运维后期在操作系统、网络上都这么强了!
作者回复: 性能是一个工程,从前到后。在我的思路中,不受职位限制。只看要达到的目标。哈哈。
2 - 黑脸龙猫酱2020-03-16老师可否说下对于云服务器,io有些时间段不稳定的情况应该如何处理?
作者回复: 云服务器都是虚拟机,如果你是被无良厂商超卖的话,那只能去骂街了。
2 - 悦霖2020-02-18高老师问一下,每次性能测试看io较高基本都是jbd2这个进程占用大量的IO,怎么进一步分析,而且这个jdb2是个啥?
作者回复: 后面文章里会写到它。
2 - David.cui2020-12-03高老师讲的还是很透彻的,能分析到非常细微的差别。 高手!
作者回复: 只有落地才是正道。
1 - 小老鼠2020-02-18由于上下文切换过多引起性能降低的情形多吗?
作者回复: 在我的工作经验中,上下文切换的问题排不到前五名。但是前十名还是有可能的。
1 - jy2022-10-21 来自江苏老师,请教一个问题, 文中:"在我们做性能分析的过程中,基本上,基于上面这个表格就够通过接收和发送判断瓶颈点发生在谁身上了" 感觉这里没说完整呢 比如发送端Send_Q有值,接收端Recv_Q也有值,说明瓶颈点在接收端,那下一步如何分析接收端呢? 比如发送端Send_Q有值,接收端Recv_Q没有值,说明瓶颈点在发送端或者网络设备,这种情况,那下一步又该如何分析发送端呢? 谢谢老师指导。展开
作者回复: 这里只是写判断过程,具体的问题还要有相应的数据才能明确。
- Fzz2022-06-13老师你好,想问下系统tps到顶,系统CPU只有20%,系统相响应时间1秒以下,感觉压力发起端也没有瓶颈,想问下这个瓶颈在哪?看了资源的使用也不高,不知道是不是jvm或者应用的的问题?
作者回复: 你这个问题就比较大了。我需要看到具体的架构,跟着REASR性能分析七步法走一遍才能知道。
共 2 条评论 - 学员1412021-07-10在测试环境压测,发现服务器端口占满了,服务器的端口配置是否需要修改?网上说过大又容易被攻击(我们是docker,一个节点上部署了18个应用,节点主机16C16G,有些应用CPU和内存都分配很小,导致都到一个节点上来)
作者回复: 没看懂这个问题。
共 2 条评论 - 09092021-06-21因为数据来源都是一样的,重要的还是要根据数据去找到瓶颈和优化方案
作者回复: 是的。
- 闲鱼超人2021-02-24监控平台为什么不重要呢? 监控平台的主要用途是为了提供运行时状态数据给我们的,利用这些数据,我们分析性能情况。所以关键是数据、是证据链,是这些数据反馈出来的问题,这是核心。所以从这个角度来说,监控平台是不重要的,因为只要能提供这些你需要的数据,哪个平台都可以。
作者回复: 是的。理解的很对。
- Geek_7cf52a2020-07-10老师我之前说的端口不够用的问题我知道了,听了音频知道老师说的客户端的端口了,不是服务端的,刚开始还以为是服务端的端口
作者回复: 多学习就会知道更多了。
- Geek_7cf52a2020-07-10至于为什么要处理TIME_WAIT,却没几个人能回答得上来。在我的性能工作经验中,只有一种情况要处理TIME_WAIT,那就是端口不够用的时候。TCP/IPv4的标准中,端口最大是 65535,还有一些被用了的,所以当我们做压力测试的时候,有些应用由于响应时间非常快,端口就会不够用,这时我们去处理TIME_WAIT的端口,让它复用或尽快释放掉,以支持更多的压力。所以处理TIME_WAIT的端口要先判断清楚,如果是其他原因导致的,即使你处理了TIME_WAIT,也没有提升性能的希望。如果还有人说,还有一种情况,就是内存不够用。我必须得说,那是我没见过世面了,我至今没见过因为TIME_WAIT的连接数把内存耗光了的。一个 TCP 连接大概占 3KB,创建 10 万个连接,才100000x3KB≈300M左右,何况最多才 65535 呢?服务器有那么穷吗? -----来自原文 老师你好,你上面说的端口不够用的时候处理time_wait是不是有问题?应该是连接不够用才对吧?一个应用在一开始就指定了具体的tcp端口,端口是不会变的,只有连接数才会不断的增多展开
作者回复: 看另一个留言,你已经自学解决了。哈哈。
- 小呀么小二郎2020-04-12今日思考题 为什么说用什么监控平台并不重要呢? 监控平台再花哨,都只是提供数据来给性能测试人员分析的。作为性能测试人员,重点是要知道数据的来源、原理、含义。 知易行难,信息量好大。一节课够学一个月系列……展开
作者回复: 不操作确实不知道有多难。但是一步步走是必须经历的过程,实在是没有什么捷径可走。最多看着别人走过的路知道是可行的。
- 月亮和六便士2020-04-07老师,怎么查看端口够用不够用,或者说端口用了多少?Linux系统的命令是什么,window系统的命令是什么?
作者回复: 都是netstat。
- 蔡森冉2020-03-23平台就像是每个人用着不同品牌手机都用着差不多的功能。老师现在使用着云平台,平台上就会有一个监控模块,公司应用都是在云服务器上,那是否我只用在服务器提供商上的这个监控模块看就可以了?
作者回复: 工具无所谓只要提供相应的计数器能看懂就可以了。
- 小老鼠2020-02-18在固态硬盘中还存在扇区与磁道吗?
作者回复: 不存在。