Understanding network performance impact of 32 bytes per request

My company is using redis on a fairly performance critical path. An nginx server calls out to it once per request. The call itself has several arguments, which are currently like 80 bytes. This call goes over the network to redis, which passes the args to a lua script it has loaded and then makes a decision and returns it.

My boss thinks that adding an additional 32 byte string to those arguments is unacceptably bad compared to hardcoding the string in the lua script (which sucks for other reasons), because "if we get 50k requests in a second, that's 1.6GB of additional network traffic in that second." My intuition is that this is not a concern. The traffic is from an EC2 instance to an ElastiCache instance, and I think that because of how packets work, and how small the request already is, those 32 extra bytes are very unlikely to incur significant processing cost in the network stack at either end. Am i totally wrong?

1
задан 25 October 2016 в 00:02
1 ответ

Производительность
На производительность всего приложения это никак не повлияло. Вы можете потратить много времени на микротест. Однако, поскольку вы увеличиваете запрос в одном месте, это может иметь волновой эффект во всем приложении. Пока вы не увеличиваете количество IP-пакетов, снижение производительности может быть минимальным, если задержка в сети высока. Итог, ориентир. Оставьте в коде возможность выбора, какую реализацию вы будете использовать во время выполнения (например, вариант переключения).

Качество кода
Обычно более важно иметь хорошее качество кода и иметь место для расширения ваше приложение, чем ограничивать себя. Позже вы можете разработать фильтр, который минимизирует, сжимает, кэширует и т. Д. Ваш трафик для Redis, что поможет вам получить больше скорости, чем небольшая оптимизация.

4
ответ дан 3 December 2019 в 17:36

Теги

Похожие вопросы