2019-12-24 20:09:00 qq_15071263 阅读数 2224
  • 阿里云ECS Linux服务器项目部署实战视频课程

    本套课程建立在阿里云linux(centos6.5) 具体内容如下: 1,购买云主机&安装上传工具 2,安装nginx 3,绑定域名(域名备案,虚拟主机绑定等) 4,安装mysql(设定开机启动,环境变量,更改连接密码等) 5,安装php 6,配置nginx识别php 7,安装thinkcmf完成pathinfo模式&伪静态模式的nginx设置 8,安装phpmyadmin&ftp;服务

    7203 人正在学习 去看看 吴华

Linux 服务器内存处理相关


1、free 命令

以kb形式查看内存使用情况

free

              total        used        free      shared  buff/cache   available
Mem:        7733220     7109448      243856        2340      379916      329752
Swap:             0           0           0

以mb 形式查看内存使用情况

free -m
              total        used        free      shared  buff/cache   available
Mem:           7551        6942         237           2         371         321
Swap:             0           0           0
  • total:总计物理内存的大小。
  • used:已使用多大。
  • free:可用有多少。
  • Shared:多个进程共享的内存总额。
  • Buffers/cached:磁盘缓存的大小。

所以空闲内存=free+buffers+cached=total-used

2、查看进程的内存占用情况

pidstat -r -p 14857 1 5  
Linux 3.10.0-957.21.3.el7.x86_64 (iZbp1ey0i1b0ctp4258qn9Z)      12/20/2019      _x86_64_        (4 CPU)

11:58:49 AM   UID       PID  minflt/s  majflt/s     VSZ    RSS   %MEM  Command
11:58:50 AM     0     14857      0.00      0.00 5657180 927892  12.00  java
11:58:51 AM     0     14857      0.00      0.00 5657180 927892  12.00  java
11:58:52 AM     0     14857      0.00      0.00 5657180 927892  12.00  java
11:58:53 AM     0     14857      0.00      0.00 5657180 927892  12.00  java
11:58:54 AM     0     14857      0.00      0.00 5657180 927892  12.00  java
Average:        0     14857      0.00      0.00 5657180 927892  12.00  java

3、查看内存占用最高的前20

ps aux | head -1;ps aux |grep -v PID |sort -rn -k +4 | head -20

4、动态查看内存的使用情况

slabtop
2017-08-09 12:18:05 do_coding 阅读数 576
  • 阿里云ECS Linux服务器项目部署实战视频课程

    本套课程建立在阿里云linux(centos6.5) 具体内容如下: 1,购买云主机&安装上传工具 2,安装nginx 3,绑定域名(域名备案,虚拟主机绑定等) 4,安装mysql(设定开机启动,环境变量,更改连接密码等) 5,安装php 6,配置nginx识别php 7,安装thinkcmf完成pathinfo模式&伪静态模式的nginx设置 8,安装phpmyadmin&ftp;服务

    7203 人正在学习 去看看 吴华
一台服务器放多个项目,或项目比较大时,可能会报memory leak 内存泄漏的警告和错误,处理方法是删除多余的,过期的,暂时不用的项目,重新启动。

2019-12-06 15:06:37 sunsijia21983 阅读数 37
  • 阿里云ECS Linux服务器项目部署实战视频课程

    本套课程建立在阿里云linux(centos6.5) 具体内容如下: 1,购买云主机&安装上传工具 2,安装nginx 3,绑定域名(域名备案,虚拟主机绑定等) 4,安装mysql(设定开机启动,环境变量,更改连接密码等) 5,安装php 6,配置nginx识别php 7,安装thinkcmf完成pathinfo模式&伪静态模式的nginx设置 8,安装phpmyadmin&ftp;服务

    7203 人正在学习 去看看 吴华

早上到单位 发现服务器 mysql 服务器停了 然后起来了

查询日志 显示 内存满了 把mysql服务给杀了 linux 服务器如果 内存满了 会自动清理进程 防止服务器挂掉 选择的话 谁占的的内存大 就先杀谁 我的服务器里面 mysql服务占的内存是最大的 所以就把mysql就给杀了

 

然后 重启mysql 查询内存

 

 

在这说一下 怎么看linux的内存

 

举个例子

如下显示free是显示的当前内存的使用,-m的意思是M字节来显示内容.我们来一起看看.

 

$ free -m

total  used  free  shared  buffers  cached

Mem:  1002M  769M 232M  0M  62M  421M

-/+ buffers/cache:  286M  715M

Swap:  1153M  0M  1153M

---------------------------

真实内存占用 = used-buffers-cached = 286M

-----------------

 

第一部分Mem行:

total 内存总数: 1002M

used 已经使用的内存数: 769M

free 空闲的内存数: 232M

shared 当前已经废弃不用,总是0

buffers Buffer 缓存内存数: 62M

cached Page 缓存内存数:421M

 

关系:total(1002M) = used(769M) + free(232M)

 

第二部分(-/+ buffers/cache):

(-buffers/cache) used内存数:286M (指的第一部分Mem行中的used - buffers - cached)

(+buffers/cache) free内存数: 715M (指的第一部分Mem行中的free + buffers + cached)

 

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

 

第三部分是指交换分区, 我想不讲大家都明白.

 

我想大家看了上面,还是很晕.第一部分(Mem)与第二部分(-/+ buffers/cache)的结果中有关used和free为什么这么奇怪.

其实我们可以从二个方面来解释.

对操作系统来讲是Mem的参数.buffers/cached 都是属于被使用,所以它认为free只有232.

对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

 

所以,以应用来看看,以(-/+ buffers/cache)的free和used为主.所以我们看这个就好了.另外告诉大家一些常识.Linux为了提高磁盘和内存存取效率, Linux做了很多精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路 径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache能有效缩短了 I/O系统调用(比如read,write,getdents)的时间。

 

记住内存是拿来用的,不是拿来看的.不象windows, 无论你的真实物理内存有多少,他都要拿硬盘交换文件来读.这也就是windows为什么常常提示虚拟空间不足的原因.你们想想,多无聊,在内存还有大部分的时候,拿出一部分硬盘空间来充当内存.硬盘怎么会快过内存.所以我们看linux,只要不用swap的交换空间,就不用担心自己的内存太少.如果常常 swap用很多,可能你就要考虑加物理内存了.这也是linux看内存是否够用的标准哦.

--------------------------------------------------------------------------------------------------------------------------

接来下

发现服务器的内存就剩1.9G了 再用top命令 查看一下

 

第一行top分别为:当前时间;系统运行天数;使用者个数;系统负载的平均值,后面的三个值分别为1分钟前、5分钟前、15分钟前进程的平均数,这个数值超过 CPU 数目时,说明负载过高

第二行Tasks分别为:进程总数;运行进程数;睡眠进程数;被停止的进程数;被复原的进程数

第三行CPU(s)分别为:

us:user 用户空间占用cpu的百分比 
sy:system 内核空间占用cpu的百分比 
ni:niced 改变过优先级的进程占用cpu的百分比 
空闲cpu百分比 
wa:IO wait IO等待占用cpu的百分比 
hi:Hardware IRQ 硬中断 占用cpu的百分比 
si:software 软中断 占用cpu的百分比 
st:被hypervisor偷去的时间

第四行Mem分别为:总内存;已用内存;空闲内存;缓冲使用中内存

第五行(Swap):类似第四行,但反映着交换分区(Swap)的使用情况。交换分区(Swap)被频繁使用,可以看作物理内存不足而造成的

top 输出界面的顶端,也显示了系统整体的内存使用情况,这些数据跟 free 类似,我就不再重复解释。我们接着看下面的内容,跟内存相关的几列数据,比如 VIRT、RES、SHR 以及 %MEM 等。

这些数据,包含了进程最重要的几个内存使用情况,我们挨个来看。

  • VIRT 是进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内。
  • RES 是常驻内存的大小,也就是进程实际使用的物理内存大小,但不包括 Swap 和共享内存。
  • SHR 是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等。
  • %MEM 是进程使用物理内存占系统总内存的百分比。

除了要认识这些基本信息,在查看 top 输出时,你还要注意两点。

第一,虚拟内存通常并不会全部分配物理内存。从上面的输出,你可以发现每个进程的虚拟内存都比常驻内存大得多。

第二,共享内存 SHR 并不一定是共享的,比方说,程序的代码段、非共享的动态链接库,也都算在 SHR 里。当然,SHR 也包括了进程间真正共享的内存。所以在计算多个进程的内存使用时,不要把所有进程的 SHR 直接相加得出结果。

只是这样看 还是不行 感觉内存 不应该 占用很多 然后 使用命令 查看 当前系统有多少进程

ps -ef  | wc -l

 

然后使用命令查看占用内存最大的500个进程:

ps -aux | sort -k4nr | head -n 500

截取部分 PHP的进程 占到了200个 每个都100多兆

 

 

解释一下含义

USER: 行程拥有者

PID: pid

%CPU: 占用的 CPU 使用率

%MEM: 占用的记忆体使用率

VSZ: 占用的虚拟记忆体大小

RSS: 占用的记忆体大小

TTY: 终端的次要装置号码 (minor device number of tty)

STAT: 该行程的状态,linux的进程有5种状态:

D 无法中断的休眠状态(通常 IO 的进程);

R 正在运行可中在队列中可过行的;

S 处于休眠状态;

T 停止或被追踪;

W 进入内存交换  (从内核2.6开始无效);

X 死掉的进程   (基本很少見);

Z 僵尸进程;

< 优先级高的进程

N 优先级较低的进程

L 有些页被锁进内存;

s 进程的领导者(在它之下有子进程);

l 多进程的(使用 CLONE_THREAD, 类似 NPTL pthreads);

+ 位于后台的进程组;

注: 其它状态还包括W(无驻留页), <(高优先级进程), N(低优先级进程), L(内存锁页).

START: 行程开始时间

TIME: 执行的时间

COMMAND:所执行的指令

查询PHP-fpm 总进程数

pstree|grep​ php-fpm

然后 查询 php-fpm 进程

ps -ef|grep php-fpm

发现PHP起了四个主进程 这里截取了三个

 

然后看的PHP 的配置文件

 

发现配置的 是 静态 配置的50个进程 四个主进程 每个配50个子进程 就200多个进程     进程太多了    平时的话  一般就六七个进程在处理    修改 进程数量   把50  改成10      这个进程数量  根据自己服务器的内存大小  来设置

查看当前php-fpm进程的内存占用情况及启动时间,命令如下:

ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid'|grep www|sort -nrk5

查看当前php-fpm进程平均占用内存情况,一般来说一个php-fpm进程占用的内存为30-40MB,命令如下:

ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'

然后我重启了PHP 指定配置文件

步骤

先  查找  然后  杀死

ps aux |grep php

kill 21605 (进程pid)

检测

 

启动

./php-fpm -y /usr/local/php/etc/php-fpm.conf

重启完 内存就降下来了

然后就事查找问题 猜测是内存泄露 但是不确定是哪里 对一些感觉有问题的地方 加上了unset()

然后检测 发现 内存一直都很平稳

如果内存还是一直增加 可以限制内存大小

设置方法:编辑php-fpm.conf配置文件

php_admin_value[memory_limit] = 128M(我服务器上的配置文件在/etc/php5/fpm/pool.d/www.conf 这个文件是被包含在php-fpm.conf里的) 后边的数字可以随便更改:32M,64M,128M,256M,512M,这个设置可根据你的服务器内存大小和你的需求来写,修改后要加载一下php-fpm服务。

这个时候 程序那个步骤出问题了 就说明哪里有内存泄露 但是也不是绝对的 这里还要了解一下 PHP的垃圾回收机制

如果你在一个进程里面 应该也是 累加的 也不是很好判断 就要根据程序 对不用的变量进程销毁 或者 限制 PHP的进程数量

注: 普通用户数据1000条 存在数组里面 大约占2246.2734375kb

普通用户数据2000条 存在数组里面 大约占4472.8671875kb

 

2011-12-30 11:18:29 huyangg 阅读数 706
  • 阿里云ECS Linux服务器项目部署实战视频课程

    本套课程建立在阿里云linux(centos6.5) 具体内容如下: 1,购买云主机&安装上传工具 2,安装nginx 3,绑定域名(域名备案,虚拟主机绑定等) 4,安装mysql(设定开机启动,环境变量,更改连接密码等) 5,安装php 6,配置nginx识别php 7,安装thinkcmf完成pathinfo模式&伪静态模式的nginx设置 8,安装phpmyadmin&ftp;服务

    7203 人正在学习 去看看 吴华
 

查看Linux服务器的内存使用情况

《构建高可用Linux服务器》第1章Linux服务器构建基础,本章从Centos5.5 x86_64的安装、网络配置、日志分析、性能及状态监控、优化及虚拟化等方面对Linux硬件进行了全方位的说明,这些都是构建高性能及高可用Linux系统的基础,希望大家能够掌握此章内容。本节为大家介绍查看Linux服务器的内存使用情况。

AD:


1.2.2 查看Linux服务器的内存使用情况

查看Linux服务器下的内存使用情况,可以使用命令free -m。注意此命令只在Linux下有效,在FreeBSD中没有此命令。命令如下所示:

 

used:已经使用的内存数

free:空闲的内存数

shared:多个进程共享的内存总额

-buffers/cache:(已用)的内存数,即used-buffers-cached

+buffers/cache:(可用)的内存数,即free+buffers+cached

得出结论:

可用内存的计算公式为:

可用内存=free+buffers+cached,即2551MB+268MB+917MB=3737MB

很久以前在笔记本上用Ubuntu8.04时就觉得Linux管理内存的机制非常优秀,简而言之:Linux的内存是拿来用的,而不是拿来看的。我与一个朋友探讨Linux的使用情况时,他问我为什么Linux使用的内存这么高。他机器上1GB的内存free才232MB,而Windows XP才用了200MB不到的样子。这其实是被Linux的free命令之表象迷惑了,Linux的内存使用是很有讲究的。还是举例说明,如下的free命令所显示的是当前内存的使用情况,-m的意思是用M个字节来显示内容,我们来一起看看。

 

在第一部分Mem行中有如下参数。

total:内存总数,即1002MB

used:已经使用的内存数,即769MB

free:空闲的内存数,即232MB

shared:当前已经废弃不用,总是0

buffers Buffer:缓存内存数,即62MB

cached Page:缓存内存数,即421MB

其中,内存总数与已使用内存数和空闲内存数的关系是:

total(1002M)=used(769M)+free(232M)

在第二部分内容(-/+buffers/cache)中各参数如下所示。

(-buffers/cache):used内存数,即286MB(指的是第一部分Mem行中的used-buffers-cached)。

(+buffers/cache):free内存数,即715MB(指的是第一部分Mem行中的free+buffers+cached)。

可见-buffers/cache反映的是被程序实实在在用掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三部分是指交换(swap)分区,大家应该都明白,这里就不再讲了。

有可能大家看了上面的解释还是不太明白。比如:第一部分(Mem)与第二部分(-/+buffers/cache)的结果有关,used和free为什么这么奇怪?其实我们可以从两个方面来分析。对操作系统来讲这两项是Mem的参数,buffers/cached都属于被使用,所以它认为free只有232MB;对应用程序来讲+buffers/cached等同于可用的内存,因为buffer/cached可提高程序执行的性能,当程序使用内存时,buffer/cached很快就会被使用。所以从应用的角度来看,应以(-/+buffers/cache)的free和used为主,即我们主要看与它相关的free和used就可以了。另外告诉大家一些常识,为了提高磁盘和内存的存取效率,对Linux做了很多精心的设计,除了对dentry进行缓存(用于VFS、加速文件路径名到inode的转换)外,还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者用于针对磁盘块的读写,后者用于针对文件inode的读写。这些Cache能有效地缩短I/O系统调用(比如read、write、getdents)的时间。

在Linux中,内存是拿来用的,不是拿来看的。而在Windows中,无论你的真实物理内存有多少,它都会用硬盘交换文件来读,即使是内存还有一大部分。这也就是Windows常常提示虚拟空间不足的原因。可以想见,硬盘怎么会快过内存,所以我们在观察Linux的内存使用情况时,只要没发现用swap的交换空间,就不用担心自己的内存太少。如果常常看到swap用了很多,那么你就要考虑加物理内存了。这也是在Linux服务器上看内存是否够用的标准。

 

原文地址:    http://book.51cto.com/art/201111/300734.htm

2016-04-05 15:20:58 a694704123b 阅读数 650
  • 阿里云ECS Linux服务器项目部署实战视频课程

    本套课程建立在阿里云linux(centos6.5) 具体内容如下: 1,购买云主机&安装上传工具 2,安装nginx 3,绑定域名(域名备案,虚拟主机绑定等) 4,安装mysql(设定开机启动,环境变量,更改连接密码等) 5,安装php 6,配置nginx识别php 7,安装thinkcmf完成pathinfo模式&伪静态模式的nginx设置 8,安装phpmyadmin&ftp;服务

    7203 人正在学习 去看看 吴华

关键词

查看Linux服务器内存使用情况

摘要

一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在。

本文介绍如何查看Linux服务器内存使用情况,


1、free命令

free -m

[root@localhost ~]# free -m
            total       used       free     shared    buffers     cached
Mem:          1526        182       1344          0         16         99
-/+ buffers/cache:         65       1460
Swap:         3071          0       3071

很清晰明白的显示出了总内存多少,已使用多少,还剩下多少。


一个服务器,最重要的资源之一就是内存,内存够不够用,是直接关系到系统性能的关键所在。

本文介绍如何查看Linux服务器内存使用情况,


1、free命令

free -m

[root@localhost ~]# free -m
            total       used       free     shared    buffers     cached
Mem:          1526        182       1344          0         16         99
-/+ buffers/cache:         65       1460
Swap:         3071          0       3071

很清晰明白的显示出了总内存多少,已使用多少,还剩下多少。


2、top命令


top命令中的显示结果中有这样两行:

Mem:   1563088k total,   186784k used,  1376304k free,    17444k buffers
Swap:  3145720k total,        0k used,  3145720k free,   101980k cached

这个也很明白了吧,只是说它是以k为单位显示出来的。


3、vmstat命令


[root@localhost ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
0  0      0 1376320  17452 101980    0    0     1     1    4    5  0  0 100  0  0

也是直接上结果,不解释。



没有更多推荐了,返回首页