Overengineering detected!
2013/8/26 Lindolfo Lorn Rodrigues <l...@lornlab.org> > Eu mudaria boa parte do que você fez. > > Não sei qual problema que você está tentando resolver com isso, por isso > tudo > isso aqui será uma mega hipotese, se puder dizer qual o problema está > tentando > resolver, seria legal :) > > Eu usaria o Statsd para acumular o valor e exportaria via graphite. > > Eu não entendi bem o motivo de ficar rodando a cada segundo então vou > chutar: > > Você que capturar ações de usuário/sistema em algum lugar? > > Caso sim, você poderia colocar esse codigo logo depois a ação do > usuário/sistema: > > my $statsd = Etsy::StatsD->new > my $bucket = "pacman.hit_number" > $statsd->increment($bucket); > > O stasd usa UDP, não vai alterar em nada perceptivo na perfomance, do seu > sistema. > > Mandando o contador acima para o statsd ele irá acumular e mandar para o > graphite, > no graphite com o dado cru você pode criar várias operações de estatistica > ( mediana, media, percentile..etc ) e gerar graficos. > > > http://graphite.readthedocs.org/en/0.9.10/functions.html#module-graphite.render.functions > > O Statsd suporta vários backend o mais conhecido/usado deles é o Graphite: > http://graphite.wikidot.com/screen-shots > > A Etsy tem um post explicando melhor a "metodologia" deles de medir tudo: > > http://codeascraft.com/2011/02/15/measure-anything-measure-everything/ > https://github.com/etsy/statsd > > PS: O Statsd teve origem no Flickr, e a primeira versão era em Perl > recentemente eles > liberaram o código fonte: > > https://github.com/iamcal/Flickr-StatsD > > > > 2013/8/26 Stanislaw Pusep <creakt...@gmail.com> > >> Use AE::time() no lugar do localtime >> >> понедельник, 26 августа 2013 г. пользователь Tiago Peczenyj писал: >> >> Ola >>> >>> Eu tenho o seguinte caso >>> >>> preciso rodar um certo método a cada segundo, que por sua vez acumula um >>> valor em algum atributo interno do objeto ( total += por exemplo ). >>> >>> a cada minuto quero enviar o valor de total para algum lugar (ex Zabbix). >>> >>> a meia noite eu quero limpar o total para 0. >>> >>> Eu cheguei a algo assim: >>> use AnyEvent; >>> >>> sub loop { >>> my $obj = Foo->new; >>> my $cv = AE::cv; >>> >>> my $seconds_in_a_day = 60 * 60 * 24; >>> my $seconds_to_midnight = $seconds_in_a_day - seconds_from_midnight(); >>> >>> my $loop = AE::timer 0, 1, sub { $obj->run }; >>> >>> my $send = AE::timer 60, 60, sub { $obj->send }; >>> >>> my $clear= AE::timer $seconds_to_midnight, $seconds_in_a_day, sub { >>> $obj->clear }; >>> $cv->recv; >>> } >>> >>> a sub seconds_from_midnight usa localtime pra fazer uma conta marota. >>> >>> A assinatura do AE::timer eh >>> >>> AE::timer $delay, $interval, $callback; >>> >>> No primeiro timer eu tenho o meu main loop, chamando o metodo run. >>> No segundo eu tenho o metodo que envia os dados a cada 60 segundos >>> No terceiro eu calculo quantos segundos faltam para a meia noite e mando >>> repetir a cada 24 horas. >>> >>> hoje eu tenho um loop com um sleep 1 e varios ifs. quero que fique mais >>> legivel e nao utilizo anyEvent em nenhum outro lugar. Nao precisa ser >>> EXATO, portanto um atraso de alguns segundos pode acontecer. >>> >>> Parece bom, mas eu tenho algumas duvidas. >>> >>> 1) esta claro o suficiente? >>> 2) o overhead do AnyEvent parece ser o mesmo do sleep (1) durante o >>> runtime (ignorando quanto tempo demora pra iniciar ou não), certo? >>> 3) para rodar algo "a meia noite" me parece um tanto confuso ainda. não >>> encontrei nenhum helper q me ajude (o AnyEvent::Cron da pau pra mim). sera >>> q nao eh melhor "re-setar" o time watcher para a proxima meia noite? >>> 4) alias tem algo melhor do que ficar brincando com localtime() pra >>> pegar quantos segundos faltam pra proxima meia noite? algo usando DateTime >>> >>> por fim >>> >>> 5) tem algum problema ao usar AE::timer q eu não esteja vendo? Fora os >>> problemas interentes como se eu usar IO Bloqueante eu não vou ter os timers >>> "exatos". >>> >>> Obrigado >>> >>> Tiago >>> >>> -- >>> Tiago B. Peczenyj >>> Linux User #405772 >>> >>> http://about.me/peczenyj >>> >> >> =begin disclaimer >> Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ >> SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org >> L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> >> =end disclaimer >> >> > > =begin disclaimer > Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ > SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org > L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> > =end disclaimer > >
=begin disclaimer Sao Paulo Perl Mongers: http://sao-paulo.pm.org/ SaoPaulo-pm mailing list: SaoPaulo-pm@pm.org L<http://mail.pm.org/mailman/listinfo/saopaulo-pm> =end disclaimer