服务器cpu位置,服务器CPU满载,谁之过?

news/2024/11/15 4:34:55/

01 运维口水战

某天,突如其来的问题发生了,面向互联网用户的一套业务系统中的某台Web服务器出现的异常,CPU跑满了。大量的用户页面非常慢,有时甚至访问不了。对于运维人员来说,犹如晴天霹雳。

网络运维人员迅速检查到该服务器经过的各个网络设备的运行情况,网络设备都运行正常,到服务器的流量也不大。并且,同一区域的其它服务器运行也是正常的。网络运维人员初步结论:应该不是网络原因造成的,让应用运维人员检查一下软件运行情况吧。

与此同时,应用运维人员检查了程序的运行日志,程序也没有运行异常,只是发现程序在处理大量的tcp连接。应用运维人员让网络运维人员查一下,这些大量访问服务器的tcp连接是哪里过来的。

网络运维人员在负载均衡设备上查看了该服务器的并发tcp连接是挺大的,但是无法深入找出是哪些客户端发起的tcp连接。因为这个服务器是面向互联网的应用,网络运维人员初步判断,有可能是互联网的DDOS攻击导致的。现有的网络安全防护水平,还无法清洗这些DDOS流量。

最终,运维组之间陷入了僵局,业务系统处于异常状态已经快一天了。

02 神州灵云NetSensor登场

根据问题的症状,神州灵云技术顾问建议部署以下流量采集点。分别在互联网入口、负载均衡前后、防火墙前后以及服务器上联的位置同时进行流量采集。

51f2af7f4d125f6e3d4f97f79ecf4dc0.png

图1:部署拓扑

部署说明:

抓包接口1:硬件探针的接口1是接入互联网流量到F5负载均衡设备入口的镜像流量,F5与互联网接入交换机直接是Trunk端口,可以通过Vlan ID区分出电信、联通、移动的流量。

抓包接口2:硬件探针的接口2是接入防火墙与互联网接入交换机的互联链路镜像流量。

抓包接口3:硬件探针的接口2是接入防火墙与核心接入交换机的互联链路镜像流量。

抓包接口4:硬件探针的接口4是接入关键数据库服务器的进行流量。

公网用户访问web应用交互逻辑:

34fa794829ecb444cccb02a768561e4e.png

公网用户访问58.xxx.224.12的80端口,F5做了源IP地址的转换。公网IP访问这个58.xxx.224.12时,F5将所有的会话转换为172.xxx.0.97去访问内网web服务器172.xxx.199.9

03 专家分析

流量与并发连接数对比分析:

对这个web应用,在F5前端和防火墙前端的抓包接口进行流量速率和并发连接数对比发现,互联网访问到这个web服务器经过F5前和防火墙前的流量分别是0.76Mbps和0.38Mbps。从流量上看,访问这台服务器的流量非常小,导致服务器CPU利用率100%应该不是流量因素造成的。

从F5前端和防火墙前端的并发连接数上看,互联网进来的并发连接数在10:31分时为54个,而在防火墙前端的并发连接数为22832个。同一应用的前后端抓包口的并发量相差巨大。进入“流量精分”进行深度分析。

0c59f20835c224aee37d31feea50e3a9.png

深度分析:

查询10:06-11:06这一个小时,172.xxx.0.97访问172.xxx.199.9的tcp会话清单发现,172.xxx.0.97与172.xxx.199.9产生了64155条tcp会话,而这些TCP会话的总流量都是几KB。从tcp会话总流量上看,肯定不是一个正常的业务交互的流量范围。

c2535fb2e2f954762a6ed76708079c9c.png

选择一个tcp会话,进行解码分析发现,172.xxx.0.97与172.xxx.199.9的tcp会话只是建立了三次握手后中断了,没有数据交互。因此判断这些tcp会话应该是F5的健康检查数据包,但是这样高并发的健康检查肯定是一个异常的行为。

a5164d225b99dacdb95c4861f428982e.png

解决方法:

在F5上修改了对这台web服务器的健康检查策略后,问题解决。从发现问题到找出问题只花了5分钟。

04 优化建议

通过这次F5健康检查异常所发现的问题不单单是F5的健康检查机制的bug,最终导致的一个F5作为攻击源发起的TCP全连接攻击。这也是对web服务器的一个压力测试。通过数据包解码分析发现,F5向web服务器建立了tcp连接后,F5不传输任何应用数据包时,服务器是在将近10分钟内把这个会话Reset掉的。

Web服务器10分钟内的无应用数据交互的TCP会话断开时间太长了,需要做一下调优,尽量把这个超时时间缩短。

166ff21705055898d73b9cfc301ac683.png

80ed1a54725d070a4d45aff97c00ad8a.png

95e86b7a6426cb750e171a0f36650733.png

举报/反馈


http://www.ppmy.cn/news/491554.html

相关文章

ERROR日志打印导致CPU满载

描述 开发环境对一台测试节点进行压测时,由于参数配置错误导致请求没有业务处理直接报错。随即停止压测后登录测试机器排查日志,以外发现虽然已经没有请求到该节点,但应用依然在打印错误日志,并且看日志时间是在打印几分钟前请求…

用Python实现Linux系统占用指定内存,CPU满载

背景 提出两个需求 占满系统CPU占用大内存 通过上网查资料,做实验使用Python实现了上述两个需求。 先看效果 执行前 内存 CPU 执行后 内存 CPU 代码实现 环境说明:代码使用Python3实现 #! /user/bin/env python # -*- encoding: utf-8 -*- import…

如何模拟FullGC导致CPU满载问题

系列文章目录 第一章 如何保证多个线程的顺序执行? 第二章 如何排查线上环境内存使用过大? 第三章 如何模拟FullGC导致CPU满载问题? 文章目录 前言排查故障一、构建模拟环境二、Java VisualVM查看在命令行输入,启动VisualVM安装…

什么软件测试cpu满载,截然相反!CPU满载压力测试

CPU满载压力测试 本项目采用ORTHOS软件使核心达到满载状态,模拟极端使用环境(运行大型游戏、软件时常会出现CPU满载的现象)。 Intel Core i5 2300满载运行6分钟后温度88℃ Intel Core i5 2300满载运行6分钟后CPU倍频会被自动减低至17x,CPU的主频为1.7GHz,相信是Intel的过热保…

python cpu_python 让cpu满载

python 让cpu满载 发布时间:2018-07-29 17:25:11编辑:admin阅读(5939) 搞zabbix监控的时候,linux服务器的负载很低,如何写一个python脚本,让它满载呢? 网上搜了一堆,发现各种不靠谱。后来终于发…

电脑cpu莫名占用满的解决方法有哪些呢?

cpu占用率高导致电脑卡的头疼。win10电脑CPU占用率高的原因很多,可能是某个程序占用率大,或者是某个系统服务所致,又或者是系统BUG导致。 更多重装系统教程尽在小白系统重装官网 ​ 方法一、结束进程 1、同时按下Ctrl、Alt和Del键。弹出操作…

数据库CPU满载如何处理

当数据库CPU满载时,我们首先要做的是让CPU降下来,优先保证系统的可用性。 什么情况会导致数据库CPU飙升呢? QPS过高: 高并发,也就是数据库承载的流量过大。慢SQL: 少量或大量慢SQL占用CPU资源&#xff0c…

Python数据类型转换函数大全

虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。 比如说,我们想通过使用 print() 函数输出信息“您的身高:”以及浮点类型 hei…