Ani*_*ita 8 cpu erlang web-services recv gen-tcp
对不起,我是一个Erlang新手,可能会提出愚蠢的问题.但请帮我解决这个问题.
我已经编写了一个Erlang服务器来替换我正在使用的Node.js,它占用了我所有的记忆,我正在祈祷Erlang可能是一个出路.服务器在单元测试和内部测试下正常工作,但在压力测试中面临高CPU使用率.
在减少之后,我发现CPU突发是由于客户端的TCP接收造成的.
receiveClientPacket(Sock) ->
inet:setopts(Sock, [{active, once}, {buffer, ?CLIENTHEARTBEATSIZE}]),
receive
{tcp, Sock, Data} ->
{ok, Data};
{tcp_closed, Sock} ->
{error, closed}
after ?CLIENTRECCEIVETIMEOUT ->
{error, timeout}
end.
Run Code Online (Sandbox Code Playgroud)
我试着在函数开始时让进程休眠10个小时(以防止它调用receive),CPU根本没有爆发.因此我得出结论,CPU的突发是由于TCP接收造成的.(如果我犯了任何错误,请纠正我)
以下是有关压力测试的信息:
我正在为Erlang服务器使用Amazon Linux AMI(大型实例,64位).是由于Linux的爆发?因为我不知道系统将如何耗尽CPU.或者这是我糟糕的代码问题?(我相信是这样...)
在实际情况中,我们的服务器不仅接收乒乓球,还接收消息,这是更多的负载...这只是第一步......
数以百万计的感谢任何能救我的人.
梅艳芳〜*
~~~~~~~~~~~~~~~~~~~~~~~
有关大型实例的信息(供参考):
归档时间: |
|
查看次数: |
719 次 |
最近记录: |