안녕하세요, 저는 매우 간단한 HTTP 서버를 만들었고 POE 모듈에 대한 스트레스 테스트 만했습니다.흠, IO :: 비동기도 10k 연결을 처리 할 수 없습니까?
는 여기에 내가 그것을 테스트하는 방법은 다음과 같습니다
for x in {1..10000}; do
curl xxxxx:12342 --retry-delay 5 --retry 3 -d randombytes$x
done
나는이 10,000 연결에 내가 총 약 1,200 요청을 잃었다 그래서, 피어 메시지가 여러 "연결 재설정"을 참조하십시오 그렇게
.어쨌든 성능을 향상시킬 수 있습니까? 동일한 서버에서 nginx를 테스트했지만 그 동안 아무 커널 매개 변수도 변경되지 않았으며 연결 재설정 메시지가 전혀 표시되지 않았습니다.
편집
나는 이미 최대 fileno는/사용자의 최대 fileno 당, 전자는 fs.file-max = 3246455
이었다 증가, 후자였다 10240
첨부 소스 코드 :
use strict;
use warnings;
use feature 'say';
use Net::Async::HTTP::Server;
use IO::Async::Loop;
use HTTP::Request;
use HTTP::Response;
use Data::Dumper;
my $loop = IO::Async::Loop->new();
my $httpserver = Net::Async::HTTP::Server->new(
on_request => sub {
my ($self, $req) = @_;
my ($code, $result) = (200, "It works\n");
my $response = HTTP::Response->new ($code);
$response->add_content ($result);
$response->content_type ("application/json");
$response->content_length (length $response->content);
$req->respond($response);
},
);
$loop->add($httpserver);
$httpserver->listen(
addr => { family => "inet", socktype => "stream", port => 8080 },
on_listen_error => sub { die "Cannot listen - $_[-1]\n" },
);
say 'Listening normally on ', 8080;
$loop->run;
태그는 POE, 설명 및 코드가 IO :: Async라고 말합니다. 다시 질문 드리겠습니다 – LeoNerd
@LeoNerd 흠 그냥 io :: async 태그를 찾지 못했습니다. – daisy