首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Rails应用程序Sidekiq高内存使用率

Rails应用程序Sidekiq高内存使用率
EN

Stack Overflow用户
提问于 2017-04-18 15:11:41
回答 2查看 6.3K关注 0票数 1

我有一个Rails 4应用程序部署在数字海洋使用Ubuntu14.04.5LTS。该应用程序似乎运行良好,但系统始终运行在95%的内存。我甚至将液滴升级为RAM的两倍,现在仍然是95%。

以下是我的最高产出:

代码语言:javascript
运行
复制
top - 11:03:54 up  8:37,  1 user,  load average: 0.00, 0.03, 0.05
Tasks: 118 total,   1 running, 117 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.2 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem:   2049956 total,  1980616 used,    69340 free,     8708 buffers
KiB Swap:  1048572 total,  1036928 used,    11644 free.    47864 cached Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                               
 7510 ubuntu    20   0  780436 274428   2540 S   0.0 13.4   0:27.66 ruby                                                                                                                                                                  
 1313 root      20   0 1921472 250948   2700 S   0.0 12.2   1:42.70 bundle                                                                                                                                                                
 1315 root      20   0 1876992 246204   2664 S   0.0 12.0   1:44.10 bundle                                                                                                                                                                
 1359 root      20   0 1928636 236168   2692 S   0.0 11.5   1:42.58 bundle                                                                                                                                                                
 6408 ubuntu    20   0  781764 175368   2244 S   0.3  8.6   1:10.81 ruby                                                                                                                                                                  
 8681 ubuntu    20   0  984140 156708   1884 S   0.3  7.6   1:37.95 ruby                                                                                                                                                                  
 8810 ubuntu    20   0  646824 117356   2548 S   0.0  5.7   0:11.07 ruby                                                                                                                                                                  
 8821 ubuntu    20   0  646920 112728   2532 S   0.0  5.5   0:11.48 ruby                                                                                                                                                                  
 8797 ubuntu    20   0  646728  82372   2960 S   0.0  4.0   0:14.33 ruby                                                                                                                                                                  
 1932 ubuntu    20   0  332292  56948   1552 S   0.0  2.8   0:04.88 ruby

我知道有大量的博客文章等关于铁路应用程序内存优化。这三个捆绑过程使我感到困惑。我的应用程序(实际上有两个应用程序--一个生产和一个暂存)使用Redis / Sidekiq,这是包进程。因此,我的问题是:

1)这“正常”吗?

2)如果没有,是否有办法开始解决这一问题?

更新

以下是最高的输出:

代码语言:javascript
运行
复制
ubuntu@rails-01:~$ ps aux --sort=-%mem
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      1291  8.8  9.4 846856 194624 ?       Sl   18:04   0:23 sidekiq 4.2.10 production [0 of 3 busy]                                                                                  
root      1411  8.9  9.4 846824 194532 ?       Sl   18:04   0:24 sidekiq 4.2.10 production [0 of 3 busy]                                                                                  
root      1272  9.1  9.4 712752 193516 ?       Sl   18:04   0:24 sidekiq 4.2.10 staging [0 of 1 busy]                                                                                  
ubuntu    2254  0.6  9.3 645792 192648 ?       Sl   18:05   0:01 Passenger RubyApp: /home/ubuntu/production/current/public (production)
ubuntu    1986  0.6  9.3 645048 192064 ?       Sl   18:05   0:01 Passenger RubyApp: /home/ubuntu/staging/current/public (staging)
ubuntu    1762  9.8  9.2 375520 190264 ?       Sl   18:04   0:24 Passenger AppPreloader: /home/ubuntu/production/current   
ubuntu    1678  9.5  9.2 374872 189588 ?       Sl   18:04   0:25 Passenger AppPreloader: /home/ubuntu/staging/current      
ubuntu    2082  0.2  9.1 645144 187524 ?       Sl   18:05   0:00 Passenger RubyApp: /home/ubuntu/staging/current/public (staging)
ubuntu    1839  2.9  3.9 197300 79976 ?        Sl   18:04   0:06 Passenger AppPreloader: /home/ubuntu/landing/current      
ubuntu    1962  0.1  3.8 332292 78720 ?        Sl   18:05   0:00 Passenger RubyApp: /home/ubuntu/landing/current/public (production)
ubuntu    1969  0.0  3.7 332388 76044 ?        Sl   18:05   0:00 Passenger RubyApp: /home/ubuntu/landing/current/public (production)

我忘了我有两个生产工人在服务器上和一个阶段。我的并发度为5和2,但后来我将其降低到3和1。Sidekiq所做的只是一些低级别的上传图像处理和批量记录创建,更新和删除我不希望用户坐等页面加载的内容。

我现在看到它稳定在80%。好点了,但看起来还是很高。我认为下一个会是大量的代码优化等等。我相信我可以在这里找到很多东西。

EN

Stack Overflow用户

发布于 2017-04-18 18:40:02

Ruby进程可能占用了太多内存,原因有很多。任何创业板或应用程序代码都可以分配任意数量的内存,因此,要想告诉您原因是不可能的。这里有一个可能的原因:

https://github.com/rails/rails/issues/27002#issuecomment-260086170

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43475951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档