繁体   English   中英

如何提高Nginx,Rails和乘客的内存使用率?

[英]How to improve Nginx, Rails, Passenger memory usage?

我目前在通过Cloud 66的Digital Ocean VPS(1GB RAM)上安装了Rails应用程序。问题是VPS的内存在旅客流程中已满。

passenger-status的输出:

# passenger-status
Version : 4.0.45
Date    : 2014-09-23 09:04:37 +0000
Instance: 1762
----------- General information -----------
Max pool size : 2
Processes     : 2
Requests in top-level queue : 0

----------- Application groups -----------
/var/deploy/cityspotters/web_head/current#default:
  App root: /var/deploy/cityspotters/web_head/current
  Requests in queue: 0
  * PID: 7675    Sessions: 0       Processed: 599     Uptime: 39m 35s
    CPU: 1%      Memory  : 151M    Last used: 1m 10s ago
  * PID: 7686    Sessions: 0       Processed: 477     Uptime: 39m 34s
    CPU: 1%      Memory  : 115M    Last used: 10s ago

max_pool_size似乎配置正确。

passenger-memory-stats的输出:

# passenger-memory-stats
Version: 4.0.45
Date   : 2014-09-23 09:10:41 +0000
------------- Apache processes -------------
*** WARNING: The Apache executable cannot be found.
Please set the APXS2 environment variable to your 'apxs2' executable's filename, or set the HTTPD environment variable to your 'httpd' or 'apache2' executable's filename.


--------- Nginx processes ---------
PID   PPID  VMSize   Private  Name
-----------------------------------
1762  1     51.8 MB  0.4 MB   nginx: master process /opt/nginx/sbin/nginx
7616  1762  53.0 MB  1.8 MB   nginx: worker process
### Processes: 2
### Total private dirty RSS: 2.22 MB


----- Passenger processes -----
PID   VMSize    Private   Name
-------------------------------
7597  218.3 MB  0.3 MB    PassengerWatchdog
7600  565.7 MB  1.1 MB    PassengerHelperAgent
7606  230.8 MB  1.0 MB    PassengerLoggingAgent
7675  652.0 MB  151.7 MB  Passenger RackApp: /var/deploy/cityspotters/web_head/current
7686  652.1 MB  116.7 MB  Passenger RackApp: /var/deploy/cityspotters/web_head/current
### Processes: 5
### Total private dirty RSS: 270.82 MB

.. 2乘客RackApp流程,确定。

但是当我使用htop命令时,输出如下:

htop输出

似乎有很多乘客行李架流程。 我们还使用默认配置运行Sidekiq。

新的Relic Server报告以下内存使用情况:

新的Relic服务器监视输出

我尝试调整乘客设置,添加了负载平衡器和其他服务器,但老实说,不知道从这里开始该怎么做。 我如何找出导致大量内存使用的原因?

更新:由于某些更改,我不得不重新启动ngnix,它似乎释放了很多内存。

按Shift-H隐藏htop中的线程。 这些不是进程,而是进程中的线程。 关键列是RSS:您有209MB和215MB的两个乘客进程,以及154MB的一个Sidekiq进程。

简短的答案:这完全是Rails应用程序的正常内存使用情况。 如果您要每个1GB多个进程,则1GB只是小一点。 我将乘客减少到一个过程。

您的应用程序是否创建子进程? 如果是这样,那么这些额外的“ Passenger RackApp”进程实际上可能不是Phusion Passenger创建的进程,而是实际上是您自己的应用程序创建的进程。 您应该仔细检查您的应用是否产生子进程,以及是否正确清理了这些子进程。 还要仔细检查您是否使用了任何库,还正确清理了它们的子进程。

我看到您正在使用Sidekiq,并且已经配置了25个 Sidekiq进程。 那些也吃了很多内存。 Sidekiq进程消耗的内存与Passenger RackApp进程占用的内存一样多,因为这两个进程都将整个应用程序(包括Rails)加载到内存中。 尝试减少Sidekiq进程的数量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM