在很短的时间内发送多条大型邮件时与凤凰频道断开连接

时间:2017-10-26 20:19:56

标签: elixir phoenix-framework large-data channel

首先,我想说,在我的公司,我们是Elixir生态系统的巨大粉丝,尤其是Phoenix框架。

上下文

环境

经纪人应用:     Elixir 1.5.1     凤凰v1.3     Freebsd jail v10.3 amd64

客户端应用:     Elixir 1.5.1     凤凰v1.3     Mac os X

问题

当通过通道发送多个消息时,例如使用循环或Enum.each,只有少数消息设法到达代理通道handle_in函数。   然后客户端崩溃,出现以下错误:

  

21:45:58.027 [错误] **状态机#PID< 0.471.0>终止**   最后一条消息是{:send_frame,{:binary,       <<<< 31,139,8,0,0,0,0,0,3,188,187,231,206,235,74,146,45,248,         42,131,51,63,217,183,232,93,253,163,104,69,47,209,115,106,         80,160,247,222,179,113,223,125,184,247,62,231,84,...>>}} **当State ==:connected ** Data == {:背景下,
  {:websocket_req,:wss,'broker.dexyde.com',443,       '/socket/websocket?user_token=SFMyNTY.g3QAAAACZAAEZGF0YW4HAIClCS9hXAVkAAZzaWduZWRuBgC9YkVUXwE.ZRbhkBm4BxzGEXLynPpfXDuGTcuZQMdhgcJszmZd3zo',       30000,:undefined,1,       {:sslsocket,{:gen_tcp,#Port< 0.20422>,:tls_connection,:undefined},        #PID< 0.476.0>},       {:transport,:ssl,:ssl,:ssl_closed,:ssl_error,        [mode :: binary,active:true,verify :: verify_none,packet:0]},       “12krm8DaxFlr / ZuaS8p6Uw ==”,139669,1,2,:undefined,:undefined},{:transport,:ssl,:ssl,:ssl_closed,:ssl_error,       [mode :: binary,active:true,verify :: verify_none,packet:0]},[],{:wss,'broker.dexyde.com',443,       '/socket/websocket?user_token=SFMyNTY.g3QAAAACZAAEZGF0YW4HAIClCS9hXAVkAAZzaWduZWRuBgC9YkVUXwE.ZRbhkBm4BxzGEXLynPpfXDuGTcuZQMdhgcJszmZd3zo'},   {Phoenix.Channels.GenSocketClient.Transport.WebSocketClient,       %{keepalive:30000,socket:#PID< 0.469.0>}},<<<<<<<<<<<  <<<<<<<<<     235,90,118,45,248,        42,141,211,63,105,155,57,213,63,138,81,204,18,51,187,26,5,        230,156,51,141,251,238,151,...>>,false,:undefined,0} **终止原因= ** {:错误,:已关闭}

我们在代理端使用带有自定义序列化程序的二进制消息。   在压缩之前,观察到的有效载荷大小在500K到1M之间。

完成测试

  • 在客户端的每次推送之间添加:timer.sleep(3000),以便消息到达代理的handle_in函数,并且它可以回复客户端的handle_reply。
  • 减少消息有效负载的大小似乎也有效。

我们的结论......到目前为止

当客户端应用程序在很短的时间内通过该通道发送多条大型消息时,它似乎与代理通道断开连接。

问题

  • 在很短的时间内发送许多大型邮件时,是否有人经历过类似的事情?
  • 是否存在某种通道或插槽限制?

对此主题表示欢迎或评论。

非常感谢你的帮助。

此致

于连

1 个答案:

答案 0 :(得分:0)