服务器如何测内存
Linux服务器内存查看
方法一:使用Xshell登录Linux服务器,直接使用命令free -m命令进行查看,m参数为使用M显示,也可以free -g显示。从图上可看到
Mem:内存的使用情况总览表
total 内存总数: 1821Mused 已经使用的内存数: 924Mfree 空闲的内存数: 116Mbuff/cache 缓存内存数:780M
Swap则为交换分区使用情况
注:物理内存(totel)=系统看到的用掉的内存(used)+系统看到空闲的内存(free)
方法二:使用top命令查看,如图红色标记部分三行为内存使用情况
第一行:物理内存使用情况
第二行:swap交换分区内存使用情况
第三行:VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA SHR共享内存大小,单位kb
方法三:vmstat可实时动态监视操作系统的虚拟内存、进程、CPU活动
用法:vmstat [-V] [-n] [delay [count]]
-V表示打印出版本信息;
-n表示在周期性循环输出时,输出的头部信息仅显示一次;
delay是两次输出之间的延迟时间;
count是指按照这个时间间隔统计的次数
例如:vmstat 5 6为间隔5秒统计一次,共统计5次
END
windows服务器内存查看
win10电脑举例(win7或者其他系统类似),在电脑下方任务栏,鼠标右键点击“任务管理器”进入(或者使用键盘快捷键CTRL+ALT+delete调出任务管理器)
在任务管理器上方选择“性能”-左侧“内存”,可以在右侧的图像上查看内存的使用曲线图,以及占比情况
点击资源管理器,在内存界面,可以看到内存是由哪些应用使用,可以动态管理和监测,非常实用
使用ulimit工具来限制,安装ulimit,然后下面是它的用法:
ulimit命令的参数有
-a 显示当前所有的资源限制
-c size:设置core文件的最大值单位:blocks
-d size:设置数据段的最大值单位:kbytes
-f size:设置创建文件的最大值单位:blocks
-l size:设置在内存中锁定进程的最大值单位:kbytes
-m size:设置可以使用的常驻内存的最大值单位:kbytes
-n size:设置内核可以同时打开的文件描述符的最大值单位:n
-p size:设置管道缓冲区的最大值单位:kbytes
-s size:设置堆栈的最大值单位:kbytes
-t size:设置CPU使用时间的最大上限单位:seconds
-v size:设置虚拟内存的最大值单位:kbytes
编辑/etc/security/limitsconf文件,基于特定的组或用户进行限制,例如:
soft core 0
hard rss 10000
@student hard nproc 20
domain以@符号+用户名或者组名对特定的用户或者组做限制,表示所有用户;type字段可以设置为hard也可以设置为soft;item字段指想限制的资源,如cpu,core等;value字段是相应项目的值。
1
从memtestorg上下载memtest86+
500
rc1
ios版本
2
下载完iso
(不到2mb)之后,
它可以被远程挂载到一台安装了ipmi20的服务器上,
并引导至映像
3
按下f2来使用多线程smp模式,就可以开始测试了
BRD 主板上发生错误。
CNFG 发生硬件配置错误。
DASD 发生硬盘驱动器错误。
FAN 风扇发生故障,或者是运行过慢,或者是
已卸下风扇。TEMP 指示灯可能也会点
亮。
LINK 保留。
LOG 已将错误消息写入系统事件日志。查看IMM 系统事件日志和系统错误日志,获取有关错误的信息。
MEM 当只有MEM 指示灯点亮时,才表示发生
了内存错误。
当MEM 指示灯和CNFG 指示灯都点亮
时,表示内存配置无效。
O V E R SPEC
由于某个电源通道上出现电源超负荷情
况,所以关闭了服务器。电源功率超过最
大额定值。
PS 电源发生故障。
RAID RAID阵列出错。
SP 服务处理器(IMM)发生故障。
TEMP 系统温度已超出阈值级别。发生故障的风
扇会导致TEMP 指示灯点亮。
VRM 模块。
serveraid manger,在Windows下安装,下载最新版本即可,老一点的版本可能需要安装后重启服务器可看到阵列信息
内存是Linux内核所管理的最重要的资源之一。内存管理系统是操作系统中最为重要的部分,因为系统的物理内存总是少于系统所需要的内存数量。虚拟内存就是为了克服这个矛盾而采用的策略。系统的虚拟内存通过在各个进程之间共享内存而使系统看起来有多于实际内存的内存容量。Linux支持虚拟内存, 就是使用磁盘作为RAM的扩展,使可用内存相应地有效扩大。核心把当前不用的内存块存到硬盘,腾出内存给其他目的。当原来的内容又要使用时,再读回内存。
一、内存使用情况监测
(1)实时监控内存使用情况
在命令行使用“Free”命令可以监控内存使用情况
代码如下:
#free
total used free shared buffers cached
Mem: 256024 192284 63740 0 10676 101004
-/+ buffers/cache: 80604 175420
Swap: 522072 0 522072
上面给出了一个256兆的RAM和512兆交换空间的系统情况。第三行输出(Mem:)显示物理内存。total列不显示核心使用的物理内存(通常大约1MB)。used列显示被使用的内存总额(第二行不计缓冲)。 free列显示全部没使用的内存。Shared列显示多个进程共享的内存总额。Buffers列显示磁盘缓存的当前大小。第五行(Swap:)对对换空间,显示的信息类似上面。如果这行为全0,那么没使用对换空间。在缺省的状态下,free命令以千字节(也就是1024字节为单位)来显示内存使用情况。可以使用—h参数以字节为单位显示内存使用情况,或者可以使用—m参数以兆字节为单位显示内存使用情况。还可以通过—s参数使用命令来不间断地监视内存使用情况:
#free –b –s2
这个命令将会在终端窗口中连续不断地报告内存的使用情况,每2秒钟更新一次。
(2)组合watch与 free命令用来实时监控内存使用情况:
代码如下:
#watch -n 2 -d free
Every 20s: free Fri Jul 6 06:06:12 2007
total used free shared buffers cached
Mem: 233356 218616 14740 0 5560 64784
-/+ buffers/cache: 148272 85084
Swap: 622584 6656 615928
watch命令会每两秒执行 free一次,执行前会清除屏幕,在同样位置显示数据。因为 watch命令不会卷动屏幕,所以适合出长时间的监测内存使用率。可以使用 -n选项,控制执行的频率;也可以利用 -d选项,让命令将每次不同的地方显示出来。Watch命令会一直执行,直到您按下 [Ctrl]-[C] 为止。
二、虚拟内存的概念
(1)Linux虚拟内存实现机制
Linux虚拟内存的实现需要六种机制的支持:地址映射机制、内存分配回收机制、缓存和刷新机制、请求页机制、交换机制、内存共享机制。
首先内存管理程序通过映射机制把用户程序的逻辑地址映射到物理地址,在用户程序运行时如果发现程序中要用的虚地址没有对应的物理内存时,就发出了请求页要求;如果有空闲的内存可供分配,就请求分配内存(于是用到了内存的分配和回收),并把正在使用的物理页记录在缓存中(使用了缓存机制)。 如果没有足够的内存可供分配,那么就调用交换机制,腾出一部分内存。另外在地址映射中要通过TLB(翻译后援存储器)来寻找物理页;交换机制中也要用到交换缓存,并且把物理页内容交换到交换文件中后也要修改页表来映射文件地址。
(2)虚拟内存容量设定
也许有人告诉你,应该分配2倍于物理内存的虚拟内存,但这是个不固定的规律。如果你的物理保存比较小,可以这样设定。如果你有1G物理内存或更多的话,可以缩小一下虚拟内存。Linux会把大量的内存用做Cache的,但在资源紧张时回收回。你只要看到swap为0或者很小就可以放心了,因为内存放着不用才是最大的浪费。
三、使甩vmstat命令监视虚拟内存使用情况
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监视。它是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。通常使用vmstat 5 5(表示在5秒时间内进行5次采样)命令测试。将得到一个数据汇总它可以反映真正的系统情况。
代码如下:
#vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
1 0 62792 3460 9116 88092 6 30 189 89 1061 569 17 28 54 2
0 0 62792 3400 9124 88092 0 0 0 14 884 434 4 14 81 0
0 0 62792 3400 9132 88092 0 0 0 14 877 424 4 15 81 0
1 0 62792 3400 9140 88092 0 0 0 14 868 418 6 20 74 0
1 0 62792 3400 9148 88092 0 0 0 15 847 400 9 25 67 0
vmstat命令输出分成六个部分:
(1)进程procs:
r:在运行队列中等待的进程数 。
b:在等待io的进程数 。
(2)内存memoy:
swpd:现时可用的交换内存(单位KB)。
free:空闲的内存(单位KB)。
buff: 缓冲去中的内存数(单位:KB)。
cache:被用来做为高速缓存的内存数(单位:KB)。
(3) swap交换页面
si: 从磁盘交换到内存的交换页数量,单位:KB/秒。
so: 从内存交换到磁盘的交换页数量,单位:KB/秒。
(4) io块设备:
bi: 发送到块设备的块数,单位:块/秒。
bo: 从块设备接收到的块数,单位:块/秒。
(5)system系统:
in: 每秒的中断数,包括时钟中断。
cs: 每秒的环境(上下文)切换次数。
(6)cpu中央处理器:
cs:用户进程使用的时间 。以百分比表示。
sy:系统进程使用的时间。 以百分比表示。
id:中央处理器的空闲时间 。以百分比表示。
如果 r经常大于 4 ,且id经常小于40,表示中央处理器的负荷很重。 如果bi,bo 长期不等于0,表示物理内存容量太小。
四、Linux 服务器的内存泄露和回收内存的方法
1、内存泄漏的定义:
一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用free或delete释放该内存块,否则,这块内存就不能被再次使用,我们就说这块内存泄漏了。
2、内存泄露的危害
从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到。存在内存泄漏问题的程序除了会占用更多的内存外,还会使程序的性能急剧下降。对于服务器而言,如果出现这种情况,即使系统不崩溃,也会严重影响使用。
3、内存泄露的检测和回收
对于内存溢出之类的麻烦可能大家在编写指针比较多的复杂的程序的时候就会遇到。在 Linux 或者 unix 下,C、C++语言是最使用工具。但是我们的 C++ 程序缺乏相应的手段来检测内存信息,而只能使用 top 指令观察进程的动态内存总额。而且程序退出时,我们无法获知任何内存泄漏信息。
使用kill命令
使用Linux命令回收内存,我们可以使用Ps、Kill两个命令检测内存使用情况和进行回收。在使用超级用户权限时使用命令“Ps”,它会列出所有正在运行的程序名称,和对应的进程号(PID)。Kill命令的工作原理是:向Linux操作系统的内核送出一个系统操作信号和程序的进程号(PID)。
应用例子:
为了高效率回收内存可以使用命令ps 参数v:
代码如下:
[root@www ~]# ps v
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
2542 tty1 Ss+ 0:00 0 8 1627 428 01 /sbin/mingetty tty1
2543 tty2 Ss+ 0:00 0 8 1631 428 01 /sbin/mingetty tty2
2547 tty3 Ss+ 0:00 0 8 1631 432 01 /sbin/mingetty tty3
2548 tty4 Ss+ 0:00 0 8 1627 428 01 /sbin/mingetty tty4
2574 tty5 Ss+ 0:00 0 8 1631 432 01 /sbin/mingetty tty5
2587 tty6 Ss+ 0:00 0 8 1627 424 01 /sbin/mingetty tty6
2657 tty7 Ss+ 1:18 12 1710 29981 7040 30 /usr/bin/Xorg :0 -br -a
2670 pts/2 Ss 0:01 2 682 6213 1496 06 -bash
3008 pts/4 Ss 0:00 2 682 6221 1472 06 /bin/bash
3029 pts/4 S+ 0:00 2 32 1783 548 02 ping 192168112
3030 pts/2 R+ 0:00 2 73 5134 768 03 ps v
然后如果想回收Ping命令的内存的话,使用命令:
代码如下:
# Kill -9 3029
使用工具软件
Memprof是一个非常具有吸引力且非常易于使用的软件,它由Red Hat的Owen Talyor创立。这个工具是用于GNOME前端的Boehm-Demers-Weiser垃圾回收器。这个工具直接就可以执行,并且其工作起来无需对源代码进行任何修改。在程序执行时,这个工具会以图形化的方式显示内存的使用情况。
1,Linux下可以在/proc/cpuinfo中看到每个cpu的详细信息。但是对于双核的cpu,在cpuinfo中会看到两个cpu。常常会让人误以为是两个单核的cpu。
其实应该通过Physical Processor ID来区分单核和双核。而Physical Processor ID可以从cpuinfo或者dmesg中找到 flags 如果有 ht 说明支持超线程技术 判断物理CPU的个数可以查看physical id 的值,相同则为同一个物理CPU
2,查看内存大小:
cat /proc/meminfo |grep MemTotal
3,其他一些可以查看详细linux系统信息的命令和方法:
uname -a # 查看内核/操作系统/CPU信息的linux系统信息命令
head -n 1 /etc/issue # 查看操作系统版本,是数字1不是字母L
cat /proc/cpuinfo # 查看CPU信息的linux系统信息命令
hostname # 查看计算机名的linux系统信息命令
lspci -tv # 列出所有PCI设备
lsusb -tv # 列出所有USB设备的linux系统信息命令
lsmod # 列出加载的内核模块
env # 查看环境变量资源
free -m # 查看内存使用量和交换区使用量
df -h # 查看各分区使用情况
du -sh # 查看指定目录的大小
grep MemTotal /proc/meminfo # 查看内存总量
grep MemFree /proc/meminfo # 查看空闲内存量
uptime # 查看系统运行时间、用户数、负载
cat /proc/loadavg # 查看系统负载磁盘和分区
mount | column -t # 查看挂接的分区状态
fdisk -l # 查看所有分区
swapon -s # 查看所有交换分区
hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
dmesg | grep IDE # 查看启动时IDE设备检测状况网络
ifconfig # 查看所有网络接口的属性
iptables -L # 查看防火墙设置
route -n # 查看路由表
netstat -lntp # 查看所有监听端口
netstat -antp # 查看所有已经建立的连接
netstat -s # 查看网络统计信息进程
0条评论