Я использую redis (2.6.8) с php-fpm и драйвером phpredis и имею некоторые проблемы с проблемами латентности redis. При определенной нагрузке первый запрос redis из нашего приложения занимает около 1-1,5 с, а redis-cli --latency
показывает ту же задержку.
Я уже проверил руководство по задержке.
- Мы используем redis на том же хосте с Unix-сокетами
- slowlog не имеет записей больше 5ms
- мы не используем AOF
- redis занимает около 3,5 ГБ памяти 16 ГБ (я полагаю, это не так уж много)
- наша система не заменяет
- нет другого процесса, делающего дисковый ввод-вывод
Я использую постоянные соединения, и количество подключенного клиента варьируется от 5 до 25 (иногда удары до 60-80).
Похоже, что проблемы начинаются, когда есть 20 или более одновременно подключенных клиентов.
Можете ли вы помочь мне выяснить, в чем проблема?
Update
Я исследовал проблему, и, похоже, у redis не хватило времени на процессор по какой-то причине для правильной работы.
Я тщательно проверил связь между php-fpm и redis с помощью сетевого сниффера. Redis получил запрос по tcp, но отправил ответ только спустя полтора секунды. Очевидно, это означало, что проблема внутри redis, что она не может обрабатывать так много запросов в данных условиях (возможно, голод процессора, поскольку процессор загружен всего на 50% для всей системы).
Проблема была решена путем перемещения redis на другой сервер, который почти не работал. Я полагаю, что мы должны были играть с планировщиком linux, чтобы он работал на том же сервере, но еще не сделал этого.