Redis производительность процессора на отсортированных наборах - PullRequest
3 голосов
/ 14 февраля 2012

мы запускаем redis и делаем сотни приращений ключей в секунду в отсортированном наборе, и в то же время делаем тысячи чтений в отсортированном наборе также каждую секунду.

Кажется, это работает хорошо, но во время пиковой нагрузки загрузка процессора довольно высока, 80% от одного ядра. Сам по себе отсортированный набор занимает несколько тысяч ключей.

Вероятно ли увеличение использования процессора из-за сотен приращений в секунду или тысяч операций чтения? понимать как эффективность воздействия, но какое влияние имеет большее значение?

Учитывая это, какие метрики лучше всего отслеживать в моем производственном экземпляре для проверки этих узких мест?

1 Ответ

2 голосов
/ 14 февраля 2012

Необходимо проверить, достаточно ли малы отсортированные наборы для их сериализации в Redis или нет. Например, «объект отладки» может быть применен к образцу отсортированных наборов, чтобы проверить, закодированы ли они как ziplist или нет.

использование памяти ziplist для обмена с ЦП, особенно когда размер отсортированного набора близок к порогу (zset-max-ziplist-records, zset-max-ziplist-value, в файле конфигурации).

Предположим, что отсортированные наборы не закодированы в ziplist, я бы сказал, что загрузка процессора, скорее всего, связана с тысячами операций чтения в секунду, а не с сотнями обновлений в секунду. Обновление zset является операцией log (n). Это очень быстро, и у Redis нет задержки, связанной с блокировкой. Чтение элементов zset является операцией O (n) и может привести к созданию большого буфера и его возврату клиенту.

Чтобы быть уверенным, вы можете сгенерировать трафик только для чтения, проверить процессор, затем остановить его, сгенерировать трафик обновления, снова проверить процессор и сравнить.

Производительность операций чтения zset должна быть близка к производительности LRANGE, которую вы можете найти в тесте Redis . Кажется, что несколько тысяч TPS для zsets с тысячами элементов соответствуют типичной производительности Redis.

...