redis / hiredis-node

Node wrapper for hiredis
BSD 3-Clause "New" or "Revised" License
305 stars 84 forks source link

Performance is magnitudes slower when issuing a request that has a higher response payload #74

Closed jrots closed 9 years ago

jrots commented 9 years ago

Hi, When getting data with a higher payload from redis the peformance decreases significantly:

tests.push({descr: "hmget 1", command: ["hmget", "hashsettest" ,"9936", "9527"]}); tests.push({descr: "hmget 2", command: ["hmget", "hashsettest" ,"9936", "9527", "7977", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357", "8357", "9936", "9527", "7977", "8357" ]});

hmget 1: 34482.76 ops/sec hmget 2: 252.27 ops/sec when testing the second command with redis-cli it goes very fast and doesn't appear in the slowlog at all.

=> maybe has to do with, https://github.com/redis/hiredis#reader-max-buffer not being set?

badboy commented 9 years ago

I don't think maxbuffer has anything to do with it. It's even slower if you remove all the parser stuff.

badboy commented 9 years ago

This is completely explainable by the way Redis does the response. It has to internally process the command, fetch all data, then send it back at once.