十几万连接几M的流量,吓死“宝宝”了

2024-05-26 07:18

本文主要是介绍十几万连接几M的流量,吓死“宝宝”了,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    某局点升级(nginxats,同时去掉前端的nginx负载层),升级之后服务就不正常,硬生生的看着十几万连接,没有流量,各种排错,可谓是把心提到嗓子眼惊心动魄的半小时,虽然做了很好的业务机制,服务不正常用户可以直接回源,不过对于我们的流量而言肯定是个锯齿了,回顾一下排查过程。

    升级过程不说了,升完后对业务配置、健康心跳、磁盘设置、本地回源DNS简单做了检查,没发现问题。接下来就是切流量过来,前端的DNS按照域名哈希将请求分发过来,流量迅速到了100M还在上升,连接数到了几万(域名质量不好,很多动态的,所以也算正常),但过了几分钟流量骤降,一直降到了几M,观察连接数没降反升,内存几乎吃满。


wKiom1bzhJfwm1sBAAAsIR0QP0A921.png

(当前连接数)


wKioL1bzgkjyVlEsAAEHV57jF6I206.png

(进出流量及cpu、内存、tcp重传1秒刷新动态监控图,内存越跑越满,tcp重传越来越高)


    神经马上紧张起来了,先检查DNS是否正常,因为本地回源DNS如果坏掉,会出现这种攒了大量连接无法服务的情况,然而测试发现本地回源DNS服务正常,看来不是简单问题,crt打开多个窗口,开始监测:

    tailf /var/log/messages |grep kernel   没有报错,系统层面应该没什么问题。

    tailf /opt/ats/var/log/trafficserver/diags.log 没有明显报错,只是过一段时间会提示连接太多,丢弃连接,说明业务肯定是不正常了,不过定位不了是哪里的错误。

    tstop打开后查看整体的情况,发现正常刷新,但是每次刷新有些数据不能正常显示,内存缓存和硬盘缓存的容量都没有显示,为什么没有显示呢,是设置错误了么,然后再去检查磁盘设置,发现records.config内存缓存设置为内存的一半12Gstorge.config设置也没问题,继续检查。

    tsar –l 1  监测,磁盘IO都为0,所有的盘都不写盘,于是想到底是因为没有流量导致不写盘的,还是写不了盘导致没有流量的呢,先假设不写盘才没流量的吧,不写盘有两种情况一是盘坏了二是磁盘的权限不对,马上检查,发现所有的数据盘拥有者所有组均为tserver,而且检查了全为裸盘,貌似没有问题。


wKioL1bzgOvy604gAAAljucCoO4099.png

(权限查看后发现没问题)


    tsar –n  1 继续检查下历史数据,发现ats启动的瞬间是有流量的,紧接着流量骤降,而且磁盘刚开始是有IO的,越来越怀疑是硬盘问题但没有证据。后来想,做个测试,干脆不用硬盘,直接上内存,竟然有流量了,而且相对稳定,终于定位出问题了。


wKiom1bzgpTAuPmbAAAUDvZiyCk305.png

(将盘全部注释掉) 


    继续想,难道所有的硬盘都坏了么,加入一个硬盘试试吧,依旧不行,继续想下去,为什么tstop计算不出缓存呢,于是列出所有磁盘的大小,发现这个局点的每块磁盘居然有将近2T左右,图如下:


wKiom1bzgwngG7MEAABZKBOUChY464.png

(只有一个盘是186.5G,其余的盘都在2T)


    继续想可能是磁盘太大了,ats无法加入进来吧,于是更改使用磁盘的大小(300G),重启ats,问题解决,松了一口气,惊心动魄半小时。


wKioL1bzhAaizEQhAAA_rtsnjqs045.png

(磁盘大小配置更改,直接指定大小)


wKioL1bzhETygkZ3AAEwkHWwINY058.png

(更改重启后,业务恢复正常)


本文出自 “奔跑的linux” 博客,请务必保留此出处http://benpaozhe.blog.51cto.com/10239098/1754683

这篇关于十几万连接几M的流量,吓死“宝宝”了的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1003797

相关文章

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

Nginx如何进行流量按比例转发

《Nginx如何进行流量按比例转发》Nginx可以借助split_clients指令或通过weight参数以及Lua脚本实现流量按比例转发,下面小编就为大家介绍一下两种方式具体的操作步骤吧... 目录方式一:借助split_clients指令1. 配置split_clients2. 配置后端服务器组3. 配

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

SQL 中多表查询的常见连接方式详解

《SQL中多表查询的常见连接方式详解》本文介绍SQL中多表查询的常见连接方式,包括内连接(INNERJOIN)、左连接(LEFTJOIN)、右连接(RIGHTJOIN)、全外连接(FULLOUTER... 目录一、连接类型图表(ASCII 形式)二、前置代码(创建示例表)三、连接方式代码示例1. 内连接(I

java如何通过Kerberos认证方式连接hive

《java如何通过Kerberos认证方式连接hive》该文主要介绍了如何在数据源管理功能中适配不同数据源(如MySQL、PostgreSQL和Hive),特别是如何在SpringBoot3框架下通过... 目录Java实现Kerberos认证主要方法依赖示例续期连接hive遇到的问题分析解决方式扩展思考总

Python中连接不同数据库的方法总结

《Python中连接不同数据库的方法总结》在数据驱动的现代应用开发中,Python凭借其丰富的库和强大的生态系统,成为连接各种数据库的理想编程语言,下面我们就来看看如何使用Python实现连接常用的几... 目录一、连接mysql数据库二、连接PostgreSQL数据库三、连接SQLite数据库四、连接Mo

oracle如何连接登陆SYS账号

《oracle如何连接登陆SYS账号》在Navicat12中连接Oracle11g的SYS用户时,如果设置了新密码但连接失败,可能是因为需要以SYSDBA或SYSOPER角色连接,解决方法是确保在连接... 目录oracle连接登陆NmOtMSYS账号工具问题解决SYS用户总结oracle连接登陆SYS账号

VScode连接远程Linux服务器环境配置图文教程

《VScode连接远程Linux服务器环境配置图文教程》:本文主要介绍如何安装和配置VSCode,包括安装步骤、环境配置(如汉化包、远程SSH连接)、语言包安装(如C/C++插件)等,文中给出了详... 目录一、安装vscode二、环境配置1.中文汉化包2.安装remote-ssh,用于远程连接2.1安装2

关于rpc长连接与短连接的思考记录

《关于rpc长连接与短连接的思考记录》文章总结了RPC项目中长连接和短连接的处理方式,包括RPC和HTTP的长连接与短连接的区别、TCP的保活机制、客户端与服务器的连接模式及其利弊分析,文章强调了在实... 目录rpc项目中的长连接与短连接的思考什么是rpc项目中的长连接和短连接与tcp和http的长连接短