Size: a a a

Ваdоо PHP Мееtuр

2020 August 25

AD

Antony [tony2001] Do... in Ваdоо PHP Мееtuр
да тут можно без проблем, я думаю
источник

AD

Antony [tony2001] Do... in Ваdоо PHP Мееtuр
Данил, правда, в отпуске щас, насколько я знаю
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
Вопрос первый ) Один наш общий коллега, ваш бывший, наш текущий (Саша Малащицкий) утверждает, что видел на badoo tech графики реальной нагрузки на ресурсы при включении расширения. Просто в докладе был только график проседания rps уже после балансера, а балансер жеж не пропорционально все-таки будет перераспределять, от настроек граничных значений и кол-ва серверов будет зависить...
таки есть данные по тому сколько и чего отжирает расширение или ему привиделось? )))
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
я что-то не нашел, только сам доклад последний и материалы к нему рядом, но они на 404 ведут ))
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
прям точные данные не нужны конечно, просто прикидочно увеличение нагрузки и что больше отъедает - процессор или память
источник

AD

Antony [tony2001] Do... in Ваdоо PHP Мееtuр
>графики реальной нагрузки на ресурсы при включении расширения

речь про конкретно модуль funcmap?
там дополнительная нагрузка должна быть на грани погрешности
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
да, конкретно про funcmap....
>там дополнительная нагрузка должна быть на грани погрешности
однако она приводит к перераспределению нагрузки (при 100% prob) настолько, что почти на четверть rps проседает
источник

AD

Antony [tony2001] Do... in Ваdоо PHP Мееtuр
принцип работы - мы встраиваемся в стек языка и наш код вызывается каждый раз, когда язык вызывает функцию
а наш код ищет функцию по имени в хэше. если нет - добавляет её туда.

периодически этот хэш сбрасывается на диск в виде текстового файла
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
если не ошибаемся при экстрополяции нагрузка на ресурсы должна быть больше чем на 60% (при 100% prob)
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
да, как работает я по исходникам разобрал )
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
насколько сумел )
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
вот этот вызов хука на каждый вызов функции/метода по идее и должен на сколько-то сьъедать доп. ресурсов (хотя там и копеечные работы со структурой, строками и hash, но вызовов должно быть много)
источник

AD

Antony [tony2001] Do... in Ваdоо PHP Мееtuр
я не знаю таких графиков, возможно Данил в курсе.
но мне кажется, что Саша что-то путает.

поскольку нет реальной необходимости логировать все вызовы, была добавлена "вероятность".

но насколько я помню, мы её добавили в первую очередь потому что без неё пришлось бы выгребать какие-то сумасшедшие гигабайты логов в секунду.
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
т.е. типа по памяти запаслись
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
ну ок, не было, так не было )))) второй вопрос из первого частично вытекает ))
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
Насколько я понял одним из требований было исключить часть кода из "мониторинга", например вендорский. Ну и результат анализа error_logs, который вы вроде как-то исключили или должны были исключить (не очень подробно в докладе было), потому что иначе при возможном проседании какого-то ресурса мог генерироваться бешенный трафик на один и тот же код, обрабатывающий ошибки... и соответственно лишние срабатывания расширения...

но посмотрев код я не увидел возможности исключать какие-то классы или пути к файлам, т.е. funcmap_execute_ex будет вызываться и для вендора и для "самых горячих" функций...
выходит вы исключаете их где-то уже на уровне базы или при анализе сброшенного расширением лога???
источник

AD

Antony [tony2001] Do... in Ваdоо PHP Мееtuр
вот это я не знаю уже, это вотчина Данила
действительно, у нас нет опций для исключения какого-то кода

хотя сделать это довольно просто - можно, например, фильтровать по именам функций или по именам файлов, в которых эти функции объявлены

думаю, что это проще фильтровать уже по результату - мы собрали какое-то вменяемое количество данных и в процессе обработки отбросили то, что нас неинтересует
источник

АЗ

Антон Золотилин... in Ваdоо PHP Мееtuр
Antony [tony2001] Dovgal
вот это я не знаю уже, это вотчина Данила
действительно, у нас нет опций для исключения какого-то кода

хотя сделать это довольно просто - можно, например, фильтровать по именам функций или по именам файлов, в которых эти функции объявлены

думаю, что это проще фильтровать уже по результату - мы собрали какое-то вменяемое количество данных и в процессе обработки отбросили то, что нас неинтересует
а разве в zend_execute_data есть ссылка на файл? да, я тоже подумал о каком-то blacklist
источник

AD

Antony [tony2001] Do... in Ваdоо PHP Мееtuр
@firtnope не подскажешь?
источник

AD

Antony [tony2001] Do... in Ваdоо PHP Мееtuр
Антон Золотилин
а разве в zend_execute_data есть ссылка на файл? да, я тоже подумал о каком-то blacklist
определённо да, как-то же debug_backtrace() достаёт информацию о файле и строке
источник