一个监控数据的思考-sockets_used

一个,监控,数据,思考,sockets,used · 浏览次数 : 13

小编点评

**监控数据思考** **Socket 和 Sockets_used 的差异** * **socket:**用于网络层通信的编程接口或通信协议。 * **Sockets_used:**用于网络层 Sockets 的监控指标。它表示所有在线的 Sockets 的数量。 **Sockets_used 的含义** Sockets_used 指的是所有与本地计算机通信的 Sockets 的数量。它包括所有与网络服务器、客户端和其他设备进行通信的 Sockets。 **Socket 的主要用途** * **网络层通信:**Socket 允许应用程序在网络上建立连接并进行数据传输。 * **客户端-服务器通信:**Socket 可以用于实现客户端和服务器之间的通信,提供可靠的双向数据传输。 **Sockets_used 的意义** Sockets_used 指的是网络层中与本地计算机通信的 Sockets 的总数。它反映了应用程序如何利用 Sockets 之间的连接数量。 **总结** 监控 `Sockets_used` 的值可以帮助您了解网络层上的 Sockets 之间的连接数量,但它不能用于了解应用程序如何利用 Sockets 之间的连接数量。 **附图** * **网络socket 和 uinx socket 的通信差异** | 特征 | 网络socket | uinx socket | |---|---|---| | 通信协议 | AF_INET | AF_UNIX | | 数据传输 | TCP 和 UDP | 无 | | 建立连接 | 靠请求 | 靠请求和响应 | | 释放连接 | 当应用程序终止连接时 | 当应用程序关闭 Sockets 时释放 |

正文

一个监控数据的思考-sockets_used


背景

最近跟踪一个项目问题.
Grafana的监控了里面有一个tcp的使用监控
CurrEstab 的数据量是:  700-2000 左右
但是同时有一个非常大的: Sockets_used的数据
数据量一般是 CurrEstab的十倍以上.

大家看起来感觉有点模糊, 自己之前看过不少tcp的内核参数,当时没有注意过 Sockets_used的参数. 
然后想着趁着 早上和晚上的时间学习和整理一下. 

关于Socket通信

Socket是一种用于在计算机网络中进行通信的编程接口或通信协议。
它提供了一种通过网络发送和接收数据的方式,使得不同的计算机之间可以相互通信。
通过使用Socket,应用程序可以在网络上建立连接并进行数据的传输。
Socket通常用于实现客户端和服务器之间的通信,它提供了一种可靠的双向通信机制,使得应用程序可以实时地发送和接收数据。

以上是Wetab 的AIGC的内容.
其实这里的解释非常不准确. 
socket 其实至少分为两类,一类是 网络层的socket通信,还有一种是unix的socket 通信.
网络层的一般需要送 tcp / udp 协议栈 但是unix socket 协议可以直接从内核层进行转发, 不需要TCP/IP协议栈的大量包,数据帧,以及校验和等操作. 

所以很多时候 一台机器上面的网络通信都是走的AF_UNIX 而不是 AF_INET的通信协议栈.

比较只管的一个认识就是 mysql数据库的一个参数配置值.
socket=/var/lib/mysql/mysql.sock

AF_UNIX 的参数值是一个路径, 而不是IP:PORT的内容, 用于本地的通信, 效率高. 

关于sockets_used的数值样例

ss -s 的结果为: 

Total: 1501
TCP:   1397 (estab 805, closed 531, orphaned 0, timewait 530)

Transport Total     IP        IPv6
RAW       1         0         1
UDP       251       246       5
TCP       866       190       676
INET      1118      436       682
FRAG      0         0         0

cat /proc/net/sockstat 的结果为:

sockets: used 1501
TCP: inuse 190 orphan 0 tw 500 alloc 867 mem 84
UDP: inuse 246 mem 2
UDPLITE: inuse 0
RAW: inuse 0
FRAG: inuse 0 memory 0

一个理解

socket分为 unix和inet两类. 

一般total 会比tcp要高一些. 因为有很多内核socket通信
如下是mysql数据库的一个样例:

Total: 982 (kernel 2525)
TCP:   306 (estab 197, closed 64, orphaned 0, synrecv 0, timewait 63/0), ports 0

Transport Total     IP        IPv6
*         2525      -         -
RAW       1         0         1
UDP       11        8         3
TCP       242       65        177
INET      254       73        181
FRAG      0         0         0

可以发现 kernel 的数据最大, Total 比TCP要高三倍. 
很多比较经典的软件, 经常使用unix socket 进行同机器内的 IPC通信. 
如果走TCP/IP协议栈, 性能就会差很多,并且CPU的使用要多耗费很多,并且会收到网卡的一些制约(大部分不需要走物理网卡, 只需要走loopback回环网络)

另外 kernel里面的统计比较粗暴, 只要是有的都会被统计, 不管是不是已经closed.或者是释放了.
所以 kernel的数值是最高的. 高于total . 

总结

Grafana的这个 网络socket连接信息的监控页面其实不是很专业. 

不应该展示 sockets_used的这个数据, 会带来很大的误解. 
网络层的建议仅展示走非loopback网卡的真实物理网卡数据, 这样才可以明确的展示机器的实际网络栈信息. 

TCP核心里面 最关注的几个 其实就是 Estab 连接/半链接以及 time_wait的TCP连接数量信息. 

部分优化也是基于建立/关闭/释放的一些设置来的. 

学习永无止境.

附图-网络socket和uinx socket的通信差异

AF_INET

image


AF_UNIX

image

与一个监控数据的思考-sockets_used相似的内容:

一个监控数据的思考-sockets_used

一个监控数据的思考-sockets_used 背景 最近跟踪一个项目问题. Grafana的监控了里面有一个tcp的使用监控 CurrEstab 的数据量是: 700-2000 左右 但是同时有一个非常大的: Sockets_used的数据 数据量一般是 CurrEstab的十倍以上. 大家看起来感

MySQL自定义函数(User Define Function)开发实例——发送TCP/UDP消息

开发背景 当数据库中某个字段的值改为特定值时,实时发送消息通知到其他系统。 实现思路 监控数据库中特定字段值的变化可以用数据库触发器实现。还需要实现一个自定义的函数,接收一个字符串参数,然后将这个字符传通过udp消息发送到指定端口。 在触发器中执行这个自定义函数并在其他系统中监听指定端口的消息。从而

Thanos解码:打造企业级云原生监控解决方案

本文深入探讨了Thanos技术在云原生监控领域的应用,详细介绍了Thanos的基本概念、核心组件、安装配置步骤以及一个实战案例,帮助读者理解如何利用Thanos解决大规模监控数据的存储、查询和高可用性问题。 关注作者,分享互联网架构、云服务技术的全维度知识。作者拥有10+年互联网服务架构、AI产品研

数据监控预警系统,实现不同端信息推送

数据是反映产品和用户状态最真实的一种方式,通过数据指导运营决策,驱动业务增长。数据可分为2种情况:数据监控和数据分析;Wyn嵌入式商业智能软件就提供了完整的数据监控和数据分析能力,下面就为大家进行一个详细介绍。 1.什么是数据监控? 数据监控是及时有效的反馈出数据异常的一种手段,通过对数据的监控去观

[转帖]【Windows 10】Prometheus监控平台安装以及配置windows Exporter探针

Prometheus 简介 Prometheus是一个开放性的监控解决方案,用户可以非常方便的安装和使用Prometheus并且能够非常方便的对其进行扩展。 在Prometheus的架构设计中,Prometheus Server并不直接服务监控特定的目标,其主要任务负责数据的收集,存储并且对外提供数

Istio 升级后踩的坑

背景 前段时间我们将 istio 版本升级到 1.12 后导致现有的应用监控有部分数据丢失(页面上显示不出来)。 一个是应用基础信息丢失。 再一个是应用 JVM 数据丢失。 接口维度的监控数据丢失。 修复 基础信息 首先是第一个基础信息丢失的问题,页面上其实显示的是我们的一个聚合指标istio_re

图扑智慧机车数据可视化大屏管理应用

作为城市公共交通的核心,机车的能耗管理不仅直接关系到运营成本,更牵涉到环境保护和能源的高效、可续利用。传统的机车监控手段在现代化需求面前已显得力不从心,亟需构建一个能实时收集和分析运营数据的高效、智能、全面的智能化监控平台。利用先进的可视化技术实时收集分析运营数据,将机车运行状态、能耗情况等信息直观

[转帖]容器监控实践-Grafana

容器监控实践-Grafana https://www.jianshu.com/p/cdda94e5b9e2 概述 Grafana 是一个开源的,可以用于大规模指标数据的可视化项目,甚至还能对指标进行报警。基于友好的 Apache License 2.0 开源协议,目前是prometheus监控展示的

Troubleshooting 专题 - 问正确的问题 得到正确的答案

在很多公司中,IT、数据中心、业务系统一出故障,会有很多人被叫到作战室(就是一个为了解决该问题,而把所有相关人员集中在一起的一个会议室), 但是对于这个问题他们是否可以修复, 是否他们应该负有责任, 经常没有线索. 「证据」(基础架构监控数据, 日志文件, 用户投诉等等) 表明了症状, 但是与 ro

[转帖]Prometheus监控系统存储容量优化攻略,让你的数据安心保存!

云原生监控领域不可撼动,Prometheus 是不是就没缺点?显然不是。 一个软件如果什么问题都想解决,就会导致什么问题都解决不好。所以Prometheus 也存在不足,广受诟病的问题就是 单机存储不好扩展。 1 真的需要扩展容量吗? 大部分场景其实不需要扩展,因为一般的数据量压根达不到 Prome