Перейти к содержимому


Фотография
- - - - -

Nginx + php5-fpm


Сообщений в теме: 10

#1 CB9TOIIIA

CB9TOIIIA

Отправлено 17 January 2015 - 20:02

Всем привет! Вопрос возник, как Joomla 3.3 и JBZOO ведут себя на Nginx + php5-fpm ? Есть ли костыли и подводные камни? Вообще какой вариант самый оптимальный ОС / LAMP и прочее))

 

Сборка: NGINX+Apache не может справлятся и Apache постоянно зависает.

 

dsPVMQC.png
 


  • 0

#2 CB9TOIIIA

CB9TOIIIA

Отправлено 19 January 2015 - 06:23

Ап :)
  • 0

#3 SmetDenis

SmetDenis

Отправлено 19 January 2015 - 09:38

и Apache постоянно зависает.

А причина выявилась?
 

Всем привет! Вопрос возник, как Joomla 3.3 и JBZOO ведут себя на Nginx + php5-fpm ? Есть ли костыли и подводные камни? Вообще какой вариант самый оптимальный ОС / LAMP и прочее))

Самый оптимальный вариант - использовать то, с чем больше опыта (в настройке).
Использовать софт только потому что все говорят что он быстрый - порой вредно для здоровья.

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

Глубоководные камни ...на вскидку
- Весь htaccess нужно перенести в настройки nginx.
- Вообще забыть, что существует htaccess.
- модуль apache дает некоторые системные функции для PHP. В основном для возни в http заголовками. Так что что-то может упасть.
- Ускорения самого PHP особо не следует ждать. Чуть чуть ускориться старт скриптов. А вот освобожденной оперативной памяти должно добавиться.

Весь сайт (с синхронизацией через cron) или как минимум папку кеша лучше перенести в RAM диск.
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#4 CB9TOIIIA

CB9TOIIIA

Отправлено 19 January 2015 - 09:40

Причина... как сапорт сказал 1500+ запросов идет от NGINX а в apache очередь из 100

 

При очереди 100 - CPU под 90% и выше, ставить больше - CPU под 100% и сервер ложится, меньше 100 ставить все нереально тормозит и смысла тоже нет особо.


  • 0

#5 SmetDenis

SmetDenis

Отправлено 19 January 2015 - 09:43

У apache и nginx отключены таймауты ожидания?
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#6 CB9TOIIIA

CB9TOIIIA

Отправлено 19 January 2015 - 09:55

где искать?)

/var/www/php-bin/admin
max_execution_time= 900
memory_limit= 5120M
upload_max_filesize= 600M
post_max_size= 600M
max_input_vars = 5000
max_input_nesting_level = 1024
max_file_uploads = 50
date.timezone= Europe/Moscow
session.save_path = "/var/www/admin/data/bin-tmp"
magic_quotes_gpc = Off
magic_quotes_runtime = Off
magic_quotes_sybase = Off

apache2.conf

<IfModule mpm_prefork_module>
    StartServers          10
    MinSpareServers       10
    MaxSpareServers      15
    MaxClients          100
    MaxRequestsPerChild   0
</IfModule>

<IfModule mpm_worker_module>
    StartServers          5
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          150
    MaxRequestsPerChild   0
</IfModule>


<IfModule mpm_event_module>
    StartServers          5
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75 
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>

NGINX вроде это:

user www-data;worker_processes 4;
pid /var/run/nginx.pid;

events {
	worker_connections 768;
	# multi_accept on;
}

http {

	##
	# Basic Settings
	##

	sendfile on;
	tcp_nopush on;
	tcp_nodelay on;
	keepalive_timeout 65;
	types_hash_max_size 2048;
	#client_max_body_size 1000m;
	# server_tokens off;

  • 0

#7 CB9TOIIIA

CB9TOIIIA

Отправлено 19 January 2015 - 10:02

Единственное меня смущает max_execution_time - выставить 120? или тут иное править?)


  • 0

#8 SmetDenis

SmetDenis

Отправлено 19 January 2015 - 10:05

Вы понимаете принцип работы проксирующего nginx и откуда возникает очередь?
  • 0
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.


#9 CB9TOIIIA

CB9TOIIIA

Отправлено 19 January 2015 - 10:06

Вы понимаете принцип работы проксирующего nginx и откуда возникает очередь?

 

Увы с сервером я на: "Приветствую Вас сэр" O0

 

Я рисовал картинку руководству, но не уверен, что я вообще правильно изобразил работу сервера.

 

Spoiler


Сообщение отредактировал CB9TOIIIA: 19 January 2015 - 10:07

  • 1

#10 SmetDenis

SmetDenis

Отправлено 19 January 2015 - 11:10

Картинка верна, хотя у меня есть вопросы.

Вкраце это работает так

apache - это комбайн, который умеет работать со 100500 протоколами включая http. Для него него есть огромное количество модулей, типа webDav, svn, куча разных авторизаций итд. основная проблема apache - он тяжелый на подъем. На каждый чих он создает новый поток и запускает себя снова. Т.е грубо говоря, если параллельно качается 10 файлов, то запущено 10 апачей.

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

---
Как мы знаем, сайты - это такая штука, которая запускается каждый раз с нуля и отрабатывает с нуля снова и снова. Более того, под раздачу попадает не только PHP но и любая статика (картинки, js-ки).

Чтобы облегчить жизнь серверу, ставят прокcирующий nginx, который слушает 80й порт на сервере, принимает входящие и отдает что спрашивают при этом не съедается память. НО есть одно НО =) Если запрос идет к php скрипту, то он перенаправляется на apache, который в свою очередь запустит php.

Проксирующий nginx заметно уменьшит кол-во апачей в памяти а статика будет отдаваться в браузер через системный sendfile (который вроде как как самый быстрый) в купе с keepalive (в одном соединении отдает сразу несколько файлов).

Получается, что apache с браузером работает не напрямую, а через посредника - nginx. а значит важны соответствующие настройки такие как
Timeout 300
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
MaxRequestsPerChild 0
+ есть возможность сделать кеширование контента на уровне nginx. Т.е будет сохранятся контент например на 5-10 сек а ключом кеширования будет ссылка/запрос.

max_execution_time - лучше уменьшить до 30 сек. скорее всего после ожидания страницы в 30 секунд, пользователь уйдет.
а повисший скрипт не будет тормозить остальных на 2 минуты.

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

Nginx + php5 хорошая связка, но придется отказаться от htaccess и учесть права доступа к файлам.
apache умеет разруливать так чтобы каждый сайт имел свои права, nginx всегда работает от одного пользователя
  • 1
JBZoo v4.0 и новый чудный мир Open Source GPL
Отключайте проверку лицензий как можно скорее!



— Есть два типа людей: Кто еще не делает бекапы и кто уже делает бекапы.





Click to return to top of page in style!