我重装了rhel系统 内存也换成了4GRAM 同样和之前一样。
固定吃满到百分之80以上,这个问题到底是怎么回事呢?
早上我将他重装为Rhel 说实话找镜像找了半天 因为很多镜像装不上去,
然后我用docker安装了Discourse,安装完成注册好管理员之后,内存已经使用1.2G,我导入从原来网站备份的数据之后 内存来到1.6g,我尝试测试发帖功能的时候,内存来到了3.5G,我当时亚麻呆住了
我很不理解!!
回答1:
我和我同学讨论之后,这很像Node.js的问题 因为它符合node.js的内存泄露 ,他是逐步增长的,尤其是在发帖的时候,node.js启动了!!
回答2:
我们这个是默认安装,没有怎么优化配置。
在默认情况下 Discourse 的内存消耗在 1.2GB 左右。
2 个 vCPU,附件使用云存储,不存储在本地。
你换了个机器是不是还是在同一个机房?
如果是这样的话,感觉是不是因为给的 vCPU 处理能力不够,虽然是 vCPU,但不同的 vCPU 的处理能力是不同的。
CPU 的处理能力不够也会导致内存使用升高的。
建议装一个 htop,看起来更加舒服点。
另外 Docker 的安装,你是默认安装还是对 Docker 的参数调整了?
回答3:
我们的服务基本上没有出现你的问题,一直保持在 1.5GB 的使用情况,并没有出现用着用着就内存占满的问题。
总感觉有点像 VPS 自身的问题。
回答4:
AMD 的服务器要便宜些,但问题多,更多是在重型处理能力上会出现问题。
我们的程序 Java 跑得多,放 AMD 上出问题的频率要明显比 Intel 的高,后来公司慢慢决定全部更换成 Intel 的,稳如老狗。
目前我们公司的所有机器,不管是物理实际服务器,还是在机器上虚拟出来的 VM,都在 Intel 处理器上。
我们公司把所有 AMD 的机器从机房中剔除,或者只是简单的留给我们开发做做本地测试,随着时间流逝就慢慢从数据中心内删除了。
我们公司是有自己的数据中心的,整一栋楼。
回答5:
我们公司的 Linux 都是 RHEL 的版本,所以我们比较熟悉 RHEL,Ubuntu 更多是跑着玩。
实际业务上,我们公司 Java 程序多,吃内存更加厉害,虽然也是部署在容器里面,但 RHEL + Intel 的服务器 + JDK 17 (OpenJDk)内存上面一般还没有怎么出现过比较严重的内存溢出问题。
跑 Discourse 基本上也没有担心过内存问题。
回答6:
Ember 是 Discourse 用的前端程序。
Ember 确实是使用 NodeJS 编译的,但编译完成后应该是直接部署到 Nginx 上的,Discourse 应该不是用 NodeJS 跑的前端。
回答7:
还有一个办法。
把 Discourse 的进程停掉,看看在这个情况下你服务器的内存消耗是多少?
回答8:
这个图片上,你的 Unicorn 启了 7 个。
我们的 Unicorn 只启动了 2 个,你比我们多了 5 个。
平均一个 Unicorn 在 400MB 左右,7 个 再加上其他一些乱七八糟的,差不多已经 3GB 左右了。
回答9:
正常你服务器运行需要 500MB,然后你启了 7 个 unicorns,乱七八糟加起来也差不多 3.x GB 了。
如果你的 app.yml 没有修改的话,unicorns 应该默认是启 2 个。
但容器认为系统有多余资源可以用的话,貌似是会自动添加 unicorns。
这一行,你的 UNICORN_WORKS ,参数是配的 8。
难怪你的服务器会启动到 7。
把这行参数改成 2,然后重构 Discourse。
我觉得为了保证其他进程可用,你的的服务器应该可以设置到 4。
回答10:
Unicorn 是Ruby Web 应用中的一款应用服务器 ,提供两个功能:
为Rack 应用(使用Ruby 编程语言开发的Web 服务器和Web 应用程序之间的模块化接口)提供HTTP 服务能力 为Web 应用实现高并发能力。
Unicorn 的数量大小决定了内存的消耗。
对于高性能服务器,上面的参数决定了可以占用多少内存。
配置文件是 Discourse 根据你的机器性能在按照的时候算出来可以最多分配到多少 Unicorn。
Unicorn 数量越多,并行处理能力越强,但占用内存和 CPU 就越多。
上面的数字决定了 Discourse 运行时候可以启用 Unicorn 数量的上限,不管怎么样都不会超过这个数字。但是如果机器性能不够,那就有可能会低于这个数字。
所以你的上限是 8,但实际上只启动到 7,机器就不行了。
为什么会这样
具体原因不非常清楚为什么会这样。
我的感觉就是机器数据和实际运行能力上出现了虚标。
因为计算是按照机器处理能力参数进行计算的,比如说内存多大,CPU 性能多少,具体怎么算我也不太清楚。
算出来的时候 Discourse 觉得你的机器可以配置到 8,但实际上能到 7 已经是极限了。
我的机器也是 4G 的内存,算出来也只能建议配置到 2 个Unicorn。所以建议你还是把这个参数改低到 3 左右的样子。
回答11:
这个参数是非常影响机器性能的。
一般 4G 的机器,给到 2 到 3 就够用了,等不够用的时候换机器再调。