Pull to refresh

Comments 11

Алексей, hitrate измеряли продакшеном или использовали для тестирования какие-либо утилиты?
Если вы про то сколько сможет обработать на статике, то сейчас замерил, с данным конфигом, вышло следующее:

#ab -i -n1000 -c10…
Requests per second: 13.70 [#/sec] (mean)
Time per request: 729.779 [ms] (mean)
Time per request: 72.978 [ms] (mean, across all concurrent requests)

(каждый заход был учтен корректно)

Да не много, но это если отправлять на каждый чих, можно использовать shared_dict и накапливать хиты там, потом отправлять. При этом в последний параметр ставить не 1, а количество накопленных. Тогда можно уменьшить количество обращений к GA и повысить hitrate.
Омг, ваша картинка меня сбила и мой вопрос был не по адресу. Прошу прощения!
Бывает =) Заменил, чтобы не сбивала.
Сделал новые замеры, с соседней виртуалки. До этого делал с локальной машины. Добавил их в конец статьи.
Отличная штука, спасибо.
А запрос к GA асинхронный?
Если я правильно понял документацию, то сокеты не блокирующие, но синхронные. То есть, текущее соединение ждет результата, но другие не блокируются. Хотя судя по цифрам как-то не понятно

ngx.socket.tcp
Creates and returns a TCP or stream-oriented unix domain socket object (also known as one type of the «cosocket» objects).

tcpsock:send
Sends data without blocking on the current TCP or Unix Domain Socket connection.
This method is a synchronous operation that will not return until all the data has been flushed into the system socket send buffer or an error occurs.
Все верно. Сокеты — non-blocking & synchronous
Если хочется асинхронных запросов, то можно сделать
ngx.location.capture, где все и обрабатывать.
Здесь уже будет асинхронно. Добавить shared_dict и будет наверное еще быстрее.
Не, Тёма, location.capture — он такой же, как сокеты: синхронный и неблокирующий; Lua будет ждать, пока capture не вернёт ответ.

Но всегда можно перед ssga.event() засунуть ngx.eof(): это отцепит клиента, а сервер продолжит спокойно отсылать запрос в фоне. Ну или в локации, на которую уйдёт location.capture, первой строкой выполнить ngx.eof(), тогда capture выполнится мгновенно.
Прошу прощения за лёгкий оффтоп, но как же прекрасно, что на хабре есть столько людей разделяющих мой интерес к NgX+mod_lua :D
// а может кто-нибудь из вас ещё и resty-template (с прочими resty-*) использует? :)
Sign up to leave a comment.

Articles