Redis + Как долго redis установить ключ к серверу и зафиксировать - PullRequest
0 голосов
/ 24 октября 2018

Я хотел бы измерить время, прошедшее с момента выдачи команды Redis set, до момента, когда сервер фактически передает ключ.

Есть ли способ измерить это?

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Есть много частей обработки команды.Сначала вы отправляете его от клиента к серверу по сети, затем работник TCP на сервере читает клиентский буфер, обрабатывает сообщение и помещает его в очередь команд, затем в конечном итоге основной цикл Redis извлекает команду из очереди, обрабатывает ее (когда эта часть заканчивается, ключ фиксируется) , затем записывает ответ в клиентский буфер, а затем, в конечном итоге, работник TCP обнаруживает, что ответ готов, и отправляет его клиенту по сети.В 99% случаев отправка по проводам - ​​это то, где вы проводите большую часть времени.

Метрика, которую вы предложили - от выдачи команды до фиксации ключа, трудно измерить, просто потому, что эти события происходят с разных сторон,Но что более важно, вам не нужно измерять это.Две основные метрики, измеряемые в таких системах:

  • задержка (от отправки команды до получения ответа)
  • пропускная способность (сколько команд от разных клиентов может обработать сервер заинтервал времени, обычно в секундах)

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

  1. Убедитесь, что время сервера и клиентских машин идеальносинхронизируются.Redis работает быстро, поэтому масштаб может пойти даже до наноса.
  2. до сохранения текущего времени в клиенте (например, long start = System.nanoTime(); в Java)
  3. Вызов не установлен, но скрипт lua: eval "redis.call('set','my_key','3,1415') return redis.call('time')" 0
  4. На клиенте вычтите время начала с момента, когда вы получили ответ.Вам нужно будет обрабатывать разницу в форматах вывода, Redis дает микросекундную точность.
  5. Делайте это много раз, чтобы получить стабильные результаты.Вы получите более медленный результат , потому что некоторое время будет потрачено на сценарии lua и даже на измерение времени.
0 голосов
/ 24 октября 2018

Команда INFO для redis отобразит статистику, которую вы ищете, в частности команду INFO Stats got instantaneous_ops_per_sec , которая представляет собой количество команд, обработанных redis за последнюю секунду.

Это поможет вам оценить время, затраченное Redis Instance на ваши операции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...