l lsof –i:@ip 可以列出某个指定ip上的所有网络连接通讯,例如执行lsof -i@192.168.1.221 命令可以查看到192.168.1.221这个ip上的所有的网络连接通讯
l lsof –i 网络协议 可以列出某个指定协议下的网络连接信息
lsof –i tcp 命令可以列出tcp下所有的网络连接信息
lsof -i tcp:80 命令可以列出tcp下80端口所有的网络连接信息
lsof –i udp 命令可以列出udp下所有的网络连接信息
lsof -i udp:323 命令可以列出udp下323端口所有的网络连接信息
1.1.4 如何通过free看懂内存的真实使用
free命令是linux操作系统中对内存进行查看和监控的一个常用命令,我们可以直接执行free命令来看下可以获取到操作系统内存使用的哪些数据
默认直接执行free 获取到的内存数据的单位都是k,Mem这一行展示的是物理内存的使用情况,Swap这一行展示的是内存交换区(通常也叫虚拟内存)的整体使用情况。
l total列展示的为系统总的可用物理内存和交换区的大小,单位为k
l used列展示的为已经被使用的物理内存和交换区的大小,单位为k
l free列展示的为还有多少物理内存和交换区没有被使用,单位为k
l shared 列展示的为共享区占用的物理内存大小,单位为k
l buff/cache 列展示的为被缓冲区和page高速缓存合计使用的物理内存大小,单位为k
buff在操作系统中指的是缓冲区,是负责磁盘块设备的读写缓冲,会直接占用物理内存。
cache 指的是操作系统中的 page cache(也就是通常所说的高速缓存),高速缓存是linux内核实现的磁盘缓存,可以减少内核对磁盘的I/O读写操作,会将磁盘中的数据缓存到物理内存中,这样对磁盘的访问就会变为对物理内存的访问,从而大大提高了读写速度。cache 有一点类似应用程序中使用redis来做缓存一样,把一些经常需要访问的数据存储到内存中来提高访问的速度。
l available 列展示的为还可以被使用的物理内存的大小,单位为k。通常情况下,available 的值等于free+ buff/cache ,linux内核为了提高磁盘读写的速度会使用一部分物理内存去缓存经常被使用的磁盘数据,所以buffer 和 cache对于Linux操作系统的内核来说都属于已经被使用的内存,而free列展示的是真实未被任何地方使用的物理内存,但是如果物理内存已经不够用并且应用程序恰巧又需要使用内存时内核就会从 buffer 和 cache 中回收内存来满足应用程序的使用,也就是说buffer 和 cache占用的内存是可以被内核释放的。
1.1.5 网络流量如何监控备注:作者的原创文章,转载须注明出处。原创文章归作者所有,欢迎转载,但是保留版权。对于转载了博主的原创文章,不标注出处的,作者将依法追究版权,请尊重作者的成果。
本文作者:张永清 文章选自 作者2020年初即将出版的《性能测试分析与性能诊断调优核心思想》一书。
在linux中,可以使用iftop命令来对服务器网卡的网络流量进行监控,iftop并不是linux操作系统中本身就有的工具,需要单独进行安装,可以从~pdw/iftop/ 网站中下载iftop工具。
下载完成后,首先执行./configure 命令进行安装前的自动安装配置检查
[root@localhost iftop-1.0pre4]# ./configure
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking whether gcc understands -c and -o together... yes
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking sgtty.h usability... yes
checking sgtty.h presence... yes
checking for sgtty.h... yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/sockio.h usability... no
checking sys/sockio.h presence... no
checking for sys/sockio.h... no
checking termio.h usability... yes
checking termio.h presence... yes
checking for termio.h... yes
checking termios.h usability... yes
checking termios.h presence... yes
checking for termios.h... yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for size_t... yes
checking whether time.h and sys/time.h may both be included... yes
checking sys/dlpi.h usability... no
checking sys/dlpi.h presence... no
checking for sys/dlpi.h... no
checking for regcomp... yes
checking for select... yes
checking for strdup... yes
checking for strerror... yes
checking for strspn... yes
checking for library containing socket... none required
checking for library containing log... -lm
checking for gethostbyname... yes
checking for library containing inet_aton... none required
checking for library containing inet_pton... none required
checking for inet_aton... yes
checking for inet_pton... yes
checking size of u_int8_t... unknown type
checking size of u_int16_t... unknown type
checking size of u_int32_t... unknown type
checking for stdint.h... (cached) yes
checking for library containing getnameinfo... none required
checking for library containing gethostbyaddr_r... none required
checking how to call gethostbyaddr_r... 8 args, int return
checking gethostbyaddr_r usability... yes
checking where to find pcap.h... /include
checking for pcap_open_live in -lpcap... yes
checking pcap.h usability... yes
checking pcap.h presence... yes
checking for pcap.h... yes
checking for a curses library containing mvchgat... -lcurses
checking POSIX threads compilation... CFLAGS= and LIBS=-lpthread
checking POSIX threads usability... yes
checking if we need to enable promiscuous mode by default... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config/Makefile
config.status: creating config.h
config.status: executing depfiles commands
configure: WARNING:
******************************************************************************
This is a pre-release version. Pre-releases are subject to limited
announcements, and therefore limited circulation, as a means of testing
the more widely circulated final releases.
Please do not be surprised if this release is broken, and if it is broken, do
not assume that someone else has spotted it. Instead, please drop a note on
the mailing list, or a brief email to me on pdw@ex-parrot.com
Thank you for taking the time to be the testing phase of this development
process.
Paul Warren
******************************************************************************