异步 – MOAR进程在运行Perl6套接字服务器时膨胀
发布时间:2020-12-15 23:33:21 所属栏目:大数据 来源:网络整理
导读:我有一个使用IO :: Socket :: Async和Redis :: Async进行消息发布的套接字服务器.只要服务器收到消息,脚本就会转换消息并生成确认消息以发送回发送方,以便发送方发送后续消息.由于翻译消息非常昂贵,因此脚本将在“start”方法下运行该部分. 但是,我注意到Moa
我有一个使用IO :: Socket :: Async和Redis :: Async进行消息发布的套接字服务器.只要服务器收到消息,脚本就会转换消息并生成确认消息以发送回发送方,以便发送方发送后续消息.由于翻译消息非常昂贵,因此脚本将在“start”方法下运行该部分.
但是,我注意到Moar进程正在运行我的RAM.有什么想法我应该在哪里解决这个问题?谢谢! https://pastebin.com/ySsQsMFH use v6; use Data::Dump; use experimental :pack; use JSON::Tiny; use Redis::Async; constant $SOCKET_PORT = 7000; constant $SOCKET_ADDR = '0.0.0.0'; constant $REDIS_PORT = 6379; constant $REDIS_ADDR = '127.0.0.1'; constant $REDIS_AUTH = 'xxxxxxxx'; constant $IDLING_PERIOD_MIN = 180 - 2; # 3 minutes - 2 secs constant $CACHE_EXPIRE_IN = 86400; # 24h hours # create socket my $socket = IO::Socket::Async.listen($SOCKET_ADDR,$SOCKET_PORT); # connnect to Redis ... my $redis; try { my $error-code = "110"; $redis = Redis::Async.new("$SOCKET_ADDR:$SOCKET_PORT"); $redis.auth($REDIS_AUTH); CATCH { default { say "Error $error-code ",.^name,': Failed to initiate connection to Redis'; exit; } } } # react whenever there is connection react { whenever $socket -> $conn { # do something when the connection wants to talk whenever $conn.Supply(:bin) { # only process if data length is either 108 or 116 if $_.decode('utf-8').chars == 108 or $_.decode('utf-8').chars == 116 { say "Received --> "~$_.decode('utf-8'); my $ack = generateAck($_.decode('utf-8')); # generate ack based on received data if $ack { $conn.print: $ack; }else{ say "No ack. Received data maybe corrupted. Closing connection"; $conn.close; } } } } CATCH { default { say .^name,': ',.Str; say "handled in $?LINE"; } } } ### other subroutines down here ### 解决方法
问题是使用Async :: Redis. Jonathon Stowe修复了Redis模块,因此我使用Redis模块没有问题.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |