linux - 同样php代码不同服务器执行消耗内存不一致
巴扎黑
巴扎黑 2017-04-11 10:03:11
[PHP讨论组]

消耗内存大的服务器配置为:1cpu 2G内存
消耗内存小的服务器配置为:1cpu 1G内存
都是nginx 1.10
php7.0

巴扎黑
巴扎黑

全部回复(2)
高洛峰

PHP代码里可以用memory_get_usage/memory_get_peak_usage获取内存使用情况,用getrusage获取CPU使用情况.注意,memory_get_usage不包括PHP进程本身占用的内存.

要看PHP进程本身占用的内存,可以用top或者ps aux|head -n1 && ps aux|grep php-fpm:

  PID USER      PPID  NI    RES S  %CPU %MEM     TIME+ nTH P COMMAND
 6152 root      1865   0  10.8m S   0.0  0.1   1:51.03   1 0 php-fpm: master process (/opt/php/5.4/etc/php-fpm.conf)                                            +
16523 png       6152   0  32.0m S   0.0  0.4   0:15.39   1 0 php-fpm: pool www

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      6152  0.0  0.1 329392 11108 ?        Ss    2月12   1:51 php-fpm: master process (/opt/php/5.4/etc/php-fpm.conf)                                                                  
png      16523  0.0  0.4 426180 32732 ?        S     2月25   0:15 php-fpm: pool www                                               

里面的RES和RSS表示的就是PHP-FPM进程占用的物理内存,大小具体跟实际情况有关,如果opcache缓存了很多PHP脚本,内存占用则会大些,如果PHP加载了很多PECL扩展,内存也会大些.

如果你的PHP-FPM工作进程数量配置得很多,那么PHP整体占用得内存就会更大.对于非阻塞场景,PHP-FPM进程数配置为2倍CPU核心数足够,千万不要动不动就根据内存大小配置几百个进程,那会得不偿失.

如果存在阻塞脚本,那可以配置单独的动态PHP-FPM进程池来处理,把阻塞分离出来,具体可以看这里.

巴扎黑

介个,这样比较没意义吧,一个脚本不可能放在什么地方都是一样的状态吧,这个跟环境相关,而不是一个普通的静态文本的理解。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号