Безболезненный способ установить несколько соединений одновременно - заменить «демон» на «префорк» (он может даже работать лучше, чем гипнот).
С:
app->start('daemon', '-l', 'http://*:8000');
Кому:
app->start('prefork', '-l', 'http://*:8000');
Вы можете проверить это самостоятельно с помощью:
#!/usr/bin/perl -wl
use Mojolicious::Lite;
get '/' => sub {
my $self = shift;
for(my $wait = 10; $wait > 0; $wait--) {
sleep(1);
}
$self->render(text => "OK");
};
# Uncomment to test hypnotoad. execute: hypnotoad ./this_script.pl
#app->config(hypnotoad => {listen => ['http://*:8000']});
#app->start;
# Test Daemon: (Uncomment next line)
#app->start('daemon', '-l', 'http://*:8000');
# Test Prefork: (Uncomment next line)
app->start('prefork', '-l', 'http://*:8000');
Это тест:
$ ab -n 10 -c 10 -s 120 http://localhost:8000/ :
Результаты:
(totals) min mean[+/-sd] median max total time
daemon: 11008 92020 28464.5 101021 101022 101.022 seconds
hypnotoad: 10017 31525 18811.0 49030 49033 49.036 seconds
prefork: 20018 24020 5165.0 20020 30022 30.029 seconds
В идеале общее время должно быть близко к 10 секундам ... но я не нашел способа улучшить это время (пока).