что такое пул приложений?

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

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

Можно посмотреть на то, как другие (установленные) пакеты обработали это при помощи

grep -l adduser /var/lib/dpkg/info/*postinst /var/lib/dpkg/info/*preinst

и чтение перечисленных файлов (большинство проводит больше чем одну строку опций).

Достаточно странно, все кроме одного из моих установленных пакетов, которые создают пользовательское использование adduser добавить пользователей, но adduser пакет не необходимый пакет, таким образом, Ваш пакет должен будет быть создан для зависимости от него. useradd программа используется libuuid1 пакетом и является частью passwd пакет, который является необходимым пакетом.

0
24.07.2013, 08:02
2 ответа

"Поддержанные" условия и их "дескрипторы хранятся в этом пуле", в отношении чего-то другого, чем кэширование.

Кэширование

Кэширование является механизмом, где данные, которые это дорого для получения, сохранены в быстром месте доступа для повторного использования позже. Вы будете видеть, что это использовало во множестве мест, таких как:

  • поиск чего-то в базе данных
  • разрешение IP-адреса сервера
  • доступ к файлу от жесткого диска

Объединение

"Поддержанный", к которому они обращаются в Пассажирском documentatoin Phusion, относится к тому, чтобы вынуждать приложение не лечь спать неограниченно долго так, чтобы мы могли экономить на времени, которое требуется для запуска приложения.

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

Так вместо этого то, что сделано, является светом frontend, создается, который примет соединения и затем продолжит несколько экземпляров приложения и работающий в любом случае, и затем frontend сделает следующее:

  1. присвойте входящее соединение с одним из уже рабочих экземпляров приложения
  2. возьмите результаты этого рабочего экземпляра
  3. пасуйте назад результаты клиенту
  4. отложите рабочий экземпляр приложения в "готовый обработать" состояние

Пример

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

Если Вы смотрите на Полукровку Ruby сервер HTTP, он был разработан так, чтобы он мог быть выполнен в пуле почти таким же способом.

Одна популярная конфигурация должна была выполнить Apache Сервер HTTP 2.2 как подсистема балансировки нагрузки с помощью mod_proxy_balancer в сочетании с несколькими экземплярами Полукровки. Каждый экземпляр Полукровки работал бы на отдельном порте TCP, настроенном через mongrel_cluster утилиту управления. До недавнего времени Твиттер был известным экземпляром этой конфигурации.

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

2
28.01.2020, 02:17
  • 1
    Это - хороший ответ. У меня просто есть вопрос. Вы сказали, что "легкий фронтенд продолжает несколько экземпляров приложения и работающий в любом случае". Вы, оказывается, знаете, сколько экземпляров это продолжает бежать? Это зависит от того, сколько RAM компьютер имеет? –  JohnMerlino 24.07.2013, 19:28
  • 2
    @JohnMerlino - это обычно настраивается. Это обычно зависит от ряда факторов, при этом RAM является одним из них. Центральные процессоры и ресурсы базы данных вместе с другими. –  slm♦ 24.07.2013, 19:30
  • 3
    @JohnMerlino - снова Полукровка была заменена Тонким, но можно обратиться к Прагматической книге Разработчиков, которая обсуждает рабочую Полукровку в кластере: media.pragprog.com/titles/fr_deploy/chap6.pdf –  slm♦ 24.07.2013, 19:33

Нет двоичной ситуации включения - выключения, продолжающейся здесь. Это - континуум.

Одно экстремальное значение континуума является старой моделью CGI веб-программирования: веб-сервер запускает приложение заново для обслуживания каждого запроса, который входит. Приложение умирает, когда оно заканчивает обрабатывать запрос. Поскольку приложение должно начать заново каждый раз, когда оно должно восстановить состояние приложения по каждому запросу. Это дорого и во время и в пространство данных.

И так, со временем, много опций были созданы для сокращения расхода:

  • FastCGI использует модель CGI, но он поддерживает программу CGI после запуска его в первый раз и просто продолжает подавать новые запросы к нему. Это не только избегает расхода перезапуска программы CGI, это позволяет приложению сохранить состояние в RAM.

  • mod_{perl,php,ruby,...} приносит интерпретатор реального приложения в экземпляр веб-сервера, и эти системы имеют тенденцию делать те же виды вещей, которые делает FastCGI: после загрузки и компиляции каждого сценария к некоторому байт-коду, это просто подает новые запросы к нему, не восстанавливая всю ту работу.

  • Эта система, о которой Вы говорите, является всего одним уровнем выше, чем mod_foo схема, где это сохраняет логическую модель целого приложения в RAM, так, чтобы даже меньше вещей было воссоздано по каждому запросу. Точно, как это отличается от основного поведения, Вы добираетесь с mod_foo Я не мог сказать. Точка, тем не менее, - то, что это не различие по качеству, только суммы.

  • Следующий шаг по линии, который может помочь Вам понять, где этот Пассажир Phusion пытается пойти, должен поддерживать все в рабочем состоянии в единственном продолжительном экземпляре приложения. Это то, как веб-серверы на основе работы Erlang, такие как Азот. Посещение, что вторая ссылка для сравнения с путем основанная на Apache работа приложений.

    Я верю многой работе серверов Java-приложения тот же путь.

Нижняя строка, все это - игра оптимизации, торговая RAM и сложность во время выполнения для скорости.

3
28.01.2020, 02:17

Теги

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