Mir*_*hko 5 php memory-management
为什么php memory_get_peak_usage的结果与在Linux中使用'top'或'ps'命令时显示为已分配给进程的内存大小有很大差异?
我在php.ini中设置了2 Mb的memory_limit我的单字符串php脚本
echo memory_get_peak_usage(true);
Run Code Online (Sandbox Code Playgroud)
说它使用的是786432字节(768 Kb)
如果我尝试询问系统当前的php进程
echo shell_exec('ps -p '.getmypid().' -Fl');
Run Code Online (Sandbox Code Playgroud)
它给了我
F S UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME CMD
5 S www-data 14599 14593 0 80 0 - 51322 pipe_w 6976 2 18:53 ? 00:00:00 php-fpm: pool www
Run Code Online (Sandbox Code Playgroud)
RSS参数是6976,因此内存使用量为6976*4096 = 28573696 = ~28 Mb
哪个28 Mb来自哪里有什么方法可以减少php-fpm进程使用的内存大小?
内存大小主要由PHP进程本身使用.memory_get_peak_usage()返回特定脚本使用的内存.减少内存开销的方法是删除扩展的数量,静态编译PHP等.但是不要忘记php-fpm(应该)fork和PHP进程之间的大量内存使用情况没有区别事实分享(直到它改变).
| 归档时间: |
|
| 查看次数: |
4242 次 |
| 最近记录: |