Вызов исполняемого файла как скрипта - PullRequest
0 голосов
/ 24 января 2019

Я работаю на сервере HTTP / 1.1 в C в качестве обучающего опыта и хочу сделать его работоспособным, оставаясь динамичным.Выполнение get или post для статических файлов или сценариев было достаточно простым, но я бы хотел добавить возможность вызывать скомпилированные двоичные файлы для большей скорости.

В настоящее время я связываю эти скомпилированные двоичные файлы непосредственно в двоичный файл сервера,но я хотел бы иметь возможность обновлять и горячей замены их.Я рассматривал возможность динамического связывания их как разделяемых библиотек, но я не хочу связывать их для обработки каждого запроса.Я также подумал о создании нового процесса для их запуска, однако это приводит к значительным накладным расходам при каждом запросе и затрудняет получение ответа клиенту (я использую сокеты OpenSSL).

Как можно эффективно связать эти скомпилированныедвоичные файлы при обновлении без выключения сервера?

Я тестирую на Debian Sid и работаю на экземпляре AWS ECS с CentOS 7. Оба имеют версии ядра Linux 4.19 +

1 Ответ

0 голосов
/ 24 января 2019

Я бы хотел иметь возможность обновлять их и выполнять их горячую замену. Я рассмотрел динамическое связывание их как разделяемые библиотеки

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

То есть не , как работают разделяемые библиотеки. Если вы попробуете это, ваш серверный процесс либо завершится сбоем, либо продолжит использовать старую библиотеку (в зависимости от того, как именно вы обновите библиотеку на диске).

Это может быть сделано для работы в ограниченных условиях , если вы используете dlopen для загрузки библиотеки, и если вы можете успокоить свой сервер, и иметь его dlclose для выгрузки ранее загруженной версии, а затем dlopen обновленная версия. Но точные детали создания этой работы довольно сложны.

...