Mongodb 流星错误:结束后写入

Mongodb 流星错误:结束后写入,mongodb,nginx,meteor,Mongodb,Nginx,Meteor,编辑 似乎第二台服务器偶尔会出现这个错误,这让我几乎可以肯定这是一个配置问题。这可能是下列情况之一: net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse =1 要求的版本信息:Meteor:1.5.0 操作系统:Ubuntu 16.04 提供商:AWS EC2 我在一台服务器(成对)上运行的两个进程上间歇性地、似乎随机地出现以下错误。另一台服务器从未收到此错误,此错误未引用我编写的任何代码

编辑 似乎第二台服务器偶尔会出现这个错误,这让我几乎可以肯定这是一个配置问题。这可能是下列情况之一:

net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse =1
要求的版本信息:
Meteor:1.5.0
操作系统:Ubuntu 16.04
提供商:AWS EC2

我在一台服务器(成对)上运行的两个进程上间歇性地、似乎随机地出现以下错误。另一台服务器从未收到此错误,此错误未引用我编写的任何代码,因此我只能假设它(a)是Meteor中的错误,或(b)是我的服务器配置中的错误。进程崩溃的服务器还托管着另外两个meteor站点,这两个站点偶尔会出现以下错误:

Error: write after end
at writeAfterEnd (_stream_writable.js:167:12)
at PassThrough.Writable.write (_stream_writable.js:212:5)
at IncomingMessage.ondata (_stream_readable.js:542:20)
at emitOne (events.js:77:13)
at IncomingMessage.emit (events.js:169:7)
at IncomingMessage.Readable.read (_stream_readable.js:368:10)
at flow (_stream_readable.js:759:26)
at resume_ (_stream_readable.js:739:3)
at nextTickCallbackWith2Args (node.js:511:9)
at process._tickDomainCallback (node.js:466:17)
我已经检查过的东西:

  • 内存限制(非常接近)
  • 连接限制-非常小,故障时每台服务器大约20个,进程在1分钟内被转移到第二台服务器上,第二台服务器处理了这些限制+它自己就可以了
  • 进程限制-服务器1上的两个进程都在7分钟内失败
  • 服务器配置-当我试图在负载测试期间寻找一些额外的性能时,我根据我在high load node.js服务器上看到的帖子修改了
    sysctl.conf
    ,这是故障服务器的内容
    sysctl.conf
    ,但是,正常运行的服务器具有相同的配置
  • 我在server1上有一个NGINX均衡器,它跨4个进程(每台服务器2个)进行负载平衡。NGINX错误日志中的行杂乱无章,如下所示:

    2017/08/17 16:15:01[warn]1221#1221:*6233472读取上游时,上游响应缓冲到临时文件/var/lib/nginx/proxy/1/46/0000029461,客户端:164.68.80.47,服务器:已编辑服务器,请求:“获取路径已编辑HTTP/1.1”,上游:“路径已编辑”,主机:“主机已编辑”,引用人:“引用人已编辑”

    发生错误时,我看到一对这样的行:

    2017/08/17 15:07:19[错误]1222#1222:*6215301连接()在连接到上游时失败(111:连接被拒绝),客户端:ip已编辑,服务器:服务器已编辑,请求:“GET/admin/sockjs/info?cb=o2ziavvsua HTTP/1.1”,上游:http://127.0.0.1:8080/admin/sockjs/info?cb=o2ziavvsua,主机:“主机名已编辑”,推荐人:“修订推荐人”

    2017/08/17 15:07:19[警告]1222#1222:*6215301连接到上游时暂时禁用上游服务器,客户端:ip已编辑,服务器:服务器已编辑,请求:“GET/admin/sockjs/info?cb=o2ziavvsua HTTP/1.1”,上游:http://127.0.0.1:8080/admin/sockjs/info?cb=o2ziavvsua,主机:“主机名已编辑”,推荐人:“推荐人已编辑”“

    如果有必要的话,我将使用一个3节点mongo副本集,其中两台服务器都指向所有3个节点

    我还使用了kadira的自定义托管版本(因为它离线了)


    如果无法阻止错误,是否有任何方法阻止它们关闭整个进程,有时每个进程连接50-100个用户,因为一个错误而启动它们似乎太多了

    两天没有崩溃,因此我认为解决方案正在改变:

    net.ipv4.tcp_fin_timeout = 2
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    


    我不知道是哪一个导致了问题(可能是超时)。我仍然认为这是一个“错误”,一个“结束后写入”错误会使整个meteor进程崩溃。也许这应该简单地记录下来。

    已经两天没有崩溃了,所以我认为解决方案正在改变:

    net.ipv4.tcp_fin_timeout = 2
    net.ipv4.tcp_tw_recycle = 1
    net.ipv4.tcp_tw_reuse = 1
    


    我不知道是哪一个导致了问题(可能是超时)。我仍然认为这是一个“错误”,一个“结束后写入”错误会使整个meteor进程崩溃。也许这应该简单地记录下来。

    您还应该指定Meteor/OS/etcversions@Styx问题已编辑,谢谢。我建议将Meteor更新为
    1.5.1
    ,以确保您知道。您还应指定Meteor/OS/etcversions@Styx问题已编辑,谢谢我建议将Meteor更新为
    1.5.1
    ,只是为了确定,你知道的。
    net.ipv4.tcp_fin_timeout = 15
    net.ipv4.tcp_tw_recycle = 0
    net.ipv4.tcp_tw_reuse = 0