All streams
Search
Write a publication
Pull to refresh

Comments 9

Есть еще APCU, который по сути бывший APC, которому отрезали опкэш и оставили только хранение данных.

Точно, мой косяк. Проблема только в том, что APCu по умолчанию использует mmap (https://www.php.net/manual/ru/apcu.configuration.php) и для System V его нужно собирать отдельно.

В любом случае, микробенчмарки (включая уже и APCu) есть в отдельной репке: https://github.com/SerafimArts/SharedMemoryBench и как ни странно - APCu через mmap показывает наилучшую производительность (кроме записи строк, что странно).

Спасибо! Хорошая статья прямо косяком в ленте пошла - позавчера массивы, вчера общая память и FFI, сегодня файберы!

Ну, признаться, я как раз на вчерашнюю посмотрел про массивы, вспомнил времена когда Хабр ещё был тортом и свою опубликовал. Так сказать в поддержку. Вдохновило.

В тексте 2022. Статья ожидала три года? Или опечатка?

Хотя может у вас и так, а я просто не в курсе :)

Ой, не увидел на вычитке) Но вообще да, статья ждала своего часа 3 года, верно. Поэтому и PHP версии 8.1, который ныне не особо используется, но всё остальное должно быть более-менее актуальным.

Спасибо, интересная статья и идея. Но насколько я понимаю это всё только на уровне фантазий и практически не используется, так? К тому же если что-то постоянно писать в разделяемую память, то в конце концов может возникнуть вопрос о том, куда это делась вся память на application-сервере?

P.S. Кажется ваши оценки результатов PHPBench не очень верные (но это не точно). Вы обращаете внимание только на значение mode, но там ещё есть и разброс rstdev в процентах. Если пересчитать, то получиться:

+------------+---------+---------+-------------+
| subject    | mode    | rstdev  |  interval   |
+------------+---------+---------+-------------+
| benchShm   | 4.491μs | ±4.43%  | 4.29 - 4.69 |
| benchShmop | 2.357μs | ±1.56%  | 2.32 - 2.39 |
| benchSync  | 4.215μs | ±13.78% | 3.63 - 4.80 |
+------------+---------+---------+-------------+

И тогда разница между benchShm и benchSync совсем не однозначна. Чтобы разброс был примерно одинаковым между бенчмарками нужно использовать опцию --retry-threshold, я писал об этом в статье Тестирование производительности c PHPBench: что и как? Приятно видеть, что кто-то юзает этот инструмент )

Странно, конечно, что разработчики PHPBench не добавили колонку с интервали в свой отчёт...

Ну изначально подобное исследование для прод решения готовилось как раз (года ~3 назад), надо было хранить где-то данные для Circuit Breaker'а, т.к. мемкеш (существующий по историческим причинам) как раз падал под нагрузкой с этой замечательной ошибкой, что вначале статьи.

Изначально рассматривался "встроенный" sysvshm, но меня смутило его API, которое предполагает некоторую сериализацию, поэтому потратил время на сравнение с shmop, а там и другие уже подтянулись и превратилось в статью.

Давайте вот честно:

  • год 2025, расскажем про apache и mod_php - серьёзно?

  • "супер кеши для высоких нагрузок" - а был ли мальчик? Вы, например, в курсе, что inmemory того же pg может быть *в разы* быстрее memcached просто из за особенностей работы с подключениями?

Т.е. - о чём статья то?

Sign up to leave a comment.

Articles