Хостер гонит за высокую нагрузку сайта на DLE? Тогда читайте эту тему :)

Andreyka
На сайте с 19.02.2005
Offline
822
#61

Dlag и Pilat. Я в шоке от вас обоих. Какие треды в префорковских процессах? Учите документацию:

http://httpd.apache.org/docs/2.0/misc/perf-tuning.html, выдержка:

The prefork MPM uses multiple child processes with one thread each. Each process handles one connection at a time. On many systems, prefork is comparable in speed to worker, but it uses more memory.

Перевод для тех кто мнит себя профессионалами и позволяет себе хамски тыкать пальцами в людей.

Префорк запускает дочерние процессы по одному треду в каждом. Каждый процесс обрабатывает один запрос одновременно. На множества системах префорк одинаков по скоросте с воркером но использует больше памяти.

Надеюсь ума хватит помолчать и не спорить с документацией от самих разработчиков? Или Dlag и Pilat знают больше разработчиков апача?

Не стоит плодить сущности без необходимости
N
На сайте с 06.05.2007
Offline
419
#62

Andreyka , В вашем переводе нигде не написано, что делается отдельный форк на каждый запрос.

Назад отлистайте. Там ваш коллега (шутка) написал :

Andreyka:
nginx перед apache мало что даст, ибо сама суть apache - делать отдельный процесс на каждый вызов и php-fpm - обрабатывать все вызовы статичными процессами в памяти.
Нагрузку и тормоза дают именно форки апача, если же туда поставить apache как worker, то тормозов будет значительно меньше, особенно если процессы worker сделать по числу камней ;)

Вот именно с этими словами никто не согласен.

Обратите внимание на название : классическая модель работы называется prefork - ПРЕДВАРИТЕЛЬНЫЙ fork.

Ну и, принимая во внимание схему работы php, значительность выбора sapi сильно преувеличена.

Различия в потреблении памяти между процессами и тредами на linux и bsd, где техника fork-ов шлифовалась десятилетиями, не такие уж большие, в сравнении с потреблением php.

Кнопка вызова админа ()
Andreyka
На сайте с 19.02.2005
Offline
822
#63

netwind, это очень легко проверить - ставим лимит в 100 процессов по 10 backlog в каждом. Открываем 1k медленных запросов. Наблюдаем 100 процессов. nginx перед апачем не зря ставят - он прикрывает это.

Разница между форком и тредом конечно не большая, но если посмотреть на графики то видно как растет LA за счет переключения контекста между процессами. Так что все относительно.

N
На сайте с 06.05.2007
Offline
419
#64

Andreyka, и не нада тут nginx приплетать.

Ну хорошо, давайте по-вашему, повторите тест : nginx+apache c раскрученным backlog против nginx+fpm, но не давайте apache плодиться - поставьте то же самое число обработчиков в maxclients сколько обработчиков у fpm. maxrequestperchild - ну, например, 10000.

Неужели будут разительные отличия?

DLag
На сайте с 15.08.2007
Offline
201
#65
Andreyka:
Dlag и Pilat. Я в шоке от вас обоих. Какие треды в префорковских процессах? Учите документацию:

Мы то как раз выучили, чего и вам желаем.

Не стоит читать только что вам хочется и додумывать что вам кажется. ;)

Руководитель датацентра UkrNames (http://ukrnames.com/)
Andreyka
На сайте с 19.02.2005
Offline
822
#66
netwind:
Andreyka, и не нада тут nginx приплетать.
Ну хорошо, давайте по-вашему, повторите тест : nginx+apache c раскрученным backlog против nginx+fpm, но не давайте apache плодиться - поставьте то же самое число обработчиков в maxclients сколько обработчиков у fpm. maxrequestperchild - ну, например, 10000.
Неужели будут разительные отличия?

Я ставил backlog в 63 и для nginx и для apache. Во время тестов apache успевал отфоркать около 500 запросов - остальное шло в очередь. Чтоб тест был корректным надо в apache выставить backlog в 1.

Кстати у fpm число обработчиков 2x4 процесса по 512 коннектов в каждом - 4096. Так что для корректности я тоже самое значение ставлю и для апача.

Тестирую сейчас только ab главную без эмуляции посещений, график для мониторинга - http://213.239.211.15/munin/localdomain/localhost.localdomain.html

P
На сайте с 08.03.2007
Offline
250
#67

Ну во-первых. Для корректного теста апач должен быть за nginx - надеюсь это очевидно. Второе. maxclients должно быть реальным, не 1000 а 10 например. Вообще это хорошо определяется числом ядер и оперативной памятью. Ну и судя по графикам опять мы видим тест в бредовом исполнении.14 гигабайт памяти... 700 процессов... тестируется винчестер что ли?

Pilat добавил 25.12.2009 в 23:01

Andreyka:
Dlag и Pilat. Я в шоке от вас обоих. Какие треды в префорковских процессах? Учите документацию:
http://httpd.apache.org/docs/2.0/misc/perf-tuning.html, выдержка:

Не надо мне приписывать чужие слова про треды. Демагогические приёмы оставьте для других форумов.

Andreyka
На сайте с 19.02.2005
Offline
822
#68

Тест запущен пока что в логах nginx:

2009/12/25 20:57:40 [alert] 30674#0: *78063 10240 worker_connections is not enough while connecting to upstream, client: 213.239.211.15, server: debian-50-lenny-64-minimal, request: "GET / HTTP/1.0", upstream: "http://127.0.0.1:8080/", host: "213.239.211.15

ab говорит Non-2xx responses: 18229

Пусть помучает его ночью, чтоб наглядно было

DLag
На сайте с 15.08.2007
Offline
201
#69
Andreyka:
Тест запущен пока что в логах nginx:
2009/12/25 20:57:40 [alert] 30674#0: *78063 10240 worker_connections is not enough while connecting to upstream, client: 213.239.211.15, server: debian-50-lenny-64-minimal, request: "GET / HTTP/1.0", upstream: "http://127.0.0.1:8080/", host: "213.239.211.15

Вот чтобы не было таких ляпов и нужно учится читать:

http://marc.info/?l=nginx&m=121431775121264&w=2

Andreyka
На сайте с 19.02.2005
Offline
822
#70

Pilat, ок остановил и запускаю тот-же вариант с 10 maxclients

Даже backlog не режу иначе совсем плохо. Вот что говорит ab:

Non-2xx responses: 9660

Total transferred: 23556545 bytes

HTML transferred: 21227165 bytes

Requests per second: 320.17 [#/sec] (mean)

Time per request: 62466.302 [ms] (mean)

Time per request: 3.123 [ms] (mean, across all concurrent requests)

Transfer rate: 368.27 [Kbytes/sec] received

В логах nginx:

worker_connections is not enough while connecting to upstream

Andreyka добавил 25.12.2009 в 23:17

Я ничего подкручивать не собираюсь, вот текущий конфиг nginx

user www-data;

worker_processes 2;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {

worker_connections 10240;

}

Забит беклог? Ну это проблема тормознутого apache c mod_php. С php-fpm в fastcgi это все прекрасно работало.

Andreyka добавил 25.12.2009 в 23:19

Pilat с таким конфигом оно даже munin не открывает,

504 Gateway Time-out

Будем еще проверять или уже видно и так что 10 процессов ну никак нехватает на нормальную работу :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий