Search
Write a publication
Pull to refresh
0
0
Oleg Fedoseev @Aryoh

User

Send message
Вот в первую очередь не хватает банального таймстемпа у запросов (его же нет, да?). Из-за этого я не могу получить точных секундных срезов. Во всяком случае по простому.
В моем случае я имею источник секундных «сырых» данных, которые потом как угодно используются. Хоть для реалтаймовых графиков, хоть для хранения с последующей агрегацией.
Да, посекундно. Пинба это да показывает, но не дает возможности по простому получать секундные среды, кроме как раз в секунду вычитывать новые записи из таблиц, что не очень удобно. Плюс не очень удобна работа с таймерами и «отчётами» по таймерам — нужно заранее сделать отчёты (и в случае с ррд графики по ним), в моем случае я всегда могу посмотреть что было пол-часа назад имея все данные и имея возможность делать какие угодно отчёты.
Если бы всё было так просто :) Пробовали, не подошло по кучи разных причин.
Но основной плюс данного демона — возможно посмотреть что происходит (тормозит) вот прям сейчас.
К слову как раз смотрю в сторону OpenTSDB как более удобное хранилище.
Да, хотим хранить данные за всё время.
Само собой архивные данные группируются за бОльший интервал, но цель была хранить данные за максимальный срок для анализа того как у нас меняются показатели с течением времени.
Например стали ли наши скрипты за год работать лучше или хуже.
Посмотрите лучше в сторону PhantomJS, оно умеет YSlow и куда проще в работе.
phantomjs.org
github.com/marcelduran/yslow/wiki/PhantomJS
gist.github.com/3179988
Активно используем пинбу в течении последних 2х лет. Сразу как-то не понравилась зависимость от MySQLя, т.к. хотели хранить данные и иметь возможность мониторить работу в реальном времени.

В итоге был сделан свой демон: github.com/aryoh/pinba2zmq — слушает пинбу и отдает данные в zmq сокет раз в секунду. Теоретически можно и чаще, но нафига? :)

Написан на питоне, установка может показаться нетривиальной. Работает в продакшене на слабенькой vps'ке уже года полтора, сейчас держит нагрузку в 10к запросов к пхп в секунду, с 35-40к таймеров.

С него данные потом собираются и сохраняются в постоянное хранилище, плюс можно смотреть данные онлайн. Пример «клиента»:

#!/usr/bin/env python

from gevent_zeromq import zmq
import ujson

def pinba_slow():
    context = zmq.Context()
    sub = context.socket(zmq.SUB)
    sub.connect("tcp://[хост с pinba2zmq]:5000")
    sub.setsockopt(zmq.SUBSCRIBE, '')
    try:
        while True:
            ts, requests = ujson.decode(sub.recv())
            cnt = 0
            for info in requests:
                (hostname, server, script), (rps, request_size, request_time), timers = info
                cnt = cnt + rps
            print ts, 'requests per second:', cnt
    except KeyboardInterrupt:
        pass

if __name__ == '__main__':
    pinba_slow()


Буду рад если кому-то ещё он будет полезен :)
В дальнейшем надеюсь выложим в опенсорс и вывод графиков и остальные компоненты системы.
Даешь раздельные дни! Всё самое интересное только в первый день, во второй делать нечего.
И оплату по карточкам охота :)

Information

Rating
Does not participate
Location
Новосибирск, Новосибирская обл., Россия
Date of birth
Registered
Activity