Форум русской поддержки Joomla!® CMS
11.12.2016, 12:00:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2  Все   Вниз
  Добавить закладку  |  Печать  
Автор

Оптимальная конфигурация сервера (nginx+php-fpm VS nginx+apache+fcgi_proxy)

 (Прочитано 1527 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« : 14.04.2016, 14:11:23 »

Начитался разных статей в интернетах, большинство из них написано несколько лет назад (за это время многое уже могло измениться), и многие склоняются к тому, чтобы исключить Apache полностью из конфигурации сервера, то есть, как я понимаю, использовать nginx+php-fpm вместо проксирования nginx+apache+fcgi_proxy. В последнее время меня одолели GET запросы от пользователей моих расширений, которые посылаются ко мне на сервер каждый раз, когда они заходят на главную страницу своей админки (проверяется актуальная версия расширений). В настоящее время одних обращений лишь к файлам манифеста больше тысячи за сутки. Nginx на фронте у меня стоит, но он не справляется: бывает, временами, что сервер тормозит.

Задумался над конфигурацией своего сервера. Ищу оптимальные варианты: либо полностью отказаться от Apache, либо отключить .htaccess в глобальной конфигурации (говорят, тогда скорость выполнения динамики ничем не отличается от fcgi_proxy) и использовать его в качестве бек-энда по классической схеме. Хотелось бы узнать ваш опыт и возможные плюшки от использования этих схем, или же, может, есть ещё какие-нибудь схемы?
« Последнее редактирование: 03.06.2016, 20:58:15 от Филипп Сорокин » Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3540


« Ответ #1 : 14.04.2016, 17:56:52 »

Настройка от задач зависит, есть такие где и nginx лишний. Надо не только сервер настраивать, но и сайты по отдельности. Кстати nginx так же бывает отъедает не мало, что на производительность влияет.
Записан
SmokerMan
Профи
********

Репутация: +694/-25
Offline Offline

Пол: Мужской
Сообщений: 5225



« Ответ #2 : 14.04.2016, 19:49:31 »

В настоящее время одних обращений лишь к файлам манифеста больше тысячи за сутки.
1000 обращений в сутки и сервер падает?
это что за сервер такой?)
тем более я так понимаю эти обращения ничего не должны делать, тупо проверяется версия и все
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3540


« Ответ #3 : 15.04.2016, 01:14:00 »

1000 обращений в сутки и сервер падает?
это что за сервер такой?)
Горыныч, он может не падать но тормоза включать при единовременных подключениях на низком канале связи. Просто забивать его будут медленные обращения.
Записан
SmokerMan
Профи
********

Репутация: +694/-25
Offline Offline

Пол: Мужской
Сообщений: 5225



« Ответ #4 : 15.04.2016, 02:07:05 »

Горыныч, он может не падать но тормоза включать при единовременных подключениях на низком канале связи. Просто забивать его будут медленные обращения.
Приведение, если у меня лежит на сервере обычный XML файл, то хоть 1000 запросов в минуту не должны влиять никак на его работу
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #5 : 15.04.2016, 11:58:23 »

Приведение, если у меня лежит на сервере обычный XML файл, то хоть 1000 запросов в минуту не должны влиять никак на его работу
То есть искать проблему нужно не в этом? Помимо 1000 запросов в сутки (бывает и больше) к манифестам, у меня на этом сервере ещё 2 ресурса средней посещаемости (10К уников в месяц), количество запросов в целом даже не считал. Но это мы отвлеклись от темы, какую конфигурацию лучше подобрать?

Код:
есть такие где и nginx лишний
Не могли бы пояснить подробнее?
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3540


« Ответ #6 : 15.04.2016, 13:00:34 »

@Филипп Сорокин
Используйте связку Nginx + apache + php-apc она поможет в отключении open_basedir, что даст прирост в скорости и повысит безопасность, ну и что бы на VPS swap был обязательно.
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #7 : 15.04.2016, 13:29:17 »

Код:
php-apc
А что насчёт opcache?
Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4398



« Ответ #8 : 15.04.2016, 13:51:22 »

php-apc для php 5.5 и ниже
opcache для php 5.6 и выше

Я думаю сначала нужно найти узкое место.
Это может быть Apache, когда много соединений съедают всю оперативку и система уходит в swap.
Это может быть MySQL, когда его потребление оперативки превышает доступную и система уходит в swap.
Это может что-то грузить процессор.
Нужно top смотреть, что создаёт нагрузку.
« Последнее редактирование: 15.04.2016, 13:55:44 от ChaosHead » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #9 : 15.04.2016, 13:55:00 »

Значит всё-таки нет никакой разницы между nginx+php-fpm и nginx+apache+AllowOverride none (выключенный .htaccess)?
Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4398



« Ответ #10 : 15.04.2016, 14:02:13 »

Есть разница, apache потребляет больше оперативки, по скорости в режиме AllowOverride none я не мерял, не знаю. Apache с php тоже может в куче режимов работать, там тоже куча нюансов. fcgid самый быстрый вариант imho с Apache, но жрёт оперативку и в настройке сложнее. nginx+php-fpm - гемор с конфигами, но скорее всего максимально быстро.
Не факт ещё, что у вас Apache нагрузку создаёт. Смотрите top в моменты торможений.
Запустите тестирование сайта под нагрузкой одновременными соединениями https://loadimpact.com/ и смотрите top. Да и результат покажите тоже. Сайт не должен падать при этом тестировании.
« Последнее редактирование: 15.04.2016, 14:07:27 от ChaosHead » Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4398



« Ответ #11 : 15.04.2016, 14:10:30 »

Опять же что за сайты? Если статичные, то всё закэшируйте. В настройках стандартное(!) кэширование на 24 часа и плагин система кэш. И будут гостям просто сгенерированные страницы отдаваться не напрягая особо php и MySQL.
« Последнее редактирование: 15.04.2016, 14:13:41 от ChaosHead » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #12 : 15.04.2016, 14:12:50 »

Код:
Опять же что за сайты?
Один из них образовательный портал с регистрацией, личным кабинетом, сообщениями и пр., другой статичный, к которому идёт куча запросов на манифесты. Можно ли как-то эти манифесты в оперативку положить?
Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4398



« Ответ #13 : 15.04.2016, 14:34:35 »

Да всё можно по идее. Я не знаю как это устроено у вас. Если php отдаёт эти манифесты, то как раз
Цитировать
php-apc для php 5.5 и ниже
opcache для php 5.6 и выше
они кэшируют операционный код (повторяющиеся операции) и переменные. В apc нужно отдельно в конфиге включать кэширование переменных на сколько я помню. В opcache дефолтный конфиг отличный.

Если идут запросы к MySQL и данные получаются оттуда, то в /mysql/my.cnf
пропишите
Код:
query_cache_size= 128M
query_cache_limit=2M
query_cache_type=1
Это кэширование запросов. Если таблица не меняется, то повторяющиеся запросы кэшируются в оперативку и отдаётся готовый результат.

Если хотите, чтобы nginx кэшировал результаты, то тут нужно смотреть у него в сторону proxy_store.
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #14 : 15.04.2016, 14:36:41 »

Код:
Если php отдаёт эти манифесты, то как раз
Нет, у меня они в виде XML по протоколу HTTP. Думаете, если PHP их будет отдавать в закешированном виде, это будет быстрее? А для статики нет такого кэширования в оперативку?
Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4398



« Ответ #15 : 15.04.2016, 14:53:54 »

В виде XML - это просто файлы лежат на диске? Тогда их уже nginx отдаёт. И это может тормозить только если они огромного размера и их запрашивают каждую секунду и забивают канал. Как написали выше.
Либо XML генерируется на лету php кодом динамически? Тогда будут иметь смысл оптимизации php и кэширование результатов. А ещё лучше написать скрипт, который по крону будет раз в сутки все нужные XML генерировать и сохранять на диск.
Да если вообще у вас проблема из-за XML...
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #16 : 15.04.2016, 15:06:15 »

Просто файлы лежат на диске небольшого размера.
Цитировать
Да если вообще у вас проблема из-за XML...
Да я вот и не понимаю из-за чего. Время ответа сервера всегда ниже 200, а сервер почему-то падает временами, при этом никакой ошибки нет — просто браузер отказывается открывать страницу.
Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4398



« Ответ #17 : 15.04.2016, 15:27:05 »

Ну по опыту такое случается, когда Apache падает. Смотри в /var/log/apache2/error.log ошибки
Может бот какой-то приходит в это время и кладёт апач.

И https://loadimpact.com попробуй, если он положит сайт 50-ю одновременными соединениями, то и боты смогут.
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #18 : 15.04.2016, 15:33:56 »

Может бот какой-то приходит в это время и кладёт апач.
Посмеялся над фразой! Вы бы его ещё индейцем назвали =) Но совет очень дельный, спасибо, нужно было с этого и начать. Хотя я изучал логи и вроде ничего особенного в них не находил, кроме распространённого эксплойта версий < 3.8 (до сих пор ломятся и очень часто). Оффтоп:
Показать текстовый блок
В общем, спасибо ещё раз за дельные советы. Всем от меня +1. Но тема не закрыта: пожалуйста, делитесь опытом. Судя по всему, тенденция идёт не в сторону Apache. Я люблю этот сервер, т.к. считаю, что в нём очень много гениального и одновременно простого, но из-за его тормознутости уже даже официальный мануал по Joomla советует переходить на Nginx:
https://docs.joomla.org/Nginx
« Последнее редактирование: 15.04.2016, 15:37:05 от Филипп Сорокин » Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4398



« Ответ #19 : 15.04.2016, 15:46:50 »

Да это без сомнений. Но скажем новичку не посоветуешь Nginx + php-fpm потому, что он просто не осилит сразу править конфиги. Поэтому этот вариант и менее распространён.
Но тенденции к нему движутся. Например в новой панели управления хостингом isp manager - это вариант предлагается по умолчанию. В панели Vesta даже заготовили готовые конфиги под разные CMS и их можно выбирать из списка.
« Последнее редактирование: 15.04.2016, 15:50:03 от ChaosHead » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #20 : 15.04.2016, 16:01:32 »

Вообще, если так подумать, то Joomla! без .htaccess - это нонсенс. Однако, судя по всему, от него нужно избавляться в первую очередь, когда речь заходит об оптимизации: неважно, Nginx это будет чистый или же Apache с отключённым AllowOverride.
« Последнее редактирование: 17.04.2016, 10:28:47 от Филипп Сорокин » Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3540


« Ответ #21 : 15.04.2016, 21:09:43 »

Код:
Опять же что за сайты?
Один из них образовательный портал с регистрацией, личным кабинетом, сообщениями и пр.
Там и комментарии есть и контекста масса страниц?
Если так, то MySQL нагрузку дает при единовременных подключениях.
В этом случае keep-alive можно подрезать.
« Последнее редактирование: 15.04.2016, 21:14:35 от flyingspook » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #22 : 15.04.2016, 21:20:33 »

MySQL создаёт нагрузку, конечно, но не из-за объема контента, а больше из-за танка в виде JomSocial, который я допилил под собственные нужды. Сделать по уму, без всякого мусора, написанного индусами, пока времени не хватает - сапожник без сапог.
Записан
flyingspook
Профи
********

Репутация: +226/-9
Offline Offline

Сообщений: 3540


« Ответ #23 : 15.04.2016, 21:25:41 »

Ну с таким комбайном ОЗУ и МГц железа надо рассматривать ровно по единовременной пиковой нагрузке, простая оптимизация и настройка серверной части это малый процент и он сильно не добавит счастья.
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #24 : 15.04.2016, 21:29:31 »

Ну с таким комбайном ОЗУ и МГц железа надо рассматривать ровно по единовременной пиковой нагрузке, простая оптимизация и настройка серверной части это малый процент и он сильно не добавит счастья.
Я оттуда больше половины выкинул. Оставил профиль, список пользователей, личку и интеграцию с комментами. До выпиливания хлама сервер пыхтел заметно, да.
« Последнее редактирование: 16.04.2016, 10:04:48 от Филипп Сорокин » Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #25 : 17.04.2016, 10:30:44 »

Вообще, если так подумать, то Joomla! без .htaccess - это нонсенс. Однако, судя по всему, от него нужно избавляться в первую очередь, когда речь заходит об оптимизации: неважно, Nginx это будет чистый или же Apache с отключённым AllowOverride.

Кстати, есть ещё один вариант для тех, кто хотел бы ускорить сайт, но при этом оставить гибкость Apache: можно разрешить .htaccess только в корневом каталоге - в остальных запретить. Хотя это бессмысленно, если у вас имеется доступ к конфигу Apache: все правила рерайтинга, которые все привыкли видеть в .htaccess, можно так же гибко разложить по директориям, правда после каждой правки нужно перезагружать Apache. Но скорость в этом случае увеличится - об этом говорится даже в официальном руководстве к Apache:

Цитировать
You should avoid using .htaccess files completely if you have access to httpd main server config file. Using .htaccess files slows down your Apache http server. Any directive that you can include in a .htaccess file is better set in a Directory block, as it will have the same effect with better performance.
Записан
ChaosHead
Профи
********

Репутация: +382/-10
Offline Offline

Пол: Мужской
Сообщений: 4398



« Ответ #26 : 17.04.2016, 12:50:41 »

Протестировать бы это дело, на сколько существенный прирост в скорости работы. В установленной Joomla только в корне лежит .htaccess. Ещё у меня несколько компонентов его добавляют к себе в папке. Akeeba backup запрещает входить в папку с бэкапами, чтобы сайт не скопировали. Uddeim тоже кладёт в папку с файлами, тоже запрещает доступ.
С Akeeba backup проблемы нет, просто сменил папку по умолчанию, можно в корень сайта и доступ к файлу уже не получат, если не будут знать его точного названия, что нереально на практике.
Записан
Филипп Сорокин
Живу я здесь
******

Репутация: +121/-4
Offline Offline

Пол: Мужской
Сообщений: 1471


« Ответ #27 : 17.04.2016, 19:37:53 »

В установленной Joomla только в корне лежит .htaccess

Тут ведь понимаете в чём дело, это неважно, сколько файлов .htaccess присутствует в каталогах. Если для этих каталогов разрешён AllowOverride, то Апач будет рекурсивно пытаться найти .htaccess на всех уровнях выше, даже если его там нет вообще. То есть, если мы имеем такую структуру каталогов: /public_html/site.ru/folder_1/folder_2/folder_3/folder_4/file.php, то при обращении к файлу, Апач ищет .htaccess во всех директориях:

/public_html/site.ru/folder_1/folder_2/folder_3/folder_4
/public_html/site.ru/folder_1/folder_2/folder_3
/public_html/site.ru/folder_1/folder_2
/public_html/site.ru/folder_1
/public_html/site.ru
/public_html

И так, внимание, при обращении к каждому файлу. Если Nginx установлен на фронте, то поиск .htaccess не делается для статики, потому что до Апача она не доходит, а для динамических файлов делается. Вот я и подумал, что, в принципе, можно бы разрешить AllowOverride только в каталоге /public_html/site.ru, или же, если сайтов мало, и правил мало, то в /public_html, если грамотно придумать правила, которые будут работать для всех сайтов универсально. Потестировать было бы интересно, нужно сначала разработать методологию. Но если сами разработчики Apache говорят, что не надо использовать .htaccess, то скорее всего разница будет заметна.

Кстати, я тут на своей локальной Убунте ради интереса установил Joomla на Nginx+php-fpm. Использовать такую конфигурацию не так уж и сложно. Для меня сложнее было разобраться во всех этих репозиториях и консольных командах.
« Последнее редактирование: 17.04.2016, 19:53:58 от Филипп Сорокин » Записан
yuri-it
Живу я здесь
******

Репутация: +37/-3
Offline Offline

Сообщений: 1037


« Ответ #28 : 18.04.2016, 11:00:59 »

php-apc для php 5.5 и ниже
opcache для php 5.6 и выше
В php 5.5 уже идет поддержка Opcache.
Записан
yuri-it
Живу я здесь
******

Репутация: +37/-3
Offline Offline

Сообщений: 1037


« Ответ #29 : 18.04.2016, 11:12:34 »

Apache+Nginx+mod_php+php7 (если версия J позволяет) или php 5.6 с opcache, не забыть кеширование MySQL (лучше mariadb) + в нем еще туча параметров, помимо кеширования запросов,  влияющих на производительность (innodb_flush_log_at_trx_commit, low_priority_updates, innodb_flush_method и т.д.). Рассмотреть вариант с кешированием при помощи Nginx. Не забыть создать tmpfs в оперативной памяти под временные файлы, особенно для MySQL + много всего по мелочи.
Записан
Страниц: [1] 2  Все   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet