消耗内存大的服务器配置为:1cpu 2G内存
消耗内存小的服务器配置为:1cpu 1G内存
都是nginx 1.10
php7.0
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进程池来处理,把阻塞分离出来,具体可以看这里.
介个,这样比较没意义吧,一个脚本不可能放在什么地方都是一样的状态吧,这个跟环境相关,而不是一个普通的静态文本的理解。