## QPS связанные
QPS — количество запросов, обрабатываемых в секунду. В определенной степени это может отражать ситуацию с давлением службы в настоящее время. Далее можно проанализировать, как примерно оценить количество запросов в секунду службы через обращение.
Справочная информация. Событие, которое было запущено вчера, будет отправлять купоны в соответствии со временем исполнения и вычислять количество запросов в секунду для этого поведения отправки купонов.
Анализ: будет журнал для каждого поведения доставки купона, как показано ниже.
2017-10-27 15:10:16 songtime=355 userid=56135899 giftid=20331 addednumbers=1
Таким образом, количество запросов песенного времени в секунду можно рассчитать как целевое значение.
Таким образом, вы можете использовать следующую команду:
developer@hosttx:~$ sudo devpssh -i -h /opt/iplist.all.svn 'grep songtime /home/log/baofang-yanzhishengdian.log' | grep 10-27 | cut -d " " -f 2 | uniq -c
Поскольку количество посетителей относительно невелико, количество запросов в секунду обычно составляет 2–3.
Объяснение: Вам может быть интересно, как это рассчитывается? Поясним, наша цель — проверить количество логов songtime за определенную секунду.
- Определить, содержит ли журнал
songtime, вы можете использовать команду grep. - Чтобы найти записи журнала между несколькими компьютерами GET онлайн, вы можете использовать
sudo devpssh -i -h /opt/iplist.all.svn 'grep songtime /home/log/baofang-yanzhishengdian.log' - Вы можете использовать команду cut для разделения журнала второго уровня,
-d "delimiter"используется для указания символов-разделителей,-fNКакое поле используется для отображения, по умолчанию считается от 1. - Команда uniq короткая и лаконичная,
-cПараметр используется для статистики, но только один и тот же лог в двух соседних строках будет накапливаться по порядковому номеру перед первой.
Смоделируйте процесс синхронизации Redis
Сначала проверьте, запущена ли в данный момент служба Redis на компьютере:
Вроде нет, тогда можно запустить несколько redis-серверов, т.к. он на одной машине, поэтому хорошо указать разные порты.
Аналогичным образом используйтеredis-server --port 7777Запустите другую службу Redis.
Наконец, давайте посмотрим, запущена ли служба.
Что ж, теперь есть два совершенно новых сервиса Redis. Прежде чем приступить к подготовке конкретных операций репликации и синхронизации master-slave, укажите отношение master-slave.
- Порт 6666 как мастер
- Порт 7777 как подчиненный
Затем отслеживайте ведомое устройство с помощью команды монитора redis-cli, чтобы увидеть, как ведомое устройство реагирует на изменение некоторых ключей в ведущем устройстве.
Пусть 7777 будет рабом 6666 ниже.
В то же время под терминалом 7777сервера появится некоторый вывод как слейв 6666.
В то же время 6666, являющийся ведущим, также будет отвечать на запрос синхронизации, отправленный 7777.
Чтобы имитировать синхронизацию, вам нужно только установить несколько ключей в мастере в это время и посмотреть на вывод в окне монитора ведомого.
Видно, что ведомое устройство будет синхронизировать данные на ведущем в режиме реального времени для достижения согласованности данных. Таким образом выполняется простая синхронизация master-slave.
Но следует отметить, что redis в качестве слейва писать нельзя. Например, мы случайным образом устанавливаем несколько ключей на подчиненном устройстве, чтобы увидеть, если это не так, вы увидите следующие результаты.
Это потому, что Redisslave-read-onlyПо умолчаниюyesТо есть он находится в состоянии только для чтения, поэтому эту переменную нужно модифицировать после завершения синхронизации.config set slave-read-only noможет.
Операции на слейве не повлияют на мастер, что необходимо.
После завершения окончательной синхронизации, если вы не хотите, чтобы 7777 был подчиненным 6666, вы можете использоватьslaveof no oneреализовать.
Онлайн-обновление Redis
Redis работает онлайн, как правило, для стабильности, а версия не очень высокая. Но он не может быть слишком низким, поэтому иногда необходимо обновить Redis, что неизбежно. Однако онлайн-редис обычно содержит большой объем данных, который может быть на N больше, чем G, и не может напрямую выполнять синхронизацию ведущий-ведомый, поэтому запросы синхронизации от подчиненных будут вытеснять запросы внешних пользователей. Заставляет службу выдавать сигнал тревоги.
обычно онлайнRedisЧтобы сделать обновление, есть такой способ мышления:найти замену, а затем выполните следующие действия.
- сделать замену
slaveстать онлайн-машиной, после завершения синхронизацииslave-read-onlyУстановить какno. - Привлекайте интернет-трафик к
slaveвверх, в это времяslaveСтаньте онлайн-машиной, просмотрите онлайн-машинуQPS, до 0. - В это время удалите онлайн
旧Redis, затем установите новую версиюRedis. - новая версия
Redisв видеslaveсинхронизировать онлайнRedisданные, после завершения синхронизации то же самое будетslave-read-onlyУстановить какno, а затем верните онлайн-трафик, проверьте предыдущий替身RedisизQPSМожет быть 0.
Во время этого процесса см.redisпросилQPSЛучший путь черезmonitorреализовать.
redis-cli -h 127.0.0.1 -p 6379 monitor | cut -d "." -f1 | uniq -c
пока на линии апгрейдаRedisКогда количество внешних подключений, особенно количество внешних подключений, иногда это обычный бизнес-запрос, иногда этоcrontabСкрипты работают по статистическим данным, в любом случае ситуация разнообразная, можно пройтиss -anp | grep redis:portКоманда для проверки состояния соединения.
Следует отметить, что вам необходимо использовать привилегии суперпользователя, чтобы увидеть конкретную информацию о PID.
Тогда вы можете пройтиps auxКоманда определяет, какая команда запущена. Затем назначьте правильное лекарство и завершите всю операцию.
Суммировать
Напомним, что эта статья в основном посвящена онлайн-redisОпыт обновления, а также повествование о некотором здравом смысле. Чтобы двигаться шаг за шагом,QPSиRedisКонкретные этапы работы синхронизации ведущий-ведомый и, наконец, приводят к этапам и процессу обновления.
На самом деле шаги не важны, важна общая идея, а также умение пользоваться инструментами.