PHP实际使用多少内存?

罗伯特

我已经注意到,PHP进程的内存使用情况topps报告与该进程本身认为使用(with memory_get_usage)的情况之间存在很大差异

进程实际使用多少内存?

当与我的一个应用程序一起运行以下代码时:

echo "Memory usage: " . pretty_bytes(memory_get_usage()) . PHP_EOL;
echo "Peak memory usage: " . pretty_bytes(memory_get_peak_usage()) . PHP_EOL;
echo "'Actual' memory usage: " . pretty_bytes(memory_get_usage(true)) . PHP_EOL;
echo "'Actual' peak memory usage: " . pretty_bytes(memory_get_peak_usage(true)) . PHP_EOL;

$ps_output = exec("ps --pid " . getmypid() . " --no-headers -o rss");

echo "'Memory usage according to ps: " . pretty_bytes(intval($ps_output) * 1000);

随机点的输出为:

Memory usage: 4.77 MB
Peak memory usage: 4.99 MB
'Actual' memory usage: 5.00 MB
'Actual' peak memory usage: 5.00 MB
Memory usage according to ps: 17.66 MB

在我的特定情况下,这是一个问题,因为我正在运行大量的工作程序和守护程序。

当我为每个守护程序将PHP内存限制设置为例如128 MB时,根据PHP自己的测量,这些进程只有在达到128 MB时才会被杀死。但是,根据,到ps那时,每个进程将使用大约200 MB。

布韦比

应该强调的究竟是什么价值观报道psmemory_get_usage(true)是。

ps -o rss报告实际的居民集大小依赖此值是一个陷阱,因为它不包括最终换出的内存。通常,您需要USS唯一集大小,它基本上是未共享的内存(对此有所了解smem(8))。这是内核实际上已为该进程映射页面的未共享内存的数量,即物理上存在于RAM或交换文件中的未共享内存。这与“实际”内存使用量所能达到的程度非常接近。[另请参阅/proc/$PID/smapsIVO GELOV的答复中提到的详细概述,在此您可以通过解析该虚拟文件从技术上计算要计数的内存。]

关于memory_get_usage(),这报告了系统实际使用PHP的内部内存管理器分配的堆内存。这意味着,直接使用系统其他内存管理器(mmap(2)malloc(3))的库不会在此处公开其内存使用情况。[例如,这就是为什么mysqlnd确实显示大量内存使用而libmysqlclient不显示-后者在malloc()内部使用的原因。]

如果您true作为第一个参数传递,即memory_get_usage(true),它将返回PHP的内部内存管理器从系统请求的内存总量。该数字通常略大,但不高于memory_get_usage(false)这也是与memory_limitINI设置进行比较的数字

如果要查看可以运行多少个工作程序,请注意,PHP不会共享太多内存,而是内核可能共享库内存和opcache,后者共享结构(操作码,类信息等)。因此,共享内存对您而言应该不重要。因此,对您来说最重要的价值应该是USS。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

内存node.js缓冲区内部实际使用多少个内存字节来存储1个逻辑字节的数据?

来自分类Dev

内存node.js缓冲区内部实际使用多少个内存字节来存储1个逻辑字节的数据?

来自分类Dev

foldl的实际使用

来自分类Dev

“顶部”显示的内存百分比是实际使用的内存吗?

来自分类Dev

这个Swift结构实际使用了多少存储空间?

来自分类Dev

有多少个端口适配器,哪些可以堆叠并实际使用?

来自分类Dev

Swift NSLocalizedString实际使用

来自分类Dev

Dart如何实际使用websocket pingInterval?

来自分类Dev

在领域中实际使用@Ignore吗?

来自分类Dev

Jade模板和angularjs的实际使用

来自分类Dev

python实际使用哪种GC算法?

来自分类Dev

Django:确定实际使用的pip包

来自分类Dev

4D +阵列的实际使用

来自分类Dev

实际使用域是否安全?

来自分类Dev

确定数组实际使用的大小

来自分类Dev

实际使用TCP_DEFER_ACCEPT?

来自分类Dev

实际使用展开的跳过列表

来自分类Dev

Hadoop在项目中的实际使用

来自分类Dev

检查实际使用的glibc版本

来自分类Dev

如何实际使用 AddressSanitizer 和 MemorySanitizer?

来自分类Dev

iOS-实际使用的应用程序(SpriteKit App)没有显示内存泄漏时,内存使用量仍在不断增长

来自分类Dev

如何实际使用has_many:through并建立关系

来自分类Dev

如何找出浏览器实际使用的网站图标

来自分类Dev

我怎么知道Juju实际使用的是哪台机器?

来自分类Dev

实际使用的最高阶函数是什么?

来自分类Dev

查找实际使用的DLL与所引用的DLL

来自分类Dev

如何实际使用skimage保存图像(Python)

来自分类Dev

如何确定实际使用的日志配置源Logback?

来自分类Dev

如何在并发环境中实际使用Git

Related 相关文章

热门标签

归档