Beekeeper
view release on metacpan or search on metacpan
bin/bkpr-top view on Meta::CPAN
Percentage of CPU load (100 indicates a full utilization of one core thread).
For example, supposing that there are 4 core threads available, a service that
shows a C<cpu> load of 200 is using half of the CPU resources.
=item load
Percentage of busy time (100% indicates that there are no idle workers).
Note that workers can have a high load with very little CPU usage when being
blocked by synchronous operations (like slow SQL queries).
For example, supposing that there are 10 workers running, a service that shows a
C<load> of 50% is working at half capacity. Spawning 10 additional workers will
lower the load to 25%.
Due to inaccuracies of measurement the actual maximum may be slightly below 100%.
=back
Unless the option C<--host> is passed the values shown are the aggregate of all
lib/Beekeeper/Client.pm view on Meta::CPAN
if (!$client->{async_cv} || $client->{async_cv}->ready) {
$client->{async_cv} = AnyEvent->condvar;
}
$req->{_waiting_response} = $client->{async_cv};
$req->{_waiting_response}->begin;
}
$client->{in_progress}->{$req_id} = $req;
# Ensure that timeout is set properly when the event loop was blocked
if ($__now != CORE::time) { $__now = CORE::time; AnyEvent->now_update }
# Request timeout timer
my $timeout = $args{'timeout'} || REQ_TIMEOUT;
$req->{_timeout} = AnyEvent->timer( after => $timeout, cb => sub {
my $req = delete $client->{in_progress}->{$req_id};
$req->{_response} = Beekeeper::JSONRPC::Error->request_timeout;
$req->{_on_error_cb}->($req->{_response}) if $req->{_on_error_cb};
$req->{_waiting_response}->end;
});
lib/Beekeeper/MQTT.pm view on Meta::CPAN
sub _connect {
my ($self) = @_;
weaken($self);
my $config = $self->{config};
my $timeout = $config->{'timeout'};
$timeout = 30 unless defined $timeout;
# Ensure that timeout is set properly when the event loop was blocked
AnyEvent->now_update;
# Connection timeout handler
if ($timeout && !$self->{timeout_tmr}) {
$self->{timeout_tmr} = AnyEvent->timer( after => $timeout, cb => sub {
$self->_reset_connection;
$self->{connect_cv}->send;
$self->_fatal("Could not connect to MQTT broker after $timeout seconds");
});
}
lib/Beekeeper/Service/Supervisor.pm view on Meta::CPAN
=item cpu
Percentage of CPU load (100 indicates a full utilization of one core thread).
=item load
Percentage of busy time (100 indicates no idle time).
Note that workers can have a high load with very little CPU usage when being
blocked by synchronous operations (like slow SQL queries, for example).
Due to inaccuracies of measurement the actual maximum may be slightly below 100.
=back
=head1 METHODS
=head3 get_services_status ( %filters )
Returns the aggregate performance metrics of all active services.
lib/Beekeeper/Service/Supervisor/Worker.pm view on Meta::CPAN
=item cpu
Percentage of CPU load (100 indicates a full utilization of one core thread).
=item load
Percentage of busy time (100 indicates no idle time).
Note that workers can have a high load with very little CPU usage when being
blocked by synchronous operations (like slow SQL queries, for example).
Due to inaccuracies of measurement the actual maximum may be slightly below 100.
=back
=head1 SEE ALSO
L<Beekeeper::Service::Supervisor>, which is the interface to the RPC methods
exposed by this worker class.
lib/Beekeeper/Worker/Extension/SharedCache.pm view on Meta::CPAN
my $cache_id = $self->{id};
my $uid = $self->{uid};
my $local_bus = $bus->{bus_role};
my $client_id = $bus->{client_id};
$bus->publish(
topic => "req/$local_bus/_sync/$cache_id/dump",
response_topic => "priv/$client_id/sync-$cache_id",
);
# Ensure that timeout is set properly when the event loop was blocked
AnyEvent->now_update;
# When a fresh pool is started there is no master to reply sync requests
$self->{_sync_timeout} = AnyEvent->timer(
after => SYNC_REQUEST_TIMEOUT,
cb => sub { $self->_sync_completed(0) },
);
}
sub _sync_completed {
lib/Beekeeper/Worker/Extension/SharedCache.pm view on Meta::CPAN
$bus->publish(
topic => "msg/$local_bus/_sync/$cache_id/set",
payload => \$json,
);
}
unless (defined $value) {
# Postpone delete because it is necessary to keep the versioning
# of this modification until it is propagated to all workers
# Ensure that timer is set properly when the event loop was blocked
if ($_now != time) { $_now = time; AnyEvent->now_update }
$self->{_destroy}->{$key} = AnyEvent->timer( after => 60, cb => sub {
delete $self->{_destroy}->{$key};
delete $self->{data}->{$key};
delete $self->{vers}->{$key};
delete $self->{time}->{$key};
});
}
lib/Beekeeper/Worker/Extension/SharedCache.pm view on Meta::CPAN
$self->{vers}->{$key} = $keep->{vers};
$self->{time}->{$key} = $keep->{time};
$self->{on_update}->($key, $keep->{data}, $old) if $self->{on_update};
}
unless (defined $self->{data}->{$key}) {
# Postpone delete because it is necessary to keep the versioning
# of this modification until it is propagated to all workers
# Ensure that timer is set properly when the event loop was blocked
if ($_now != time) { $_now = time; AnyEvent->now_update }
$self->{_destroy}->{$key} = AnyEvent->timer( after => 60, cb => sub {
delete $self->{_destroy}->{$key};
delete $self->{data}->{$key};
delete $self->{vers}->{$key};
delete $self->{time}->{$key};
});
}
}
lib/Beekeeper/WorkerPool/Daemon.pm view on Meta::CPAN
}
sub write_pid_file {
my $self = shift;
my $pidfile = $self->pid_file;
die unless ($pidfile =~ m/\.pid$/);
# Open the pidfile in exclusive mode, to avoid race conditions
sysopen(my $fh, $pidfile, O_RDWR|O_CREAT) or die("Cannot open pid file '$pidfile': $!");
flock($fh, LOCK_EX | LOCK_NB) or die("Pid file '$pidfile' is already locked");
# Read the content of the pidfile
my $pid = <$fh>;
if ($pid && $pid =~ m/^(\d+)/ && $pid != $$) {
# File already exists and contains a process id. Check then if that
# process id actually belong to a running instance of this daemon
if ($self->verify_daemon_process($pid)) {
close($fh);
die("Cannot write pid file: alredy running");
( run in 0.776 second using v1.01-cache-2.11-cpan-49f99fa48dc )