问题标签 [ranch]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
364 浏览

erlang - 使用牧场,我如何判断监听器何时终止?

我正在使用Ranch在 Erlang 中编写 TCP 服务器。客户端将在连接断开后立即重新连接,这意味着一种特定的故障模式是侦听器每秒被启动和杀死数十次。

我想检测到这种情况并将统计信息发布到 statsd,以便在生产中进行监控。

那么,我可以在 Ranch 中使用一些东西来监控监听器何时被回收吗?或者我可以在 Erlang 中使用一些东西来监控整个节点的进程死亡率,而不必链接到每个进程,并且这些进程是由其他主管启动的,所以我没有对它们的引用?

0 投票
2 回答
2774 浏览

erlang - 成功响应后 case_clause 错误 [cowboy rest]

由于某种原因,我的 erlang 服务器在每次请求后都会生成一个 case_clause 错误。这是我的代码:
keychain_no_auth_handler.erl

is_registered [函数]

服务器回复适当的响应,然后在每次请求后生成 case_clause 错误:

=错误报告==== 5-Feb-2014::10:32:39 === 节点“keychain@dnldd”上的进程 <0.182.0> 出错,退出值:{{case_clause,{ok,{http_req ,#Port<0.2286>,ranch_tcp,keepalive,<0.182.0>,<<4 bytes>>,'HTTP/1.1',{{127,0,0,1},49720},<<9 bytes>> ,undefined,4004,<<11 bytes>>,undefined,<<0 bytes>>,[],[{action,<<10 bytes>>}],[{<<4 bytes>>,<<14 bytes >>},{<<10 字节>>,<<10 字节>>},{<<14 字节>>,<<1 字节>>},{<<13 字节>>,<<8 字节>> },{<<6 字节>>,<<51 字节>>},{<<6 字节>>,<<12 字节>>},{<<12 字节>>,<<16 字节>>}, {<<10 字节>>,<<120 字节>>},{<<13 字节>>,<<36 字节>>},{<<6 字节>>,<<3 字节>>},{<<3 字节>>,<<1 字节>>},{<<15 字节>>, <<17 字节>>},{<<15 字节>>,<<14 字节>>}],[{<<12 字节>>,{<<11 字节>>,<<4 字节>>,[ ]}},{<<17 bytes>>,undefined},{<<13 bytes>>,undefined},{<<19 bytes>>,undefined},{<<8 bytes>>,undefined},{< <6 字节>>,[...{<<13 字节>>,未定义},{<<19 字节>>,未定义},{<<8 字节>>,未定义},{<<6 字节>>,[...{<<13 字节>>,未定义},{<<19 字节>>,未定义},{<<8 字节>>,未定义},{<<6 字节>>,[...

=错误报告==== 2014 年 2 月 5 日::10:32:39 === 牧场侦听器 keychain_http 在 <0.182.0> 退出时使用 cowboy_protocol:start_link/4 启动了连接过程,原因是:{{case_clause,{好的,{http_req,#Port<0.2286>,ranch_tcp,keepalive,<0.182.0>,<<"POST">>,'HTTP/1.1',{{127,0,0,1},49720},< <"127.0.0.1">>,undefined,4004,<<"/registered">>,undefined,<<>>,[],[{action,<<"registered">>}],[{<< "host">>,<<"127.0.0.1:4004">>},{<<"connection">>,<<"keep-alive">>},{<<"content-length">>, <<"0">>},{<<"缓存控制">>,<<"无缓存">>},{<<"origin">>,<<"chrome-extension://fhbjgbiflinjbdggehcddcbncdddomop">>},{<<"number">>,<<"233265256262">>},{<<"content-type">>,<<"application/json ">>},{<<"user-agent">>,<<"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36"> >},{<<"邮递员令牌">>,<<"61b7c8f0-b4f8-3bde-8b99-67c141242e5a">>},{<<"接受">>,<<""user-agent">>,<<"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36">>},{<<"postman -token">>,<<"61b7c8f0-b4f8-3bde-8b99-67c141242e5a">>},{<<"接受">>,<<""user-agent">>,<<"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.107 Safari/537.36">>},{<<"postman -token">>,<<"61b7c8f0-b4f8-3bde-8b99-67c141242e5a">>},{<<"接受">>,<<"/ ">>},{<<"dnt">>,<<"1">>},{<<"accept-encoding">>,<<"gzip,deflate,sdch">>},{< <"accept-language">>,<<"en-US,en;q=0.8">>}],[{<<"content-type">>,{<<"application">>,<< "json">>,[]}},{<<"if-modified-since">>,undefined},{<<"if-none-match">>,undefined},{<<"if-unmodified -since">>,undefined},{<<"if-match">>,undefined},{<<"accept">>,[{{<<" ">>,<<" ">>,[ ]},1000,[]}]},{<<"connection">>,[<<"keep-alive">>]}],undefined,[{charset,undefined},{media_type,{<<"text">>,<<"html">>,[]}}],等待,未定义,<<>>,true,done,[],< <>>,undefined},undefined}},[{cowboy_rest,process_content_type,3,[{file,"src/cowboy_rest.erl"},{line,780}]},{cowboy_protocol,execute,4,[{file ,"src/cowboy_protocol.erl"},{line,529}]}]}

我在这里做错了什么?谢谢。

0 投票
2 回答
1199 浏览

erlang - erlang protobuf 错误:无法加载模块

我正在使用 protobuffs(basho) 编写一个 erlang 牧场应用程序,并且我在开始时包含了 test_pb.hrl,( include("test_pb.hrl"))。但是当我制作应用程序并运行时,它得到了错误: {'module could not be loaded', [{protobuffs,next_field_num,[<<10,5,116,101,115,116,49>>],[]}, {test_pb,decode,3,[{file,"src/test_pb.erl"},{line,143}]}, {test_pb,decode,2,[{file,"src/test_pb.erl"},{line,138}]}, {reverse_protocol,handle_info,2, [{file,"src/reverse_protocol.erl"},{line,47}]}, {gen_server,handle_msg,5,[{file,"gen_server.erl"},{line,604}]}, {proc_lib,init_p_do_apply,3,[{file,"proc_lib.erl"},{line,239}]}]}

第 47 行是:Msgdata = test_pb:decode_test(Data),

整个源文件是:` %% 随意使用、重用和滥用此文件中的代码。

`

0 投票
1 回答
1359 浏览

sockets - erlang socket (using ranch) close in a short time?

i use ranch to listen socket, but in a short time about five seconds, ranch closed the socket, and my setting of socket is above, so what' wrong?

the protocol file is below, the ranch listen to accept a socket, and the reverse the receive data, but what's wrong is that, when send data back to the client, after about five seconds, the client receive the message says that the socket is closed by server, i don't know if is ranch's default settings cause this?

0 投票
0 回答
351 浏览

erlang - 牛仔连接进程以 enomem 终止

我遇到了牛仔错误

牧场侦听器 api_resource 在 <0.1822.0> 退出时以 cowboy_protocol:start_link/4 开始连接过程,原因是:enomem#012

在请求处理程序中,我通过 erlang 端口(c 语言)与另一个供应商的 tts 平台进行交互。对端口的第一个 tts 命令成功,我可以得到 1M 字节的数据,对端口的第二个 tts 命令成功发送到端口,但随后牛仔进程立即终止并出现上述错误消息。

我试图提高 erlang vm 的堆栈大小、堆大小、二进制虚拟堆大小和 os 的堆栈大小,没有帮助。

任何建议表示赞赏,谢谢。

代码:

0 投票
1 回答
1107 浏览

erlang - 我的 Erlang 应用程序看不到牧场模块依赖项

(这里是新手)尝试运行牧场示例时出现错误。通过rebar我创建了应用程序和节点(请参阅github)。但是当我尝试构建和运行它时,我得到了undef ranch,start_listener.

请查看完整的控制台输出:

我不确定我是否正确添加ranchreltool.config请参阅 github)。但是如果我depslibs_dir路径中删除,我会得到rebar generate错误Application version clash. Multiple directories contain version ...

更新如果我删除失败的呼叫并运行它,则将application:which_applications().{ranch,[],[]}作为正在运行的呼叫之一。

更新版本

我做错了什么?

提前致谢!

0 投票
1 回答
590 浏览

windows - 在 Windows 上成功运行 Ranch 的步骤是什么?

请问我们需要采取哪些步骤才能让 Ranch 在 Windows 上成功运行?

在一个很棒的博客系列中有一组非常有启发性的例子,我想在这里学习:

http://dbeck.github.io/Using-Ranch-From-Elixir/

http://dbeck.github.io/simple-TCP-message-performance-in-Elixir/

然而,它要求我们使用 Ranch Erlang Lib。

到目前为止,让它在 Windows 上工作一直很痛苦:

mix.deps.compile 失败

0 投票
1 回答
821 浏览

erlang - 如何在erlang中处理Rabbitmq Error shortstr_size?

我正在使用 erlang 客户端库使用默认连接参数连接到本地 rabbitmq 服务器。我在 24 小时内遇到了这个问题。我的 Erlang 应用程序无法处理此问题。对于我的错误记录器,我收到这些消息..

我正在使用这个库 https://github.com/jbrisbin/amqp_client 因为它有钢筋。我正在为我的项目使用钢筋。

可能是我写错了一些东西,因为我对 erlang 很陌生。这是我在 Erlang 中的第一个项目。我使用牧场作为 tcp 客户端接受器。我的客户端处理程序是一个 gen_fsm。

我正在使用的代码片段

另外,当我遇到此问题时,我的牧场套接字侦听器会抛出错误。

0 投票
1 回答
310 浏览

erlang - 如何获取 Erlang Ranch 上的监控统计信息

我是 Elixir 的新手。在负载测试期间,我的 Elixir 应用程序超时。知道如何在任何时间点找出打开的连接数以及排队等待处理的请求数吗?我已经可以看到该节点正在达到内存和 cpu 限制,但我想要更详细的信息,所以我知道要调整什么。

我知道 Ranch 有一个max_connections设置,但它是否提供关于有多少打开的连接或排队的请求的统计信息?

0 投票
1 回答
985 浏览

ssl - 使用 HTTP2 和 TLS 的 Cowboy Web 服务器在 Chrome 中获取 ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY

我正在使用:Erlang OTP 21 和 Cowboy 2.4 代码:

我正在使用它来启动 Web 服务器,它在 HTTP1.1 上运行良好,但现在 Chrome 正在使用 HTTP2,并且无法禁用。所以现在我收到:

我在启用 HTTP2 的 Firefox 中也遇到了类似的问题:

但在 Firefox 上,我可以禁用 HTTP2。禁用 HTTP2 时它工作正常。我已经验证我的证书是好的并且我在 HTTP1.1 下获得了绿色锁 我已经读到 HTTP2 对所使用的密码和它们出现的顺序更加严格。

修复 Chrome 中的 ERR_SPDY_INADEQUATE_TRANSPORT_SECURITY SSL 错误 https://www.jeffgeerling.com/blog/2016/fixing-errspdyinadequatetransportsecurity-ssl-error-chrome 但不确定这是否是问题所在。

我不确定要使用什么密码,也不完全确定如何指示它们在牛仔中的使用。我尝试在选项中添加密码选项,但这并不能解决问题:

关于我在这里做错了什么有什么建议吗?