Elixir 在短时间内发送多条大消息时与Phoenix频道断开连接
首先,我想说的是,在我的公司,我们是长生不老药生态系统的忠实粉丝,尤其是凤凰框架 上下文Elixir 在短时间内发送多条大消息时与Phoenix频道断开连接,elixir,phoenix-framework,large-data,channel,Elixir,Phoenix Framework,Large Data,Channel,首先,我想说的是,在我的公司,我们是长生不老药生态系统的忠实粉丝,尤其是凤凰框架 上下文 一款名为“the broker”的Phoenix应用程序公开了一个频道 名为“客户端”的Phoenix应用程序使用Phoenix_gen_socket_client包连接到代理频道(请参阅) 环境 代理应用程序: 长生不老药1.5.1 凤凰城1.3版 Freebsd监狱v10.3 amd64 客户端应用程序: 长生不老药1.5.1 凤凰城1.3版 MacOSX 问题 当通过通道发送多条消息时,例如使用循
- 一款名为“the broker”的Phoenix应用程序公开了一个频道
- 名为“客户端”的Phoenix应用程序使用Phoenix_gen_socket_client包连接到代理频道(请参阅)
{:websocket_req,:wss,'broker.dexyde.com',443, “/socket/websocket?user_token=SFMyNTY.g3qaaaczaaezgf0yw4haiclcs9hxavkaazzawduzwrubg9ykvuxwe.zrbhkbm4bxzgexlynppfxdugtcuzqmdhgcjszd3zo”, 30000,:未定义,1, {:sslsocket,{:gen_tcp,#端口,:tls_连接,:undefined}, #PID}, {:传输,:ssl,:ssl,:ssl_关闭,:ssl_错误, [mode::binary,active:true,verify::verify\u none,数据包:0]}, “12krm8DaxFlr/ZuaS8p6Uw==”,139669,1,2,:未定义,:未定义},{:传输,:ssl,:ssl,:ssl,:ssl_关闭,:ssl_错误, [mode::binary,active:true,verify::verify_none,packet:0]},[],{:wss,'broker.dexyde.com',443, “/socket/websocket?user_token=SFMyNTY.g3qaaaczaaezgf0yw4haiclcs9hxavkaazzawduzwrubg9ykvuxwe.zrbhkbm4bxzgexlynppfxdugtcuzqmdhgcjszd3zo”, {Phoenix.Channels.GenSocketClient.Transport.WebSocketClient, %{keepalive:30000,套接字:#PID},false,:未定义,0}**终止原因=**{:错误,:关闭} 我们在代理端使用带有自定义序列化程序的二进制消息。 在压缩有效载荷之前,观察到的有效载荷大小介于500K和1M字符之间 测试完成
- 在客户端的每次推送之间添加一个:timer.sleep(3000),以便消息到达代理函数中的handle_,并且代理可以回复客户端的handle_回复
- 减少消息负载的大小似乎也能起作用
- 在短时间内发送大量信息时,是否有人经历过类似的事情
- 是否存在一种通道或套接字限制
朱利安我想分享我从长生不老药论坛得到的有趣答案:
只是一个猜测:你没有尝试过生成一个带有负载的
任务
,以便能够立即回答{:noreply,socket}
?是的,尝试过。同样的问题,有效负载不会进入服务器通道功能中的句柄。是的,我也经历过。如果你像机器人一样打字,这种情况经常发生。