@Boris007

На ubuntu запускают только один nginx или для нескольких проектов есть смысла запустить 2 иболее?

Есть набор сайтов и не хотелось бы, чтобы из-за нагрузки на один, другие страдали
Как запустить несколько клиентов nginx?
  • Вопрос задан
  • 133 просмотра
Решения вопроса 5
@pfg21
ex-турист
не правильно мыслишь :)
1. нагруженный nginx заберет все аппаратные ресурсы системы (память, время процессора) и тормознет работу остальных nginx, даже если они будут "запущены как отдельные клиенты" :)
2. сам nginx запускает "внутри себя" кучу процессов, для того чтобы работа не упиралась в нехватку потоков исполнения. т.е. это теже отдельные клиенты, только "внутри" nginx.
как сам понимаешь твое предложение бессмысленно...
оптимизируй работу сайта или расширяй ресурсы системы, а лучше и то и это сразу :)
Ответ написан
Комментировать
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Вы совершенно ни туда полезли.
Что бы организовать использование ресурсов обычно используют следующие техники:
* Виртуальная машина
* Контейнер и на него накладывают лимиты
* Лимиты на приложение

С первыми 2 все понятно, сколько выделят столько и сьест.

Насчет 3 рассмотрим основные нагрузки
* Disk IO - реально упереться только если куча мелких файлов, причем не так КУЧА. Решается грамотной настройкой кэширования
* Network IO - тут решается стандартными средствами https://docs.nginx.com/nginx/admin-guide/security-...

* CPU - настраивается в зависимости от интерпретатора, сам NGINX практически не грузит процессор


To limit CPU usage of the process called nginx to 40%, enter:

cpulimit -e nginx -l 40
To limit CPU usage of the process to 40% by using its PID, enter:

cpulimit -p 3302 -l 40


То есть ваша задача создать для разных локэйшенов свой экземпляр php-fpm и прикрутить ему лимиты.
Ответ написан
Комментировать
@aleks-th
А смысл ?
Ну запустиш ты 5 экземпляров nginx, компьютер то один, интернет канал один - все равно при нагрузке на один сайт будут проблемы у всех.

Ну если хочется у каждого сайта свое окружение - doker.
А чтобы они совсем никак друг на друга не влияли - на каждый сайт своя виртуалка.
Ответ написан
Sanes
@Sanes
Если PHP/MySQL то запускайте каждый сайт от отдельного пользователя через php-fpm. Ограничения можно настроить в пулах php-fpm. Дополнительно можете ограничить пользователя через Cgroup. Для пользователей MySQL тоже можно ограничить некоторые параметры.
Ответ написан
Комментировать
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Во-первых, два разных процесса nginx не могут следить за одним портом (например за стандартным 80-ым или за 443-им). Во-вторых, nginx и так запускает отдельные процессы для распаралеливания обработки запросов (worker-ы называются, для определения их кол-ва есть настройки), и чутко следит за их работой. В-третих, если хочется, что бы при нагрузке на один сайт другие страдали - это как-то ненормально, что в компьютере кто-то должен страдать...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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