求问php5和php7怎么共存 vss pss rss 哪个用来内存消耗
求问php5和php7怎么共存
之前在服务器搭建了lamp环境,想换用性能更强的nginx作为服务器软件,又想将php5升级为php7.
安装nginx无需赘述:sudo apt-get install nginx,启动ng前修改apache的端口。
vss pss rss 哪个用来内存消耗
RSS列表示,程序占用了多少物理内存。
虚拟内存可以不用考虑,它并不占用实际物理内存。
(2)。
top命令也可以其中VIRT(或VSS)列表示,程序占用了多少虚拟内存。
同psaux中的VSZ列RES列表示,程序占用了多少物理内存。
同psaux中的RSS列2.在linux下,查看当前系统占用了多少内存,一般的命令是free其中,free就是系统还有多少内存可以使用。
但由于linux系统对内存使用有一个原则,就是,内存是宝贵的,能使用多少就使用多少。
所以,linux会把已经调用过的包缓存起来,放在内存里。
这样,实际上,可以使用的内存,就可以理解为,free buffers cached3.当了解完这些命令以后,再去使用psaux命令去查看的时候,会发现一个奇怪的现象。
所有的RSS列的数据,加起来,比物理内存的数要大很多。
比如,物理内存为2G,而RSS列的数据加起来,可能有5个G之多,这是怎么回事了?这是因为RSS列的值骗了。
linux的内存机制是这样的:在运行一个程序时,linux会调用该程序依赖的链接库,如lib.xx.so。
首先看该链接库是否被映射进内存中,如果没有被映射,则将代码段与数据段映射到内存中,否则只是将其加入进程的地址空间。
这样,当N个程序,依赖到lib.xx.so的时候,实际上,内存中只有一个lib.xx.so,而不是N个。
而RSS在显示一个程序占用的实际物理内存时,将lib.xx.so也算了进来。
比如,X程序,本身占用内存为5M,lib.xx.so占用内存2M,lib.xx.so被N个程序共享依赖。
则RSS显示为,X程序运行,占用内存为7M。
实际上,X程序占用了5M空间。
多余的2m被讨入到RSS中了。
当在用psaux显示内存占用情况时,N个共享依赖lib.xx.so的N个程序,都把这2m空间,算在自己的RSS中了,这样RSS的sum值,就比实际物理内存多了。
当然,linux的内存使用机制很复杂,不是一句两句能说清楚的。
这里只是简单的说明了一下,psaux中的RSS值,并不能真实反映物理内存的使用情况。
4.如果查看更详细的内存使用情况,可用以下几种方法,或者几种方法结合使用:这几种方法,都需要root账户的权限(1)。
pmap-d$pid$pid是正在运行的程序的pid(2)。
cat/proc/$pid/smapssmaps的数据比较详细,可简单的归纳一下,归纳的命令如下:cat/proc/$pid/smaps|awk/Size|Rss|Pss|Shared|Private|Referenced|Swap/{val_name=gensub(/([a-zA-Z_]*)。
*/,“\1”,1,$1);list[val_name] =$2}END{for(valinlist)printval,list[val]}‘(3)。
cat/proc/$pid/maps(4)。
cat/proc/$pid/statm输出解释第一列size:任务虚拟地址空间大小
第二列Resident:正在使用的物理内存大小
第三列Shared:共享页数
第四列Trs:程序所拥有的可执行虚拟内存大小
第五列Lrs:被映像倒任务的虚拟内存空间的库的大小
第六列Drs:程序数据段和用户态的栈的大小
第七列dt:脏页数量(5)。
vmstat这个命令据说也可以提供一些参考信息,具体还未研究5.作为phper,尝试过使用php的函数memory_get_usage(),该函数也不能得到php当前运行的程序,实际的,真正占用的内存数量。
如果真想得到,php真正占用的内存,大概只能在,程序运行的开始,执行一次memory_get_usage()。
在程序运行结束,执行一次memory_get_usage()。
将两者的值相减,得到的值,应该是一个相对比较准确的,内存占用数量了。
这个方法还没有测试,考虑到,得到这个数量,也没有实际意义,加上平时又比较忙,懒得试了。