精华内容
下载资源
问答
  • linux 监控网络IO、磁盘、CPU、内存

    万次阅读 多人点赞 2019-04-19 17:21:17
    linux监控IO、CPU、网络、磁盘、内存: CPU:vmstat ,sar –u,top 磁盘IO:iostat –xd,sar –d,top 网络IO:iftop -n,ifstat,dstat –nt,sar -n DEV 2 3 磁盘容量:df –h 内存使用:free –m,top

    linux 监控网络IO、磁盘、CPU、内存

    • CPU:vmstat ,sar –u,top
    • 磁盘IO:iostat –xd,sar –d,top
    • 网络IO:iftop -n,ifstat,dstat –nt,sar -n DEV 2 3
    • 磁盘容量:df –h 
    • 内存使用:free –m,top

    1.查看什么进程占用端口:  netstat -antp | fgrep <port>
    2.查看进程资源:
    jps -l
    jmap -heap 21046


    ps aux

    ps命令用于查看系统中的进程状态

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
     ● USER,进程所有者的用户名。
     ● PID,进程号,可以唯一标识该进程。
     ● %CPU,进程自最近一次刷新以来所占用的CPU时间和总时间的百分比。
     ● %MEM,进程使用内存的百分比。
     ● VSZ,进程使用的虚拟内存大小,以K为单位。
     ● RSS,进程占用的物理内存的总数量,以K为单位。
     ● TTY,进程相关的终端名。
     ● STAT,进程状态,用(R--运行或准备运行;S--睡眠状态;I--空闲;Z--冻结;D--不间断睡眠;W-进程没有驻留页;T停止或跟踪。)这些字母来表示。
     ● START,进程开始运行时间。
     ● TIME,进程使用的总CPU时间。
     ● COMMAND,被执行的命令行。

    ——————————————————————————————————————————————

    Top

    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

    1、上半部分显示了整体系统负载情:

    • top一行:从左到右依次为当前系统时间,系统运行的时间,系统在之前1min、5min和15min内cpu的平均负载值
    • Tasks一行:该行给出进程整体的统计信息,包括统计周期内进程总数、运行状态进程数、休眠状态进程数、停止状态进程数和僵死状态进程数
    • Cpu(s)一行:cpu整体统计信息,包括用户态下进程、系统态下进程占用cpu时间比,nice值大于0的进程在用户态下占用cpu时间比,cpu处于idle状态、wait状态的时间比,以及处理硬中断、软中断的时间比
    • Mem一行:该行提供了内存统计信息,包括物理内存总量、已用内存、空闲内存以及用作缓冲区的内存量
    • Swap一行:虚存统计信息,包括交换空间总量、已用交换区大小、空闲交换区大小以及用作缓存的交换空间大小

    2、下半部分显示了各个进程的运行情况:

    • PID: 进程pid
    • USER: 拉起进程的用户
    • PR: 该列值加100为进程优先级,若优先级小于100,则该进程为实时(real-time)进程,否则为普通(normal)进程,实时进程的优先级更高,更容易获得cpu调度,以上输出结果中,java进程优先级为120,是普通进程,had进程优先级为2,为实时进程,migration 进程的优先级RT对应于0,为最高优先级
    • NI: 进程的nice优先级值,该列中,实时进程的nice值为0,普通进程的nice值范围为-20~19
    • VIRT: 进程所占虚拟内存大小(默认单位kB)
    • RES: 进程所占物理内存大小(默认单位kB)
    • SHR: 进程所占共享内存大小(默认单位kB)
    • S: 进程的运行状态
    • %CPU: 采样周期内进程所占cpu百分比
    • %MEM: 采样周期内进程所占内存百分比
    • TIME+: 进程使用的cpu时间总计
    • COMMAND: 拉起进程的命令

     

    传送门: 大数据生态圈常用组件(一):数据库、查询引擎、ETL工具、调度工具等

     

     

    展开全文
  • 网络编程二-LINUX网络IO模型

    万次阅读 2019-08-10 10:24:46
    前言:网络编程里通用常识 一、同步和异步与阻塞和非阻塞 同步和异步 阻塞和非阻塞 两者的组合 二、五种I/O模型 阻塞I/O模型 非阻塞IO模型 IO复用模型 信号驱动IO 异步IO模型 5个I/O模型的比较 今天台风...

    目录

    前言:网络编程里通用常识

    一、同步和异步与阻塞和非阻塞

    同步和异步

    阻塞和非阻塞

    两者的组合

    二、五种I/O模型

    阻塞I/O模型

    非阻塞IO模型 

    IO复用模型

    信号驱动IO

    异步IO模型

    5个I/O模型的比较


    今天台风利奇马就要登陆浙江了,风那叫一个大啊,所以,就别出门了,老老实实在家学习看博客吧哈O(∩_∩)O

    前言:网络编程里通用常识

    既然是网络编程肯定是面临着通信的,既然是通信,那么是肯定是有两个对端的。在通信编程里提供服务的叫服务端,连接服务端使用服务的叫客户端。在开发过程中,如果类的名字有Server或者ServerSocket的,表示这个类是给服务端用的,如果类的名字只有Socket的,那么表示这是负责具体的网络读写的。那么对于服务端来说ServerSocket就只是个场所,具体和客户端沟通的还是一个一个的socket,所以在通信编程里,ServerSocket并不负责具体的网络读写,ServerSocket就只是负责接收客户端连接后,新启一个socket来和客户端进行沟通。这一点对所有模式的通信编程都是适用的。

    在通信编程里,我们关注的其实也就是三个事情:连接(客户端连接服务器,服务器等待和接收连接)、读网络数据、写网络数据,所有模式的通信编程都是围绕着这三件事情进行的。那么今天我们围绕双方通信的模型进行展开吧。

    一、同步和异步与阻塞和非阻塞

    相信很多开发者在接触到网络编程的时候都会了解这几个概念。但有些人可能对这些概念容易混淆,总觉得同步的都是阻塞的,异步的都是非阻塞的,其实他们在概念上和行为上都是完全的两个都系。首先我们将这些概念再重新认知下。

    同步和异步

    同步和异步关心的是结果消息的通信机制。

    同步:同步的意思就是调用方需要主动等待结果的返回,是指在发送一个消息之后,在没有得到结果之前,该调用就不返回。事情必须一件一件的去做。例如普通的B/S模式。

    异步:异步的意思就是不需要主动等待结果的返回,而是通过其他手段比如,状态通知,回调函数等,这个时候调用者只需要发出消息,然后就可以继续做其他事情。例如浏览器的ajax的请求。

    阻塞和非阻塞

    主要关注的是等待结果返回调用方的状态

    阻塞:是指结果返回之前,当前线程被挂起,不做任何事,函数只有得到结果之后,才会进行返回。

    与同步调用的区别是,阻塞会导致当前线程挂起。期间CPU不会分配时间片给他,而同步是线程是激活状态,还在等待消息的结果返回。

    非阻塞:是指结果在返回之前,线程可以做一些其他事,不会被挂起。

    如果还不好理解,那我们将两者放在一起,进行组合再看一下。

    两者的组合

    1.同步阻塞:同步阻塞基本也是编程中最常见的模型,打个比方你去商店买衣服,你去了之后发现衣服卖完了,那你就在店里面一直等,期间不做任何事(包括看手机),等着商家进货,直到有货为止,这个效率很低。

    2.同步非阻塞:同步非阻塞在编程中可以抽象为一个轮询模式,你去了商店之后,发现衣服卖完了,这个时候不需要傻傻的等着,你可以去其他地方比如奶茶店,买杯水,但是你还是需要时不时的去商店问老板新衣服到了吗。

    3.异步阻塞:异步阻塞这个编程里面用的较少,有点类似你写了个线程池,submit然后马上future.get(),这样线程其实还是挂起的。有点像你去商店买衣服,这个时候发现衣服没有了,这个时候你就给老板留给电话,说衣服到了就给我打电话,然后你就守着这个电话,一直等着他响什么事也不做。这样感觉的确有点傻,所以这个模式用得比较少。

    4.异步非阻塞:异步非阻塞。好比你去商店买衣服,衣服没了,你只需要给老板说这是我的电话,衣服到了就打。然后你就随心所欲的去玩,也不用操心衣服什么时候到,衣服一到,电话一响就可以去买衣服了。

    现在你应该了解到两者的区别了吧。同步和异步是指调用结果的返回机制(类似于server的状态)。异步和同步是指调用方自身的状态(类似于客户端的状态)。

    二、五种I/O模型

    阻塞I/O模型

    知识点补充:recvfrom函数,c语言中用来接收远程主机经指定的socket传来的数据。

    应用程序调用一个IO函数,导致应用程序阻塞,等待数据准备好。 如果数据没有准备好,一直等待….数据准备好了,从内核拷贝到用户空间,IO函数返回成功指示。

     当调用recv()函数时,系统首先查是否有准备好的数据。如果数据没有准备好,那么系统就处于等待状态。当数据准备好后,将数据从系统缓冲区复制到用户空间,然后该函数返回。在套接应用程序中,当调用recv()函数时,未必用户空间就已经存在数据,那么此时recv()函数就会处于等待状态。

    非阻塞IO模型 

    我们把一个SOCKET接口设置为非阻塞就是告诉内核,当所请求的I/O操作无法完成时,不要将进程睡眠,而是返回一个错误。这样我们的I/O操作函数将不断的测试数据是否已经准备好,如果没有准备好,继续测试,直到数据准备好为止。在这个不断测试的过程中,会大量的占用CPU的时间。该模型绝不被推荐

    IO复用模型

    简介:主要是select和epoll两个系统调用;对一个IO端口,两次调用,两次返回,比阻塞IO并没有什么优越性;关键是能实现同时对多个IO端口进行监听;

    当用户进程调用了select,那么整个进程会被block;而同时,kernel会“监视”所有select负责的socket;当任何一个socket中的数据准备好了,select就会返回。这个时候,用户进程再调用read操作,将数据从kernel拷贝到用户进程。
    这个图和blocking IO的图其实并没有太大的不同,事实上还更差一些。因为这里需要使用两个系统调用(select和recvfrom),而blocking IO只调用了一个系统调用(recvfrom)。但是,用select的优势在于它可以同时处理多个connection。(多说一句:所以,如果处理的连接数不是很高的话,使用select/epoll的web server不一定比使用multi-threading + blocking IO的web server性能更好,可能延迟还更大。select/epoll的优势并不是对于单个连接能处理得更快,而是在于能处理更多的连接。)

    常用的I/O复用模型函数有三种select、poll、epoll,linux操作内核都支持,下面进行简单介绍下。

    select模型:说的通俗一点就是各个客户端连接的文件描述符也就是套接字,都被放到了一个集合中,调用select函数之后会一直监视这些文件描述符中有哪些可读,如果有可读的描述符那么我们的工作进程就去读取资源。

    poll模型:poll 和 select 的实现非常类似,本质上的区别就是存放 fd (文件描述符)集合的数据结构不一样。select 在维持链接上有限制,poll 在此基础上做了加强,可以维持任意数量的连接。

    但 select 和 poll 方式有一个很大的问题就是,我们不难看出来 select 是通过轮训的方式来查找是否可读或者可写,打个比方,如果同时有100万个连接都没有断开,而只有一个客户端发送了数据,所以这里它还是需要循环这么多次,造成资源浪费。

    epoll模型:epoll 是 select 和 poll 的增强版,epoll 同 poll 一样,文件描述符数量无限制。

    epoll是基于内核的反射机制,在有活跃的 socket 时,系统会调用我们提前设置的回调函数。而 poll 和 select 都是遍历。

    但是也并不是所有情况下 epoll 都比 select/poll 好,比如在如下场景:

    在大多数客户端都很活跃的情况下,系统会把所有的回调函数都唤醒,所以会导致负载较高。既然要处理这么多的连接,那倒不如 select 遍历简单有效。

    selectpollepoll的区别?

    select,poll,epoll都是 操作系统实现IO多路复用的机制。 我们知道,I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。那么这三种机制有什么区别呢。

     1、支持一个进程所能打开的最大连接数

    select

    单个进程所能打开的最大连接数有FD_SETSIZE宏定义,其大小是32个整数的大小(在32位的机器上,大小就是32*32,同理64位机器上FD_SETSIZE为32*64),当然我们可以对进行修改,然后重新编译内核,但是性能可能会受到影响。

    poll

    poll本质上和select没有区别,但是它没有最大连接数的限制,原因是它是基于链表来存储的

    epoll

    虽然连接数有上限,但是很大,1G内存的机器上可以打开10万左右的连接,2G内存的机器可以打开20万左右的连接

    2、FD剧增后带来的IO效率问题

    select

    因为每次调用时都会对连接进行线性遍历,所以随着FD的增加会造成遍历速度慢的“线性下降性能问题”。

    poll

    同上

    epoll

    因为epoll内核中实现是根据每个fd上的callback函数来实现的,只有活跃的socket才会主动调用callback,所以在活跃socket较少的情况下,使用epoll没有前面两者的线性下降的性能问题,但是所有socket都很活跃的情况下,可能会有性能问题。

    3、 消息传递方式

    select

    内核需要将消息传递到用户空间,都需要内核拷贝动作

    poll

    同上

    epoll

    epoll通过内核和用户空间共享一块内存来实现的。

    总结:

    综上,在选择select,poll,epoll时要根据具体的使用场合以及这三种方式的自身特点。

    1、表面上看epoll的性能最好,但是在连接数少并且连接都十分活跃的情况下,select和poll的性能可能比epoll好,毕竟epoll的通知机制需要很多函数回调。

    2、select低效是因为每次它都需要轮询。但低效也是相对的,视情况而定,也可通过良好的设计改善

    在深入一点:

    Level_triggered(水平触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据一次性全部读写完(如读写缓冲区太小),那么下次调用 epoll_wait()时,它还会通知你在上没读写完的文件描述符上继续读写,当然如果你一直不去读写,它会一直通知你!!!如果系统中有大量你不需要读写的就绪文件描述符,而它们每次都会返回,这样会大大降低处理程序检索自己关心的就绪文件描述符的效率!!!

    Edge_triggered(边缘触发):当被监控的文件描述符上有可读写事件发生时,epoll_wait()会通知处理程序去读写。如果这次没有把数据全部读写完(如读写缓冲区太小),那么下次调用epoll_wait()时,它不会通知你,也就是它只会通知你一次,直到该文件描述符上出现第二次可读写事件才会通知你!!!这种模式比水平触发效率高,系统不会充斥大量你不关心的就绪文件描述符!!

     select(),poll()模型都是水平触发模式,信号驱动IO是边缘触发模式,epoll()模型即支持水平触发,也支持边缘触发,默认是水平触发。

     

    信号驱动IO

     简介:两次调用,两次返回;

    首先我们允许套接口进行信号驱动I/O,并安装一个信号处理函数,进程继续运行并不阻塞。当数据准备好时,进程会收到一个SIGIO信号,可以在信号处理函数中调用I/O操作函数处理数据。

    异步IO模型

    当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者的输入输出操作

    5个I/O模型的比较

    不同I/O模型的区别,其实主要在等待数据和数据复制这两个时间段不同,图形中已经表示得很清楚了。

    展开全文
  • Linux网络IO模型

    千次阅读 2018-10-30 11:15:45
    看上面的例子,我们再来关注Linux网络IO模型,然后结合这个例子去理解。 Linux网络IO模型 Unix提供了五种IO模式,分别是: 阻塞IO 非阻塞IO IO复用 信号驱动IO 异步IO 在...

    什么是同步与异步、阻塞与非阻塞

    引用知乎 怎样理解阻塞非阻塞与同步异步的区别? 上面的一个回答,很生动的说明了同步异步,阻塞非阻塞之间的区别联系:


    老张爱喝茶,废话不说,煮开水。

    出场人物:老张,水壶两把(普通水壶,简称水壶;会响的水壶,简称响水壶)。

    1 老张把水壶放到火上,立等水开。(同步阻塞)

    老张觉得自己有点傻

    2 老张把水壶放到火上,去客厅看电视,时不时去厨房看看水开没有。(同步非阻塞)

    老张还是觉得自己有点傻,于是变高端了,买了把会响笛的那种水壶。水开之后,能大声发出嘀~~~~的噪音。

    3 老张把响水壶放到火上,立等水开。(异步阻塞)

    老张觉得这样傻等意义不大

    4 老张把响水壶放到火上,去客厅看电视,水壶响之前不再去看它了,响了再去拿壶。(异步非阻塞)

    老张觉得自己聪明了。

    所谓同步异步,只是对于水壶而言。普通水壶,同步;响水壶,异步。虽然都能干活,但响水壶可以在自己完工之后,提示老张水开了。这是普通水壶所不能及的。同步只能让调用者去轮询自己(情况2中),造成老张效率的低下。

    所谓阻塞非阻塞,仅仅对于老张而言。立等的老张,阻塞;看电视的老张,非阻塞。情况1和情况3中老张就是阻塞的,媳妇喊他都不知道。虽然3中响水壶是异步的,可对于立等的老张没有太大的意义。所以一般异步是配合非阻塞使用的,这样才能发挥异步的效用。


    看上面的例子,我们再来关注Linux网络IO模型,然后结合这个例子去理解。

    Linux网络IO模型

    Unix提供了五种IO模式,分别是:

    • 阻塞IO

    • 非阻塞IO

    • IO复用

    • 信号驱动IO

    • 异步IO

    在之前的学习中我们也了解了从用户进程到底层硬件执行IO的过程,以read为例:

    [图片上传失败…(image-9a6544-1540869039700)]

    数据需要从硬件设备拷贝到内核空间的缓冲区,然后从内核缓冲区拷贝到用户进程空间。

    我们把数据需要从硬件设备拷贝到内核空间的缓冲区这个过程类比为烧水,从内核缓冲区拷贝到用户进程空间这个过程类比为用烧好的水泡茶。

    阻塞IO

    在这里插入图片描述

    阻塞IO是最常用的IO模型,我们在java中调用传统BIO(InputStream、OutpuytStream)的读写方法都是这种IO模型。

    观察上图,在进程空间中调用recvfrom,其系统调用直到数据从硬件设备拷贝到内核缓冲区并且从内核拷贝到用户进程空间时才会返回,在此期间一直是阻塞的,进程在从调用recvfrom到他返回这段时间一直都是阻塞的,故称为阻塞IO。

    阻塞IO对应了我们上面提到的同步阻塞。在这种IO模式下整个过程相当于使用不会响的普通水壶烧水,并且老张一直在旁边盯着,干不了其他事。水烧好后老张再去泡茶。整个过程是同步阻塞的。

    在阻塞IO模式下,在同一个线程当中,我们对于多个连接,只能依次处理:

    while true {
        for i in stream[] {
            //可能会阻塞很长时间
            read until available 
        }
    }
    
    

    非阻塞IO

    在这里插入图片描述

    用户进程发起一个recvfrom调用的时候,如果内核缓冲区的数据还没有准备好(没有完全从硬件拷贝到内核),那么他不会阻塞用户进程,而是立刻返回一个error。用户发起一个recvfrom操作之后,不需要等待,而是马上会得到一个结果,用户可以判断这个结果,如果是一个error,表示数据还没有准备好,于是可以再次发起recvfrom操作,一旦内核数据准备好了,就可以把数据拷贝到用户进程空间,然后返回。

    这种IO模型称之为非阻塞IO,整个过程可以类比为:在这种IO模式下调用recvfrom相当于使用不会响的普通水壶烧水,老张时不时跑到厨房看看水烧开了没(这个过程是同步非阻塞的),如果水烧开了,他就用烧开的水泡茶(相当于从内核copy数据到用户空间这一段,这个过程其实是同步阻塞的)

    在非阻塞IO模式下,我们发现可以在一个线程中处理多个连接了:

    // 忙轮询
    while true {
        for i in stream[]; {
            // 如果数据没有准备好,就立即返回,处理下一个流
            read until unavailable 
        }
    }
    
    

    我们只要不停的把所有流从头到尾问一遍,又从头开始。这样就可以处理多个流了,但这样的做法显然不好,因为如果所有的流都没有数据,那么只会白白浪费CPU。

    为了避免CPU空转,可以引进了一个代理: select或poll(两者本质上相同)

    IO复用

    [图片上传失败...(image-3c5c5a-1540869039700)]

    Linux 提供了select/poll,进程将一个或多个fd传递给select或poll系统调用,并且阻塞在select或poll方法上。同时,kernel会侦测所有select负责的fd是否处于就绪状态,如果有任何一个fd就绪,select或poll就会返回,这个时候用户进程再调用recvfrom,将数据从内核缓冲区拷贝到用户进程空间。

    这个图和blocking IO的图有些相似,但是还有一些区别。因为这里需要使用两个system call (select 和 recvfrom),而blocking IO只调用了一个system call (recvfrom)。但是,用select的优势在于它可以同时处理多个connection。

    while true {
        // 在select上阻塞
        select(streams[])
        // 无差别轮询
        for i in streams[] {
            read until unavailable
        }
    }
    
    

    于是,如果没有I/O事件产生,我们的程序就会阻塞在select处。但是依然有个问题,我们从select那里仅仅知道了,有I/O事件发生了,但却并不知道是那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。使用select,我们有O(n)的无差别轮询复杂度,同时处理的流越多,每一次无差别轮询时间就越长。

    Linux还提供了一个epoll系统调用,不同于忙轮询和无差别轮询,epoll之会把哪个流发生了怎样的I/O事件通知我们。此时我们对这些流的操作都是有意义的(复杂度降低到了O(1))。

    // 事先调用epoll_ctl注册感兴趣的事件到epollfd
    while true {
        // 返回触发注册事件的流
        active_stream[] = epoll_wait(epollfd)
        // 无须遍历所有的流
        for i in active_stream[] {
            read or write till
        }
    }
    
    

    信号驱动IO

    首先开启套接口信号驱动IO功能,并通过系统调用sigaction执行一个信号处理函数,此系统调用立即返回。当数据准备就绪时,就为该进程生成一个sigio信号,通过信号回调通知进程。进程调用recvfrom读取数据,将数据从内核缓冲区拷贝到用户进程空间。

    上面的过程可以类比为:老张使用会响的水壶烧水,然后就去客厅看电视了。水烧好后水壶响起来(这个过程是异步非阻塞的),老张再来厨房用烧好的水泡茶(这个过程是同步阻塞的)。

    异步IO

    [图片上传失败...(image-396ee2-1540869039700)]

    用户进程发起recvfrom操作之后,立刻就可以开始去做其它的事。而另一方面,从kernel的角度,当它收到一个asynchronous read之后,首先它会立刻返回,所以不会对用户进程产生任何block。然后,kernel会等待数据准备完成,然后将数据拷贝到用户内存,当这一切都完成之后,kernel会给用户进程发送一个signal,告诉它read操作完成了。

    这种IO模式与信号驱动IO的区别在于:信号驱动IO由内核通知我们什么时候可以开始一个IO操作,异步IO则由内核告诉我们IO操作何时完成。

    异步IO模式可以类比为:在这种IO模式下整个过程相当于使用会响的水壶烧水,并且,这个水壶更加智能,水烧好后可以自动泡茶,然后发出声响通知老张。老张把水放到火上就去客厅看电视了,水烧好并且茶叶泡好之后,水壶发出声响通知老张。

    参考

    Linux IO模式及 select、poll、epoll详解

    怎样理解阻塞非阻塞与同步异步的区别?

    epoll 或者 kqueue 的原理是什么?

    更多资料请加Linux后台服务架构2群:646266989 获取
    资料还在源源不断的上传中。
    群资料可以下载

    展开全文
  • Linux查看网络IO性能问题

    万次阅读 多人点赞 2017-01-05 20:41:46
    Linux上使用iftop可以查看网络使用情况,使用iotop可以查看磁盘io使用情况   首先需要安装iftop和iotop: yum install iftop yum install iotop   =======================================================...

    Linux上使用iftop可以查看网络使用情况,使用iotop可以查看磁盘io使用情况

     

    首先需要安装iftop和iotop:

    yum install iftop

    yum install iotop

     

    ===================================================================================================================================

    iftop使用说明:

     

    安装完成后,使用iftop -n命令可以查看网络的使用情况:

    Machine generated alternative text:195Kb 192.168.6.4 192.168.6.4 192.168.6.4 489KB TOTAL : peak: 391Kb 42.159.65.78 168.63.129.16 106.126.78.196 21.3Kb 33.9Kb 55 .2Kb rates : 781Kb 688b 160b 688b 166b 848b 3.63Kb 5.92Kb 1.67Kb 854b 982b 160b 5.06Kb 6.91Kb 12 . OKb 1.52Kb 2.96Kb 548b 427b 6.98Kb 191b 3.64Kb 3.57Kb 6.60Kb

    上传一个大文件之后,可以看到网络使用情况:

    Machine generated alternative text:1.91Mb 192.168.8.4 192.168.6.4 3.81Mb 106.126.78.196 42.159.65.78 168.63.129.16 5.72Mb 7.63Mb 95.5Kb 3.37Mb 161Kb 3.71Mb 9.54Mb 99.4Kb 3 .61Mb 776b 1.48Kb 274b 213b

    想要跟踪一下具体是哪个进程正在占用网络,可以使用下面的命令:

    netstat -antop |grep 106.120.78.190

    如果对应IP有多个连接存在,可能出现下面的结果(可以对一下上面的column名):

    Machine generated alternative text:[root@OanCentOS65 netstat -antop Active Internet connections (servers Proto Recv-Q Send-Q Local Address and established) Fo reign Add ress State PID/Proq ram name Timer Machine generated alternative text:[root@DanCentOS65 netstat 1@6.12€.78.19€ -antop 192.168.€.4.22 .168.€.4.22 .168.€.4.22 192.168.€.4.22 g rep tcp tcp tcp tcp 52 1@6.12€.78. 19€:47812 ESTABLISHED 38€39/sshd ESTABLISHED 37973/sshd ESTABLISHED 37791/sshd ESTABLISHED 37855/sshd keepalive (6885. keepalive (5422 keepalive (5549

    netstat参数含义:

    -a (all)显示所有选项,默认不显示LISTEN相关

    -t (tcp)仅显示tcp相关选项

    -u (udp)仅显示udp相关选项

    -n 拒绝显示别名,能显示数字的全部转化成数字。

    -l 仅列出有在 Listen (监听) 的服務状态

    -p 显示建立相关链接的程序名

    -r 显示路由信息,路由表

    -e 显示扩展信息,例如uid等

    -s 按各个协议进行统计

    -c 每隔一个固定时间,执行该netstat命令。

     

     

     

    第一个2880这一列是接收队列,如果其中某个连接这个队列积压很多,说明就是这个链接产生的大流量,进一步对照PID这一列,可以找到对应的PID为37973,然后使用ps命令来查看进程的详细信息:

    Machine generated alternative text:[root@Dancent0S65 06:34 root root ps 38€39 €.€ €.2 38506 €.€ €.€ aux I grep 38639 39€8 ? 1€33€8 82€ pts/3 sshd: daniel [privl ep 38€39

     

    ps参数说明:

    -a  显示所有终端机下执行的进程,除了阶段作业领导者之外。

     a  显示现行终端机下的所有进程,包括其他用户的进程。

    -A  显示所有进程。

    -c  显示CLS和PRI栏位。

    c  列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。

    -C<指令名称> 指定执行指令的名称,并列出该指令的进程的状况。

    -d  显示所有进程,但不包括阶段作业领导者的进程。

    -e 此参数的效果和指定"A"参数相同。

    e  列出进程时,显示每个进程所使用的环境变量。

    -f 显示UID,PPIP,C与STIME栏位。

     f 用ASCII字符显示树状结构,表达进程间的相互关系。

    -g<群组名称>此参数的效果和指定"-G"参数相同,当亦能使用阶段作业领导者的名称来指定。

    g 显示现行终端机下的所有进程,包括群组领导者的进程。

    -G<群组识别码> 列出属于该群组的进程的状况,也可使用群组名称来指定。

    h  不显示标题列。

    -H 显示树状结构,表示进程间的相互关系。

    -j或j  采用工作控制的格式显示进程状况。

    -l或l  采用详细的格式来显示进程状况。

    L  列出栏位的相关信息。

    -m或m  显示所有的执行绪。

    n  以数字来表示USER和WCHAN栏位。

    -N 显示所有的进程,除了执行ps指令终端机下的进程之外。

    -p<进程识别码> 指定进程识别码,并列出该进程的状况。

    p<进程识别码>此参数的效果和指定"-p"参数相同,只在列表格式方面稍有差异。

    r 只列出现行终端机正在执行中的进程。

    -s<阶段作业> 指定阶段作业的进程识别码,并列出隶属该阶段作业的进程的状况。

    s 采用进程信号的格式显示进程状况。

    S  列出进程时,包括已中断的子进程资料。

    -t<终端机编号> 指定终端机编号,并列出属于该终端机的进程的状况。

    t<终端机编号>此参数的效果和指定"-t"参数相同,只在列表格式方面稍有差异。

    -T  显示现行终端机下的所有进程。

    -u<用户识别码> 此参数的效果和指定"-U"参数相同。

     u 以用户为主的格式来显示进程状况。

    -U<用户识别码> 列出属于该用户的进程的状况,也可使用用户名称来指定。

    U<用户名称> 列出属于该用户的进程的状况。

    v 采用虚拟内存的格式显示进程状况。

    -V或V  显示版本信息。

    -w或w  采用宽阔的格式来显示进程状况。

    x 显示所有进程,不以终端机来区分。

    X  采用旧式的Linux i386登陆格式显示进程状况。

    -y 配合参数"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位

    -<进程识别码>此参数的效果和指定"p"参数相同。

    --cols<每列字符数> 设置每列的最大字符数。

    --columns<每列字符数> 此参数的效果和指定"--cols"参数相同。

    --cumulative  此参数的效果和指定"S"参数相同。

    --deselect 此参数的效果和指定"-N"参数相同。

    --forest  此参数的效果和指定"f"参数相同。

    --headers 重复显示标题列。

    --help  在线帮助。

    --info  显示排错信息。

    --lines<显示列数> 设置显示画面的列数。

    --no-headers  此参数的效果和指定"h"参数相同,只在列表格式方面稍有差异。

    --group<群组名称> 此参数的效果和指定"-G"参数相同。

    --Group<群组识别码> 此参数的效果和指定"-G"参数相同。

    --pid<进程识别码> 此参数的效果和指定"-p"参数相同。

    --rows<显示列数> 此参数的效果和指定"--lines"参数相同。

    --sid<阶段作业> 此参数的效果和指定"-s"参数相同。

    --tty<终端机编号> 此参数的效果和指定"-t"参数相同。

    --user<用户名称> 此参数的效果和指定"-U"参数相同。

    --User<用户识别码> 此参数的效果和指定"-U"参数相同。

    --version 此参数的效果和指定"-V"参数相同。

    --widty<每列字符数> 此参数的效果和指定"-cols"参数相同。 

     

    常用命令:

    ps -ef

    ps aux

       ps aux输出格式

       USER PID %CPU %MEM VSZ RSS TTY STATSTART TIME COMMAND

     

    USER: 进程拥有者

    PID:pid

    %CPU:占用的cpu使用率

    VSZ:占用的内存使用率

    RSS:占用的虚拟内存大小

    TTY:是否为登入者执行的程序,若为tty1-tty6,为本机登入者,若为pts/??,则为远程登入者。

    STAT:程序的状态,R:正在执行中,S:睡眠,T:正在检测或者停止,Z:死亡程序

    START:程序开始时间

    TIME:程序运行的时间

    COMMAND:所执行的指令。

     

    =========================================================================================================================================

    iotop使用说明:

    首先使用命令iotop查看信息:

    Machine generated alternative text:《 O I s 、 8 03 - 3 :311YM YSIO 01 - s 、 8 33 3 YSIO 01 N 18*.S 山 Il 亠 10 ㄩ 亠 10 山 「 '3188 018 00 」 寸 、 山 q 6E38E 00 」 寸 丶 山 q I 00 」 寸 丶 山 q 00 」 寸 丶 00 」 寸 丶 山 q 寸 00 」 寸 丶 S 00 」 寸 丶 9 00 」 寸 丶 山 q 00 」 寸 丶 山 q 8 00 」 寸 丶 山 q 6 00 」 寸 丶 山 q 91 00 」 寸 丶 山 q 11 00 」 寸 丶 山 q 00 」 寸 丶 山 q El 00 」 寸 丶 山 q VI 00 」 寸 丶 山 q SI 00 」 寸 丶 山 q 91 00 」 寸 丶 山 q LI 00 」 寸 丶 山 q 81 00 」 寸 丶 山 q 61 00 」 寸 丶 山 q 00 」 寸 丶 山 q It 00 」 寸 丶 山 q 00 」 寸 丶 山 q t't 00 」 寸 丶 山 q St 00 」 寸 丶 山 q 00 」 寸 丶 山 q Lt 00 」 寸 丶 山 q 8t 00 」 寸 丶 山 q 6t

    在这个界面按p键可以将TID变为PID,按o键可以将当前活跃的显示出来而不是显示所有进程:

    Machine generated alternative text:Total PIC 3912€ DISK READ: USER be/4 root B/S Total DISK WRITE: €.0€ B/S 345.92 K,'s 0.00 B/S

    根据PID可以查看一下对应的进程:

    Machine generated alternative text:[ root@Dancent0S65 €g:24 €g:25 root root ps 3912€ €.6 €.€ 39124 €.€ €.€ aux I grep 39126 1€31€4 852 pts/2 1€33€8 82€ pts/4 rz -e €:ø€ grep 3912€

    展开全文
  • 相信很多从事linux后台开发工作的都接触过同步&异步、阻塞&非阻塞这样的概念,也相信都曾经产生过误解,比如认为同步就是阻塞、异步就是非阻塞,下面我们先剖析下这几个概念分别是什么含义。 同步: 所谓同步,就是...
  • linux 网络编程 IO复用解释

    千次阅读 2013-08-17 11:31:27
    IO复用:所谓的IO服务是相当于前面的服务器实现来说的,前面的服务器是每当一个客户端连接时分配一个处理单元(一个进程或一个线程) 每一个这样的处理单元都要完成从connect,accept,到send,select,recv处理数据的...
  • Linux下五种网络IO模型

    千次阅读 2019-05-24 16:45:03
    本文我们主要来了解一下Unix/Linux下5种网络IO模型:blocking IO, nonblocking IO, IO multiplexing, signal driven IO, asynchronous IO的基本原理,更好的理解在高级语言中的异步编程,一起来看看吧,希望对大家...
  • Linux五种IO模型

    千次阅读 2016-04-14 00:56:23
    Linux五种IO模型 转载:http://blog.csdn.net/jay900323/article/details/18141217    Linux五种IO模型性能分析   目录(?)[-] 概念理解Linux下的五种IO模型 阻塞IO模型非阻塞IO模型 IO复用模型...
  • linux下阻塞IO程序源码
  • 今天小编就为大家分享一篇关于Linux IO多路复用之epoll网络编程,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • linux平台服务器网络编程 epoll 模型 代码测试通过
  • LinuxC应用程序编程,IO、进程、网络
  • linux下5种网络IO模型简介

    千次阅读 2016-02-23 14:38:09
    同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么?到底有什么区别?对于这个问题,不同的人给出的答案可能不同,比如wiki,就认为asynchronous IO和non...
  • 漫谈linux文件IO

    2019-03-20 09:27:04
    Linux 开发中,有几个关系到性能的东西,技术人员非常关注:进程,CPU,MEM,网络IO,磁盘IO。本篇文件打算详细全面,深入浅出。剖析文件IO的细节。从多个角度探索如何提高IO性能。本文尽量用通俗易懂的视角去阐述...
  • 2012.3.22 linux进程,线程,网络编程
  • 获取linux命令运行结果 import java.io.IOException; import java.io.InputStreamReader; import java.io.LineNumberReader; public class Runcommand { public static String runCommand(String CMD) { S
  • linux服务器查看IO

    2015-10-16 10:06:00
    为了方便各位和自己今后遇到此类问题能尽快解决,我这里将查看linux服务器硬盘IO访问负荷的方法同大家一起分享:  首先 、用top命令查看  top - 16:15:05 up 6 days, 6:25, 2 users, load average: 1.45, 1.77, ...
  • linux中查看io的相关命令

    热门讨论 2011-05-31 14:41:29
    此文档描述了在linux操作系统下查看io状态的若干命令使用方法。
  • linux五种IO模型

    万次阅读 多人点赞 2018-07-01 12:43:36
    为了更好的理解五种IO模型,我们先来说一下几个概念:同步,异步,阻塞和非阻塞。 同步和异步  这两个概念与消息的通知机制有关。 同步  所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用...
  • top(监控CPU/内存/进程/...# 查询PID为7275的线程数 ps hH p 7275 |wc -l # 关键字为java 的进程的线程数 pstree -p `ps -e | grep java | awk '{print $1}'` | wc -l # 查询7275的线程 pstree -p 7275 #...
  • linux 磁盘io监控

    万次阅读 2018-04-14 14:23:45
    我们在线上linux服务器排查问题时,一般会通过top、free、netstat、df -h等命令排查cpu、内存、网络和磁盘等问题。有的时候我们需要更进一步了解磁盘io的使用情况,那么本文就是重点讲解一下如何查看linux的磁盘io...
  • Linux 查看磁盘IO的使用

    千次阅读 2020-08-06 11:12:57
    我们在线上linux服务器排查问题时,一般会通过top、free、netstat、df -h等命令排查cpu、内存、网络和磁盘等问题。有的时候我们需要更进一步了解磁盘io的使用情况,那么本文就是重点讲解一下如何查看linux的磁盘io...
  • Linux 五种IO模型

    千次阅读 2018-05-27 07:42:40
    聊聊Linux 五种IO模型 猿码道 关注2016.05.18 08:15* 字数 7975 阅读 22866评论 15喜欢 115赞赏 3上一篇《聊聊同步、异步、阻塞与非阻塞》已经通俗的讲解了,要理解同步、异步、阻塞与非阻塞重要的两个概念点了...
  • linux VM与容器的网络IO性能测试

    千次阅读 2017-08-15 17:55:07
    linux VM与容器的网络IO测试测试由KVM,vmwarm,virtualbox生产的VM和docker容器的网络IO性能; 测试过程: 1)分别在同一台物理机安装kvm和virtualbox的hypervisor,生产kvm,virtualbox的centos73最小化安装实例...
  • 本课程主要讲解linux中的文件读写和IO处理,包括API的概念、open函数的重要flag、linux内核管理文件的原理、inode和vnode、文件共享、标准IO等。终目的是让大家理解并掌握在linux中使用API和库函数进行文件操作的...
  • linux下文件io的操作

    2013-04-27 19:05:21
    基于linux网络编程的入门,实现对文件的操作,对目录的操作,实现文件的所有函数,所有函数都通过详细的注释,让你真正的理解对文件的操作,是网络编程的最佳入门选择,所有的函数的参数都通过详细的注解
  • 文件中详细描述了,Linux中的文件IO内容,跟标准IO内容详解,以及两者之间的区别,并进进行了比较,新人比较容易看明白
  • Linux IO模型.emmx

    2020-05-06 20:34:50
    详细描述了linux io模型(NIO、BIO、select、poll、epoll)的特点以及应用场景
  • Linux下的IO端口和IO内存

    千次阅读 2012-08-27 10:34:06
    说明:本文系通过阅读网络上诸多相关文章,整理而成。   设备驱动程序要直接访问外设或其接口卡上的物理电路,这部分通常都是以寄存器的形式出现。外设寄存器也称为I/O端口,通常包括:控制寄存器、状态寄存器和...
  • 聊聊Linux 五种IO模型

    千次阅读 2017-03-24 22:39:53
    参考网络上相关内容即可: 五种IO模型 UNIX网络编程读书笔记:I/O模型(阻塞、非阻塞、I/O复用、信号驱动、异步)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 206,532
精华内容 82,612
关键字:

linux查询网络io

linux 订阅