Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 在短时间内发送多条大消息时与Phoenix频道断开连接_Elixir_Phoenix Framework_Large Data_Channel - Fatal编程技术网

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包连接到代理频道(请参阅)
环境 代理应用程序: 长生不老药1.5.1 凤凰城1.3版 Freebsd监狱v10.3 amd64

客户端应用程序: 长生不老药1.5.1 凤凰城1.3版 MacOSX

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

21:45:58.027[错误]**状态机#PID终止** 最后一条消息是{:send_帧,{:binary, }}**当状态==:已连接**数据=={:上下文,
{: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}
?是的,尝试过。同样的问题,有效负载不会进入服务器通道功能中的句柄。是的,我也经历过。如果你像机器人一样打字,这种情况经常发生。