安装discourse成功后出现502错误, 经过几天的努力,原来是mysql占用太多内存导致的问题.


(我来了) #1

阿里云美国服务器, 内存8G.
按照论坛的教程安装成功, 能访问. 但是 经常出现502, 浏览器刷新几下又ok,. 服务器原来是有nginx站点的, 我已经关闭了. 现在服务器只开了discourse, 是单独占用80端口的. 是不是因为配置问题呢? 我是完全按照教程配置app.yml的, 还有哪些地方需要配置的呢?
还有腾讯的企业邮箱不能用. 25端口被禁用, 我用465端口 也不能用, 我用php测试465端口发email是正常的.

问题已解决


(我来了) #2

经过1天的修改配置 n次的rebuild 之后,重要 邮件可以正常发送了. 配置如下:
DISCOURSE_SMTP_ADDRESS: smtp.exmail.qq.com
DISCOURSE_SMTP_PORT: 587
DISCOURSE_SMTP_USER_NAME: service@*****.com
DISCOURSE_SMTP_PASSWORD: *******
DISCOURSE_SMTP_ENABLE_START_TLS: true

  • exec: rails r "SiteSetting.notification_email=‘service@********.com’"
    最后一行的email要与发信email一致.
    也就是说按照教程配置不需要其它特殊设置.

(我来了) #3

discourse 我配置端口4578 . 80端口继续给nginx, 使用nginx转发, 因为服务器我要搭其它web.
现在出现了新的问题: discourse 时不时的就出现502错误, 刷新一下 可能就好了, 接着又时不时502错误, 这种反复出现. 然后我进入 shared下查看nginx的日志. 不是外部的nginx, 发现好多
connect() failed (111: Connection refused) while connecting to upstream, client: 123.123.123.123, server: _, request: “GET /u HTTP/1.1”, upstream: "http://127.0.0.1:3000/u"
这种错误非常多.
如果 执行./launcher enter app 之后,进入app里, 这时 502的现象就消失了. logout退出, 那么502现象就又出现, 这是什么情况呢? 非常感谢


(我来了) #4


出现图中这种情况, 多刷新几次 有变ok了, 然后点击其它连接地址,又是这样. 反反复复的.


(我来了) #5

查看日志. discourse/shared/standalone/log/rails/unicorn.stderr.log

E, [2018-02-10T09:00:54.705372 #4119] ERROR – : Cannot allocate memory - fork(2) (Errno::ENOMEM)
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/unicorn-5.3.1/lib/unicorn/http_server.rb:545:in fork' /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/unicorn-5.3.1/lib/unicorn/http_server.rb:545:inspawn_missing_workers’
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/unicorn-5.3.1/lib/unicorn/http_server.rb:142:in start' /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/unicorn-5.3.1/bin/unicorn:126:in<top (required)>’
/var/www/discourse/vendor/bundle/ruby/2.4.0/bin/unicorn:23:in load' /var/www/discourse/vendor/bundle/ruby/2.4.0/bin/unicorn:23:in
I, [2018-02-10T09:00:55.890014 #4352] INFO – : Refreshing Gem list
I, [2018-02-10T09:00:57.067780 #4298] INFO – : worker=0 ready
I, [2018-02-10T09:01:04.130608 #4352] INFO – : listening on addr=0.0.0.0:3000 fd=15
E, [2018-02-10T09:01:08.159786 #4352] ERROR – : Cannot allocate memory - fork(2) (Errno::ENOMEM)
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/unicorn-5.3.1/lib/unicorn/http_server.rb:545:in fork' /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/unicorn-5.3.1/lib/unicorn/http_server.rb:545:inspawn_missing_workers’
/var/www/discourse/vendor/bundle/ruby/2.4.0/gems/unicorn-5.3.1/lib/unicorn/http_server.rb:142:in start' /var/www/discourse/vendor/bundle/ruby/2.4.0/gems/unicorn-5.3.1/bin/unicorn:126:in<top (required)>’
/var/www/discourse/vendor/bundle/ruby/2.4.0/bin/unicorn:23:in load' /var/www/discourse/vendor/bundle/ruby/2.4.0/bin/unicorn:23:in'
I, [2018-02-10T09:01:09.287961 #4570] INFO – : Refreshing Gem list
I, [2018-02-10T09:01:10.800399 #4529] INFO – : worker=0 ready
I, [2018-02-10T09:01:17.070740 #4570] INFO – : listening on addr=0.0.0.0:3000 fd=15
里面都是这种… 更改配置, 重装了无数次了.


(我来了) #6

总结错误经验:

  1. 502不一定是nginx的问题. 有可能是程序后端问题.
  2. 查日志记录, 找到error的信息,上网搜索, 感觉是个方法的都试了一次.
  3. 终于在 Cannot allocate memory - fork 用这个错误信息搜索时, 发现是内存问题
    但是一开始没有怀疑内存是因为我的内存8G. 够用了. 折腾了4天. 把系统里的mysql关掉后, 发现至少正常了1小时了. 后续继续观察中. 应该是mysql吃掉了大部分内存了.
    暂时结贴了