nodejs с прокси nginx, использованием памяти

Я использую прокси nginx для nodejs приложения (экспресс), я нашел, что использование памяти больше, чем другое php приложение, я плохо знаком с nodejs, помогите мне рассмотреть, они конфигурируются и нормальная статистика или что-то не так?

# ps aux --sort -rss | head

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      3587  0.1  9.3 1122596 191268 ?      Ssl  Oct10   0:47 node /var/www/html/domain1.com/app/app.js
mongod    2266  0.4  2.6 652476 53572 ?        Sl   Oct01  65:18 /usr/bin/mongod -f /etc/mongod.conf
root      2380  0.0  1.9 984316 39184 ?        Ssl  Oct01   8:18 PM2 v0.14.7: God Daemon
nginx   18011  6.2  0.9 253192 18576 ?        S    02:56   0:00 php-fpm: pool www
nginx   17492  3.0  0.9 252996 18452 ?        S    02:53   0:05 php-fpm: pool www
nginx   17269  3.1  0.9 252984 18428 ?        S    02:52   0:07 php-fpm: pool www
nginx   17261  3.1  0.9 252888 18380 ?        S    02:51   0:08 php-fpm: pool www
nginx   17201  3.3  0.8 252936 18148 ?        S    02:51   0:10 php-fpm: pool www
postgres  3596  0.0  0.5 326276 11844 ?        Ss   Oct10   0:01 postgres: db_admin db 127.0.0.1(54307) idle

# free -m

             total       used       free     shared    buffers     cached
Mem:          1991       1209        781          8        121        221
-/+ buffers/cache:        866       1124 
Swap:          511         48        463 

конфигурация nginx

server {
  listen 80;
  server_name domain1.com  www.domain1.com;
  access_log /var/log/nginx/domain1.com.access.log;
  location ~ ^/sitemap/(.*)$ {
    root /var/www/html/domain1.com/app/Sitemap/SitemapGz;
  }
  location /robots.txt {
    alias /var/www/html/domain1.com/app/robots.txt;
  }
  location ~ ^/(images/|javascripts/|stylesheets/|fonts) {
    root /var/www/html/domain1.com/app/assets;
    access_log off;
    expires max;
  }
  location / {
    set $fixed_destination $http_destination;
    if ( $http_destination ~* ^https(.*)$ )
    {
    set $fixed_destination http$1;
    }
    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;
  }
}

конфигурация nginx

user              nginx;
worker_processes  2;

error_log  /var/log/nginx/error.log;

pid        /var/run/nginx.pid;


events {
    worker_connections  2048;
}


http {
  # fastcgi cache ...


  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;

  reset_timedout_connection on;
  send_timeout 2;

  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;
}
0
задан 10 October 2015 в 22:41
1 ответ

Node.js использует снизу механизм javascript V8, а механизм использует сложный алгоритм для сборки мусора, поэтому, если он увидит, что у вас много свободной памяти, он попытается воспользоваться этим. Это означает, что использование большого объема памяти не обязательно является признаком проблемы - node.js может использовать 85-90% всей доступной памяти, но он работает очень быстро и в этом нет ничего плохого. Высокий объем памяти может быть нормальным, или это может быть проблемой, но об этом нельзя сказать.Если ваше приложение не вылетает и не запускается очень медленно, я бы не стал беспокоиться об этом, но я бы следил за ним, просто чтобы установить базовый уровень.

Кстати, если вы случайно используете newrelic для мониторинга своего приложения, оно имеет тенденцию к увеличить использование памяти в 2-4 раза, но так оно и работает, и в этом нет ничего плохого. Однако у него также есть документально подтвержденная утечка памяти, связанная с SSL, поэтому вам может потребоваться проверить, влияет ли она на вас.

1
ответ дан 4 December 2019 в 16:48

Теги

Похожие вопросы