Size: a a a

2020 December 20

SP

Sergey Protko in symfony
s4b0t
Нет понимания какие цифры нормальные. Если время соизмеримо это норма? Выборка по id  скажем. Second Level Cache
Зависит от многих факторов. Например вероятность найти запись в кэше и где кэш. Если у тебя редис какой то сходить за данными по сети обычно так же долго как и в базу. Потому обычно цепочки делают (array - apcu - redis)

Если ещё и для ключа вероятность кэш хита меньше скажем 90% то возможно кэш будет замедлять (сначала в рэдис по сети, потом в базу).

Конкретно с secondary level cache хз, опять же Профит может быть только там где кэш хит оч вероятен и за горячими данными не надо по сети гулять
источник

SP

Sergey Protko in symfony
Кэшировать результаты простых и дешёвых выборок имеет смысл только если нет под это дело Рид реплик базы и хочется чуть убавить нагрузку. А так в таких случаях лучше весь респонс кэшить или большую его часть
источник

AK

Aleksei Kuznetsov in symfony
Sergey Protko
Зависит от многих факторов. Например вероятность найти запись в кэше и где кэш. Если у тебя редис какой то сходить за данными по сети обычно так же долго как и в базу. Потому обычно цепочки делают (array - apcu - redis)

Если ещё и для ключа вероятность кэш хита меньше скажем 90% то возможно кэш будет замедлять (сначала в рэдис по сети, потом в базу).

Конкретно с secondary level cache хз, опять же Профит может быть только там где кэш хит оч вероятен и за горячими данными не надо по сети гулять
Аналогичный вопрос, что у Сергея выше.

Есть кэширование юзеров (полей 10, без связей), редис.
Вроде всё настроено, как в документации и примерах. Сервис кэша, провайдер, в доктрине выбран нужный в secondary level cache.

Обычный массовый запрос через userRepo->findBy['id' => $ids], поиск всего двух пользователей.

Поставил точки перед-после запроса, в профайлере показывает время выполнения - 5мс (и ноль запросов в бд).
Отключаю кэш - 2-3мс (один запрос в бд) .

Чзх?
Сам запрос в редис обрабатывается за ~0.02мс, всё остальное - компонент кэша.
источник

SZ

Sergey Zolotov in symfony
Aleksei Kuznetsov
Аналогичный вопрос, что у Сергея выше.

Есть кэширование юзеров (полей 10, без связей), редис.
Вроде всё настроено, как в документации и примерах. Сервис кэша, провайдер, в доктрине выбран нужный в secondary level cache.

Обычный массовый запрос через userRepo->findBy['id' => $ids], поиск всего двух пользователей.

Поставил точки перед-после запроса, в профайлере показывает время выполнения - 5мс (и ноль запросов в бд).
Отключаю кэш - 2-3мс (один запрос в бд) .

Чзх?
Сам запрос в редис обрабатывается за ~0.02мс, всё остальное - компонент кэша.
сериализация слабее чем сишный клиент мускуля
источник

AK

Aleksei Kuznetsov in symfony
Относительно недавно на симфони, поэтому вопрос, возможно глупый (как и выше мой вопрос), но..

Такие числа нормальные для сериализации?
По ~2.5мс на сериализацию "json из 10 полей" -> "entity"?
источник

AK

Aleksei Kuznetsov in symfony
Или можно куда-то капнуть, чтобы уменьшить время выполнения?

А то получается, что самый простой запрос на сервер с авторизацией выходит ~50-100мс
источник

SP

Sergey Protko in symfony
Aleksei Kuznetsov
Аналогичный вопрос, что у Сергея выше.

Есть кэширование юзеров (полей 10, без связей), редис.
Вроде всё настроено, как в документации и примерах. Сервис кэша, провайдер, в доктрине выбран нужный в secondary level cache.

Обычный массовый запрос через userRepo->findBy['id' => $ids], поиск всего двух пользователей.

Поставил точки перед-после запроса, в профайлере показывает время выполнения - 5мс (и ноль запросов в бд).
Отключаю кэш - 2-3мс (один запрос в бд) .

Чзх?
Сам запрос в редис обрабатывается за ~0.02мс, всё остальное - компонент кэша.
1 запрос в базу или 2 запроса в рэдис
источник

SP

Sergey Protko in symfony
Рэдис быстрый, но база при выборке по pk при условии что кэши все в базе настроены не медленнее, дальше вопрос как с сетью работаешь
источник

SP

Sergey Protko in symfony
Aleksei Kuznetsov
Или можно куда-то капнуть, чтобы уменьшить время выполнения?

А то получается, что самый простой запрос на сервер с авторизацией выходит ~50-100мс
Откуда 50-100 мс если запрос сам всего 5
источник

SP

Sergey Protko in symfony
Где-то что то лишнее выполняется, профилирование и трейсинг может помочь понять на что уходит время.

Например если рэдис по tls то может доп время уходить на хэндшейки при первом подключении
источник

AK

Aleksei Kuznetsov in symfony
Sergey Protko
Рэдис быстрый, но база при выборке по pk при условии что кэши все в базе настроены не медленнее, дальше вопрос как с сетью работаешь
Окей, но такие цифры для сериализаци  и доктрины (2-4мс на один запрос) - это нормально? Или можно ускорить?
источник

SP

Sergey Protko in symfony
Да это выглядит правдоподобным
источник

АЯ

Андрей Ява in symfony
2-4мс это очень даже норм.
источник

SP

Sergey Protko in symfony
Ну это много в общем то.
источник

AK

Aleksei Kuznetsov in symfony
Sergey Protko
Откуда 50-100 мс если запрос сам всего 5
Инициализация доктрины, авторизация - уже 15-20мс.
Мелкие ивенты до контролера - ещё какое-то время. Сам контроллер прилично отжирает (бывает и по ~30-50мс на пустой экшен).
Ивенты после
источник

SP

Sergey Protko in symfony
Но не настолько что быможно было проблемы подозревать
источник

SP

Sergey Protko in symfony
Ну из очевидного

- убедись что кэш всяких метаданных в общей памяти лежит (можно даже Чейн array - apcu сделать)
- отключить все лишнее
- проверить настройки opcache и apcu. Дефолта для симфони не годятся
- проверь время подключения - tls доп расходы накладывает - люди часто рядом с приложением проксю какую ставят дабы оно реюзадюло tcp соединение между запросами и за счёт этого пару миллисекунд экономят. В случае базы есть тоже прокси которые будут пул коннекшенов держать.
источник

SP

Sergey Protko in symfony
Короч главное мерять на что время уходит
источник

s

s4b0t in symfony
Sergey Protko
Ну из очевидного

- убедись что кэш всяких метаданных в общей памяти лежит (можно даже Чейн array - apcu сделать)
- отключить все лишнее
- проверить настройки opcache и apcu. Дефолта для симфони не годятся
- проверь время подключения - tls доп расходы накладывает - люди часто рядом с приложением проксю какую ставят дабы оно реюзадюло tcp соединение между запросами и за счёт этого пару миллисекунд экономят. В случае базы есть тоже прокси которые будут пул коннекшенов держать.
apcu лучше чем файл filesystem в ramdrive?
источник

s

s4b0t in symfony
Sergey Protko
Короч главное мерять на что время уходит
тяжко )
источник