进程管理和内存使用nginx + nodejs + php


process manage and memory usage nginx + nodejs + php

nginx
2 site use php  
1 site use nodejs with nginx proxy   
linode (  
1 GB RAM 1 CPU Core 24 GB SSD Storage  
2 TB Transfer  
40 Gbit Network In  
125 Mbit Network Out  
) with centos 6.5  

我有麻烦得到502坏网关随机,只有在nodejs网站,其他的很好。

所以我想可能是因为我的内存使用或一些硬件限制,所以我检查了我的内存使用下面的命令,我有问题
1。为什么这么多php-fpm运行
2. 空闲内存只有8个?这就是为什么我一直崩溃我的nodejs项目?

# free -m

             total       used       free     shared    buffers     cached
Mem:           987        978          8          3          0         11
-/+ buffers/cache:        967         20 
Swap:          255        255          0 

# top -b -n 1 -a

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                           
28337 root      20   0  833m  51m 2972 S  0.0  5.2   0:01.93 node /var/www/n                                                                   
27914 apache    20   0  278m  36m 3460 S  0.0  3.7   0:29.15 php-fpm                                                                           
27963 apache    20   0  278m  36m 3440 S  0.0  3.7   0:28.50 php-fpm                                                                           
27992 apache    20   0  273m  36m 3156 S  0.0  3.7   0:27.14 php-fpm                                                                           
27920 apache    20   0  279m  35m 3440 S  0.0  3.6   0:28.94 php-fpm                                                                           
27958 apache    20   0  277m  33m 3408 S  9.8  3.4   0:29.20 php-fpm                                                                           
27898 apache    20   0  278m  33m 3204 S  0.0  3.4   0:30.88 php-fpm                                                                           
27976 apache    20   0  274m  32m 3392 S  0.0  3.3   0:26.00 php-fpm                                                                           
28043 apache    20   0  265m  32m 3392 S  0.0  3.2   0:20.91 php-fpm                                                                           
28000 apache    20   0  272m  32m 3440 S  0.0  3.2   0:24.74 php-fpm                                                                           
28035 apache    20   0  265m  31m 3156 S  0.0  3.2   0:20.20 php-fpm                                                                           
27980 apache    20   0  273m  31m 3156 S  0.0  3.2   0:26.64 php-fpm                                                                           
28038 apache    20   0  264m  31m 3460 S  0.0  3.2   0:19.93 php-fpm                                                                           
28021 apache    20   0  267m  30m 3156 S  0.0  3.1   0:19.82 php-fpm                                                                           
28016 apache    20   0  266m  29m 3392 S  0.0  3.0   0:20.18 php-fpm                                                                           
28024 apache    20   0  265m  29m 3440 S  0.0  3.0   0:19.73 php-fpm                                                                           
25427 root      20   0  884m  29m  620 S  0.0  3.0   1:31.45 PM2 v0.14.7: Go                                                                   
28054 apache    20   0  260m  27m 3344 S  0.0  2.8   0:17.47 php-fpm                                                                           
28012 apache    20   0  264m  27m 3392 S  0.0  2.8   0:20.82 php-fpm                                                                           
28058 apache    20   0  258m  26m 3460 S 13.7  2.7   0:16.46 php-fpm                                                                           
28094 apache    20   0  258m  25m 3204 S  0.0  2.6   0:15.12 php-fpm                                                                           
28241 apache    20   0  255m  24m 3440 S  0.0  2.5   0:13.54 php-fpm                                                                           
28091 apache    20   0  255m  24m 3440 S  0.0  2.5   0:13.13 php-fpm                                                                           
28254 apache    20   0  254m  24m 3204 S  0.0  2.5   0:12.11 php-fpm                                                                           
 2637 root      20   0  420m  23m 1712 S  0.0  2.4  12:03.18 fail2ban-server                                                                   
28258 apache    20   0  252m  22m 3224 S  0.0  2.3   0:11.64 php-fpm                                                                           
28268 apache    20   0  252m  22m 3204 S  0.0  2.3   0:10.10 php-fpm                                                                           
28293 apache    20   0  249m  21m 3588 S  9.8  2.1   0:08.04 php-fpm                                                                           
28274 apache    20   0  248m  19m 3204 S  0.0  2.0   0:09.04 php-fpm                                                                           
28288 apache    20   0  248m  18m 3204 S  0.0  1.9   0:07.52 php-fpm                                                                           
28312 apache    20   0  244m  17m 3628 S  0.0  1.7   0:04.71 php-fpm                                                                           
28298 apache    20   0  245m  16m 3156 S  0.0  1.7   0:05.48 php-fpm                                                                           
28319 apache    20   0  242m  14m 3388 S  0.0  1.4   0:03.05 php-fpm                                                                           
28333 apache    20   0  241m  13m 3440 S  0.0  1.4   0:01.73 php-fpm                                                                           
28344 apache    20   0  239m  12m 3828 S  0.0  1.2   0:00.47 php-fpm                                                                           
28355 root      20   0 98696 5808 4896 S  0.0  0.6   0:00.00 sshd                                                                              
28342 postgres  20   0  318m 3628 2120 S  0.0  0.4   0:00.02 postmaster                                                                        
28356 sshd      20   0 67628 3140 2408 S  0.0  0.3   0:00.00 sshd                                                                              
28368 root      20   0 15080 2000 1704 R  0.0  0.2   0:00.00 top                                                                               
26870 nginx     20   0 97436 1848  644 S  2.0  0.2   1:04.77 nginx    

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
apache   28298  0.9  4.1 286860 41600 ?        S    04:46   0:32 php-fpm: pool www            
root     28649  3.9  4.0 712164 41360 ?        Ssl  05:43   0:01 node /var/www/html/nodejssite.com/app/app.js                           
apache   28293  0.9  3.9 287736 40072 ?        S    04:44   0:33 php-fpm: pool www            
apache   28319  0.9  3.8 283160 38668 ?        S    04:51   0:28 php-fpm: pool www            
apache   28344  0.9  3.6 282864 36704 ?        S    04:56   0:27 php-fpm: pool www            
apache   28312  1.1  3.5 290280 36108 ?        S    04:49   0:36 php-fpm: pool www            
apache   28274  0.9  3.5 290128 35412 ?        S    04:39   0:35 php-fpm: pool www            
apache   28268  0.8  3.3 289060 34248 ?        S    04:37   0:33 php-fpm: pool www            
apache   28408  0.8  3.2 274004 33004 ?        S    05:03   0:21 php-fpm: pool www  

/etc/nginx nginx.conf

user              nginx;
worker_processes  1;
error_log  /var/log/nginx/error.log;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    access_log  /var/log/nginx/access.log  main;
    sendfile        on;
    #tcp_nopush     on;
    #keepalive_timeout  0;
    keepalive_timeout  65;
    gzip  on;
    gzip_comp_level    5;
    gzip_min_length    256;
    gzip_proxied       any;
    gzip_vary          on;
    gzip_types
    application/atom+xml
    application/javascript
    application/json
    application/ld+json
    application/manifest+json
    application/rdf+xml
    application/rss+xml
    application/schema+json
    application/vnd.geo+json
    application/vnd.ms-fontobject
    application/x-font-ttf
    application/x-javascript
    application/x-web-app-manifest+json
    application/xhtml+xml
    application/xml
    font/eot
    font/opentype
    image/bmp
    image/svg+xml
    image/vnd.microsoft.icon
    image/x-icon
    text/cache-manifest
    text/css
    text/javascript
    text/plain
    text/vcard
    text/vnd.rim.location.xloc
    text/vtt
    text/x-component
    text/x-cross-domain-policy
    text/xml;

    # Load config files from the /etc/nginx/conf.d directory
    # The default server is in conf.d/default.conf
    include /etc/nginx/conf.d/*.conf;
}

/etc/nginx/conf.d/default.conf

server {
listen 80;
server_name phpsite.com www.phpsite.com;
access_log /var/log/nginx/phpsite.access.log;
root /var/www/html/phpsite;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
client_max_body_size 1G;
location ~ '.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
}
}
server {
listen 80;
server_name sub.phpsite.com www.sub.phpsite.com;
access_log /var/log/nginx/sub.phpsite.access.log;
root /var/www/html/sub;
index index.php index.html index.htm;
try_files $uri $uri/ /index.php?$query_string;
client_max_body_size 1G;
location ~ '.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 32k;
fastcgi_buffers 8 32k;
}
}

server {
listen 80;
server_name nodejssite.com  www.nodejssite.com;
access_log /var/log/nginx/nodejssite.com.access.log;
location ~ ^/sitemap/(.*)$ {
root /var/www/html/nodejssite.com/app/Sitemap/SitemapGz;
}
location /robots.txt {
alias /var/www/html/nodejssite.com/app/robots.txt;
}
location ~ ^/(images/|javascripts/|stylesheets/|fonts) {
root /var/www/html/nodejssite.com/app/assets;
access_log off;
expires max;
}
location / {
proxy_pass http://127.00.0.1:8002/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Destination $fixed_destination;
client_max_body_size 32M;
client_body_buffer_size 512k;
proxy_connect_timeout 300;
proxy_send_timeout 300;
proxy_read_timeout 300;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
  1. php-fpm进程控制的数量由它的配置文件,/etc/php5/fpm/pool.d/www.conf在ubuntu。

    pm = dynamic
    pm.max_children = 64
    pm.start_servers = 8
    pm.min_spare_servers = 8
    pm.max_spare_servers = 32
    pm.max_requests = 500        
    

我的建议是根据您预期的站点访问者数量来设置此值。例如:

pm.start_servers = 6
pm.min_spare_servers = 6
pm.max_spare_servers = 6

如果服务器上没有很多用户,php-fpm的最佳策略是pm = ondemand

你可以在这里阅读更多信息

p。S>你可以张贴这个命令的结果,以尝试帮助你基于你当前的应用程序内存消耗:ps aux --sort -rss | head