Boris A Dolgov

Boris A Dolgov
Рейтинг
215
Регистрация
04.07.2007
madoff:
yum -y install gcc

это неправильная команда :)

А разве точка после собачки должна быть?

>или это для 32/64 бит?

Да, по умолчанию выделяет 1 страницу. Размер выводится командой getconf PAGESIZE. Как правило, 4кб для 32бит и 8кб для 64бит.

Ilya74:
ISPManager поддерживает CloudLinux без всяких модулей.

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

Используете свою панельку или что-то готовое?

Raistlin:

Вот если сравнивать Perl-FastCGI vs Nginx + Apache vs пёрл в любом проявлении - тогда апач нервно курит в сторонке. А применительно к раздаче статики (которая в общем-то раздаётся очень эффективно и апачем) - здесь шансы почти уравниваются. Добавляем php - вуаля. Мы в равных условиях.

Тут как раз не факт -- т.к. apache+mod_perl почти не будет иметь накладных расходов на обмен данными между perl и вебсервером. Но это уже сложный вопрос, который нужно бенчмаркить.

iopiop:
Boris, я в пхп не очень разбираюсь, но вроде бы он не асинхронный? если не асинхронный, то все преимущество nginx банально пожрется выполнением пхп-кода, который будет опять же требовать нитку на себя. или я ошибаюсь?

Это правда. Но если скрипт относительно лёгкий (типичный пример из жизни -- анонсер торрент-трекера), то модульность apache и переключение нитей по 10 раз для чтения/записи данных туда-сюда могут съесть, думаю, около 25% используемых ресурсов против 5% от nginx.

т.е. нить = поток? Угу. Мало отличаются только переключением контекста. На переключение контекста тратится много ресурсов? =).

Если говорить языком операционной системы, thread = нить = поток, process = процесс. C точки зрения планировщика и переключения контестов (по крайней мере с очень маленькой погрешностью в linux и freebsd (так как не изменяется paging table)) thread = process, что делает переключение thread очень похожим по тяжести с переключением process. Но создание у thread намного проще чем у process, так как не нужно копировать кучу данных (не нужно говорить про cow, я говорю о структурах в ядре).

С точки зрения вебсервера можно говорить, что thread -- это нечто, имеющее свой стек и возможность блокироваться на системном вызове. Тогда process в некотором смысле тоже является thread. Тогда mpm_prefork и mpm с threads не сильно отличаются, так как требуют thread на соединение.

event-модель же требует наличия всего лишь одного thread на все соединения.

Raistlin, что за мания величия в топике?

Предлагаю конкурс. Вы делаете связку apache_worker+php-fcgi (или что Вам угодно, но без apache_worker+mod_php, т.к. далеко не весь php тредобезопасен), я делаю связку nginx+php-fpm. Две одинаковые виртуалки на KVM могу выделить. Мы натравливаем на них siege и смотрим, у кого лучше показатели. Правда заняться смогу только через пару дней.

Boris A Dolgov добавил 11.10.2011 в 22:43

Raistlin:

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

Ну и найдите 10 отличий...

Вы не отличаете понятие "1 process with n threads per n connections "1 process with 1 thread per 100k connections"? Тогда Вам в man 7 pthreads как минимум, чтобы понять, что нить и процесс не так уж и отличаются, потом в man 2 select или в man 2 poll для понимания того, что такое событийная система, и потом в man 7 epoll или man 2 kqueue (в зависимости от платформы) для полного понимания её глубин.

Ещё можете заглянуть в man 2 clone, если Ваша ОС его поддерживает. На ней же можете заглянуть в /proc/что-нибудь/task.

Всего: 2623