Java 采集 Linux 网络带宽信息

java 对LINUX 进行带宽使用率监控 因为项目需要使用java对视频服务器进行带宽使用率监控,故找相关代码来研究以及使用,系统为centos7.2 首先使用 ifconfig 命令看看自己有几块网卡 ifconfig 然后使用 sudo ethtool eth0 找到自己的带宽是多少M 后续代码需要用到该参数 接下来你需要使用下面的指令获得网卡当前的速率 cat /proc/net/dev 结果见结构图 ... 阅读详情

通过 cat /proc/net/dev 和 ethtool [net] 两个信息,计算网络带宽、吞吐速率和带宽利用率。

package demo;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;

/**
 * 采集网络带宽使用率
 *
 * ****************************
 * cat /proc/net/dev
 * Inter-|   Receive                                                |  Transmit
 *  face |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
 *    lo: 341566047 4020765    0    0    0     0          0         0 341566047 4020765    0    0    0     0       0          0
 * enp0s31f6: 7222870592 9003564    0    0    0     0          0    125359 680013336 4352932    0    0    0     0       0          0
 *
 * ****************************
 * ethtool enp0s31f6
 * Settings for enp0s31f6:
 *  Supported ports: [ TP ]
 *  Supported link modes:   10baseT/Half 10baseT/Full
 *                          100baseT/Half 100baseT/Full
 *                          1000baseT/Full
 *  Supported pause frame use: No
 *  Supports auto-negotiation: Yes
 *  Advertised link modes:  10baseT/Half 10baseT/Full
 *                          100baseT/Half 100baseT/Full
 *                          1000baseT/Full
 *  Advertised pause frame use: No
 *  Advertised auto-negotiation: Yes
 *  Speed: 1000Mb/s
 *  Duplex: Full
 *  Port: Twisted Pair
 *  PHYAD: 1
 *  Transceiver: internal
 *  Auto-negotiation: on
 *  MDI-X: on (auto)
 */
public class NetUsage {
    private static NetUsage instance = new NetUsage();
    private static Runtime r = Runtime.getRuntime();
    private static float bandWidth = 1000;
    private static final String NET_COMMAND = "cat /proc/net/dev";
    private static final String NET_NAME = "enp0s31f6";
    private static final String SPEED = "Speed";
    private static final String ETH_COMMAND = "ethtool " + NET_NAME;

    private NetUsage() {

    }

    public static NetUsage getInstance() {
        return instance;
    }

    static {
        Process process = null;
        try {
            process = r.exec(ETH_COMMAND);
            BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = reader.readLine()) != null) {
                line = line.trim();
                if (line.startsWith(SPEED)) {
                    String[] temp = line.split("\\s+");
                    bandWidth = Float.parseFloat(temp[1].split("Mb/s")[0]);
                    break;
                }
            }
            reader.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        process.destroy();
    }

    private static class Net {
        private Long time;
        private Long inSize;
        private Long outSize;

        public Net() {
            this.time = System.currentTimeMillis();
            this.inSize = 0L;
            this.outSize = 0L;
        }

        public Long getTime() {
            return time;
        }

        public void setTime(Long time) {
            this.time = time;
        }

        public Long getInSize() {
            return inSize;
        }

        public void setInSize(Long inSize) {
            this.inSize = inSize;
        }

        public Long getOutSize() {
            return outSize;
        }

        public void setOutSize(Long outSize) {
            this.outSize = outSize;
        }
    }

    public void samplingCalculation() {
        Net start = new Net();
        Net end = new Net();

        try {
            //第一次采集流量数据
            takeInAndOutSize(start);

            //间隔 1s
            Thread.sleep(1000);

            //第二次采集流量数据
            takeInAndOutSize(end);

            //计算传输指标
            compute(start, end);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        }
    }

    public float compute(Net start, Net end) {
        float netUsage;
        float interval = (float) (end.getTime() - start.getTime()) / 1000;
        float curRate = (float) (Math.abs(end.getInSize() - start.getInSize()) + Math.abs(end.getOutSize() - start.getOutSize())) / (131072 * interval);
        netUsage = curRate / bandWidth;
        System.out.println("当前吞吐速率: " + curRate + "Mbps");
        System.out.println("网络带宽使用率为: " + netUsage * 100 + " %");
        return netUsage;
    }

    public void takeInAndOutSize(Net net) throws IOException {
        net.setTime(System.currentTimeMillis());
        Process process = r.exec(NET_COMMAND);
        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
        String line;
        while ((line = reader.readLine()) != null) {
            line = line.trim();
            if (line.startsWith(NET_NAME)) {
                String[] temp = line.split("\\s+");
                net.setInSize(Long.parseLong(temp[1]));
                net.setOutSize(Long.parseLong(temp[9]));
                break;
            }
        }
        reader.close();
        process.destroy();
    }

    public static void main(String[] args) {
        while (1 > 0) {
            NetUsage.getInstance().samplingCalculation();
        }
    }
}

Linux性能优化 一、性能优化需求提出 前台访问慢、请帮忙分析优化 用户对性能很不满意、在不解决就投诉 数据库负载很重、请分析一下 xxx功能打开需要一分钟、请帮忙分析一下 在接到这些性能优化要求的时候,运维工程师希望能够了解下面的信息以判断问题的类型,而通常情况下,大部分提出性能需求者都给不出这样的信息: a)系统性的问题?比如CPU利用率,SWAP利用率或者IO过高导致的整体性能下降? b)功能性问题?整体性能良好,个别功能时延很长 c)新出现问题?什么时候开始的,之前系统有哪些变动?(升级或者管理的资源大量增加) 阅读详情

相关推荐

Linux性能监控工具atop的全面解析与应用实践

在Linux系统性能监控领域,atop是一款功能强大的工具,它通过记录历史数据和提供全面的系统监控指标,解决了传统工具如top在故障排查中的局限性。atop的核心原理在于其多维度的数据采集能力,包括CPU、内存、磁盘I/O和网络流量等关键指标,特别适合云环境如火山引擎中的性能分析。其技术价值体现在能够回溯历史性能数据,帮助工程师定位转瞬即逝的性能瓶颈,例如磁盘I/O间歇性瓶颈或内存泄漏问题。在实际应用场景中,atop不仅适用于实时监控,还能生成详细的性能报告,为系统调优提供数据支持。通过合理配置,atop可

weixin_26875109的博客 225

在java里头读取/proc/net/dev

为什么80%的码农都做不了架构师?>>> ...

weixin_34220179的博客 426

在Java中获取Linux下的网络网卡信息

在Java中获取Linux下的网络网卡信息,主要涉及到Java的Runtime类、ProcessBuilder类以及对Linux命令行工具(如ifconfig或ip)输出结果的解析。然而,这种方式依赖于Linux系统的具体命令格式,可能在不同的系统版本或环境下存在兼容性问题。为了更稳定和准确地获取网卡信息,推荐使用Java的​。​命令获取所有网络接口的信息,并且对每行输出进行解析,提取出非回环IP地址(即非127.0.0.1)的网络接口名称和IP地址。以上代码会执行Linux的​。

Programming Talk 898

Linux下java获取CPU、内存、磁盘IO、网络带宽使用率

一、CPU 使用proc文件系统,"proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。" 从/proc文件系统获取cpu使用情况:    cat /proc/stat 在Linux的内核中,有一个全 局变量:Jiffies。 Jiffie

blue_jjw的专栏 9万+

用java做的测试服务器带宽项目(原创)

用java做的测试服务器带宽项目,可以保持连接不断测试局域网的带宽

C# 异步编程详解(Task,async/await)

同步和异步主要用于修饰方法。当一个方法被调用时,调用者需要等待该方法执行完毕并返回才能继续执行,我们称这个方法是同步方法;当一个方法被调用时立即返回,并获取一个线程执行该方法内部的业务,调用者不用等待该方法执行完毕,我们称这个方法为异步方法。异步的好处在于非阻塞(调用线程不会暂停执行去等待子线程完成),因此我们把一些不需要立即使用结果、较耗时的任务设为异步执行,可以提高程序的运行效率。

luxingyu329的博客 4156

java测试网速,获取本机信息

对当前计算机的操作

weixin_44394502的博客 1378

matlab 求解多项式的根 四种方法

matlab 求解多项式的根 四种方法 方法一 %多项式求根函数roots p=[1,-3,1];%建立多项式系数向量p x=roots(p)%求多项式的根 x=-5:0.1:5;%步长为0.1 y1=x.*x-3*x+1;%构建一个函数 y2=zeros(size(x));%产生一个与x同大小的零向量 plot(x,y1,x,y2); 方法二 %利用函数fzero f=@(x)x*x-3*x+1; x1=fzero(f,0.5) x2=fzero(f,2.5) 方法三 %利用f

weixin_57038822的博客 1万+

linux设备硬件信息的获取

linux设备硬件信息的获取 摘要: 本文主要分析了在linux设备上采集相关的硬件信息,并给出了java实现的方法。然后模拟了“玩客云”的场景,摘取了部分关键信息,上传至服务器。 关键技术: linux命令行返回值的解析、MySQL数据的连接及相关操作、HTTP通信 实现语言: java 参考: http://www.jb51.net/LINUXjishu/65741.html htt...

Kevin的博客 2304

基于STM32与SimpleFOC实现直流无刷电机开环控制的实战指南

本文提供了一份基于STM32微控制器与SimpleFOC开源库实现直流无刷电机开环控制的详细实战指南。内容涵盖硬件连接、PlatformIO环境搭建、核心代码解析及上电测试,旨在帮助开发者快速验证硬件并理解开环控制的基本原理,为后续实现高性能的闭环FOC控制奠定基础。

xxx12的博客 964

OrthoFinder功能、流程和文件注释

OrthoFinder 的标准输出包括:直系同源组,直系同源基因,有根基因树,解析基因树,无根物种树、有根物种树,基因重复事件以及相关的统计数据。

hs6605015的博客 3048

java获取网络带宽_Linux Java 获取CPU使用率,内存使用率,磁盘IO,网络带宽使用率等等...

/*** 获取带宽上传下载速度* @return*/public String getNetWorkSpeed() {boolean result = false;String detailInfo = "";DecimalFormat df = new DecimalFormat("0.00");String dl = "";String ul = "";System.out.println(...

weixin_33289964的博客 2329

vscode配置OpenGL开发环境【详细】

vscode配置OpenGL开发环境【详细】

weixin_43952192的博客 3万+

Linux Java 获取CPU使用率,内存使用率,磁盘IO,网络带宽使用率等等

/** * 获取CPU使用率 * @return */ public float getCpuUsage() { System.out.println("开始收集cpu使用率"); float cpuUsage = 0; Process pro1,pro2; Runtime r = Runtime.getRunt

yagami123551的专栏 9967

Z-Image Turbo LoRA训练全流程:从数据标注到模型部署的保姆级指南(附ai-toolkit配置)

本文提供了一份详尽的Z-Image Turbo LoRA模型训练全流程指南,涵盖从数据准备、智能标注、参数调优到最终模型部署与Z-Image集成的每个环节。重点解析了使用ai-toolkit训练整合包进行高效训练的核心技巧与避坑方法,旨在帮助用户稳定训练出高质量的专属角色模型。

weixin_29088655的博客 968

利用 AI 自动生成 BDD(行为驱动开发)格式的 Gherkin 测试用例

文章摘要 当前BDD测试领域正经历AI驱动的变革浪潮。传统Gherkin用例编写面临四大痛点:语法负担重、场景发现成本高、一致性差和维护困难。2025-2026年,AI生成Gherkin的工具生态快速成熟,主要分为五类:测试管理平台内置AI(如TestRail 10.2)、Jira插件(如AssertThat BDD)、独立AI平台(如PrimeCompass)、CLI工具和研究原型。其中,TestRail实现生成-执行闭环,AssertThat采用多阶段Agent工作流提升质量,PrimeCompass则

ZXSXJ的博客 206

java中process方法用处_Java Process详解及实例

runtimejava可以通过runtime来调用其他进程,如cmd命令,shell文件的执行等。可以应该该类设置系统时间,执行shell文件。此处记录几个有用应用如下。设置本地时间可以调用cmd /c date命令,完成本地时间设置,不过这个命令在win7下可以使用,但是win10需要管理员权限,可能无法设置系统时间。win7下使用java实现修改本地时间代码如下,需要注意的是waitfor是必...

weixin_39637723的博客 553

基于YOLOv26的卫星遥感环境监测系统

本文介绍了一个基于YOLOv26的卫星遥感环境监测系统。该系统采用分层架构设计,包含数据采集、预处理、目标检测、图像分析、变化检测等核心模块。技术栈包括YOLOv26、PyTorch、OpenCV等深度学习框架和图像处理工具,以及GDAL、rasterio等地理信息处理库。系统支持获取多种卫星数据源(如Sentinel、Landsat、MODIS)的遥感图像,并进行时间序列分析。通过代码示例展示了数据采集模块的实现,包括卫星图像获取和模拟生成功能。该系统可应用于环境要素检测、变化监测等场景,为环境监测提供智

一键难忘的博客 936

监控linux的cpu内存磁盘带宽

package com.audaque.web.utils; import java.io.*; import java.util.StringTokenizer; /* 取得linux系统下的cpu、内存信息 * * */ public final class LinuxSystemTool { /** * get memory by ...

沉淀的博客 302

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

linux性能测试与调优,Linux系统性能调优之性能分析

性能调优的第一步是性能分析,下面从性能分析着手进行一些介绍,尤其对Linux性能分析工具vmstat的用法和实践进行详细介绍。1、性能分析的目的1)找出系统性能瓶颈(包括硬件瓶颈和软件瓶颈);2)提供性能优化的方案(升级硬件?改进系统系统结构?);3)达到合理的硬件和软件配置;4)使系统资源使用达到最大的平衡。(一般情况下系统良好运行的时候恰恰各项资源达到了一个平衡体,任何一项资源的过渡使用都会造...

weixin_39827306的博客 183

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

linux 带宽 监控 磁盘_技术分享篇:Linux操作系统高性能集群监控管理之道(干货)...

监控是集群管理的核心任务。监控数据可用于调度任务、负载平衡、向管理员报告软硬件故障,并广泛地控制系统使用情况。监控信息必须在不影响集群性能的情况下获得。本文将讨论使用/proc文件系统和Java来获得监控数据的方法。 Java在Linux集群中的应用 Java技术为集群管理开发者提供了许多解决问题的办法。Java是动态、灵活、可移植的,这些不寻常的特征使得它成为了在异构网络及平台上构造集群管理的理...

weixin_36429702的博客 120

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

编码与设计:构建软件工程术语库的实战指南

软件工程知识体系庞大,字符编码、设计模式、数据传输编码等概念常令人混淆。理解这些术语的本质与关联,是高效开发与系统复习的基础。本文从编码与设计两条主线出发,梳理了从ASCII到UTF-8、从Base64到CRC、从状态机到架构模式的核心原理,并提供了术语库的构建方法和实操经验。无论是准备期末复习、面试冲刺,还是日常开发中的编码规范和方案设计,这套方法论都能帮你将零散知识点串成可随时调用的知识网络,真正提升工程实践中的问题排查与架构设计能力。

weixin_33805992的博客 478

Chrome 扩展应用窗口管理实战:Copycat Window 示例解析 chrome.app.window API 自定义边框与窗口同步

本文基于 chrome-extensions-samples 仓库中 `_archive/apps/samples/windows` 的 Copycat Window 示例,系统讲解 Chrome Apps(Manifest V2)中 `chrome.app.window` API 的核心用法:如何创建无系统边框的自定义窗口、如何通过 `innerBounds` 精确控制窗口尺寸与位置、以及如何利

gitblog_00746的博客 1056

Linux集群管理中的核心-监控数据

<br />监控是集群管理的核心任务。监控数据可用于调度任务、负载平衡、向管理员报告软硬件故障,并广泛地控制系统使用情况。监控信息必须在不影响集群性能的情况下获得。本文将讨论使用/proc文件系统和Java来获得监控数据的方法。<br /><br />Java在Linux集群中的应用<br /><br />Java技术为集群管理开发者提供了许多解决问题的办法。Java是动态、灵活、可移植的,这些不寻常的特征使得它成为了在异构网络及平台上构造集群管理的理想基础。<br /><br />Java具有广泛的例程库

176

Linux系统运维排故思路参考手册

Linux运维过程中,我们会遇到一些进程突然出现挂死的状态(即进程处于运行状态,但无法处理请求,比如会报404,但这时服务端口是通的,日志也没显示明显异常,有的会简单给出无法连接某个组件,比如数据库等),那这时我们如何定位排查问题呢,偶然间看到网上一位同学的文章,这里分享一下。

企业实战系列集 ●●● https://ximenjianxue.blog.youkuaiyun.com 7578

Linux系统性能监控利器atop:超越top的实时监控与历史回溯

在Linux系统运维和性能调优领域,系统监控是保障服务稳定性的基础。其核心原理在于通过采集内核暴露的/proc等接口数据,实时反映CPU、内存、磁盘I/O及网络等关键资源的使用情况。这项技术的价值在于,它使运维人员和开发者能够快速定位资源瓶颈,诊断应用性能问题,从而优化系统配置与应用代码。典型的应用场景包括排查线上服务CPU飙升、分析内存泄漏、定位磁盘I/O瓶颈以及进行事后故障回溯。本文聚焦的atop工具,正是这一领域的进阶实践,它通过守护进程定期采集并压缩存储系统快照,实现了对历史性能数据的“黑匣子”式记

weixin_30319153的博客 489
上一篇: 二分搜索模板方法
下一篇: Leetcode 回溯法 (持续更新)
Yonghua Li
博客等级 码龄10年 38粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值