nodejs con proxy nginx, uso de memoria

nodejs con proxy nginx, uso de memoria

Utilizo el proxy nginx para la aplicación nodejs (express), descubrí que el uso de memoria es mayor que el de otras aplicaciones php, soy nuevo en nodejs, por favor ayúdenme a revisar, ¿estas configuraciones y estadísticas son normales o hay algún problema?

# 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 

configuración 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;
  }
}

configuración 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;
}

Respuesta1

Node.js usa el motor javascript V8 debajo y el motor usa un algoritmo sofisticado para la recolección de basura, por lo que si ve que tiene mucha memoria libre, intentará aprovecharla. Esto significa que el uso elevado de memoria no es necesariamente una indicación de un problema: node.js puede usar entre el 85 y el 90 % de toda la memoria disponible, pero se ejecuta súper rápido y no hay nada malo. El uso elevado de memoria puede ser normal o puede ser un problema, pero no hay forma de saberlo. A menos que su aplicación falle o se ejecute muy lentamente, no me preocuparía, pero la vigilaría solo para establecer una línea de base.

Por cierto, si por casualidad usa newrelic para monitorear su aplicación, tiene tendencia a aumentar el uso de memoria de 2 a 4 veces, pero así es como funciona y no tiene nada de malo. Sin embargo, también tiene una pérdida de memoria documentada relacionada con SSL, por lo que es posible que deba verificar si le afecta.

información relacionada