0 Пользователей и 1 Гость просматривают эту тему.
  • 42 Ответов
  • 7744 Просмотров
*

Филипп Сорокин

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

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

flyingspook

  • Живу я здесь
  • 3590
  • 247 / 9
Настройка от задач зависит, есть такие где и nginx лишний. Надо не только сервер настраивать, но и сайты по отдельности. Кстати nginx так же бывает отъедает не мало, что на производительность влияет.
*

SmokerMan

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

flyingspook

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

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Горыныч, он может не падать но тормоза включать при единовременных подключениях на низком канале связи. Просто забивать его будут медленные обращения.
Приведение, если у меня лежит на сервере обычный XML файл, то хоть 1000 запросов в минуту не должны влиять никак на его работу
*

Филипп Сорокин

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

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

flyingspook

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

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
*

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
php-apc для php 5.5 и ниже
opcache для php 5.6 и выше

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

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Значит всё-таки нет никакой разницы между nginx+php-fpm и nginx+apache+AllowOverride none (выключенный .htaccess)?
*

ChaosHead

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

ChaosHead

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

Филипп Сорокин

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

ChaosHead

  • Гуру
  • 5242
  • 451 / 13
Да всё можно по идее. Я не знаю как это устроено у вас. Если 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.
*

Филипп Сорокин

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

ChaosHead

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

Филипп Сорокин

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

ChaosHead

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

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

Филипп Сорокин

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

ChaosHead

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

Филипп Сорокин

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

flyingspook

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

Филипп Сорокин

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

flyingspook

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

Филипп Сорокин

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

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Вообще, если так подумать, то 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

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

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
В установленной 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, 18:53:58 от Филипп Сорокин »
*

yuri-it

  • Давно я тут
  • 994
  • 44 / 3
  • Быстрый хостинг https://jehost.ru
php-apc для php 5.5 и ниже
opcache для php 5.6 и выше
В php 5.5 уже идет поддержка Opcache.
По-настоящему быстрый хостинг для Joomla : https://jehost.ru
Отзывы: http://joomlaforum.ru/index.php/topic,109288.0.html
Отзывы по хостингу http://hosting101.ru/jehost.ru
*

yuri-it

  • Давно я тут
  • 994
  • 44 / 3
  • Быстрый хостинг https://jehost.ru
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 + много всего по мелочи.
По-настоящему быстрый хостинг для Joomla : https://jehost.ru
Отзывы: http://joomlaforum.ru/index.php/topic,109288.0.html
Отзывы по хостингу http://hosting101.ru/jehost.ru
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Aeza - мощные виртуальные сервера до 5.7 ГГц от 0.9р/час и выделенные серверы

Автор AezaHost

Ответов: 31
Просмотров: 2482
Последний ответ 01.03.2024, 19:04:35
от AezaHost
✅ vpsmarket.biz | vps/vds сервера по низким ценам!

Автор VPSmarket

Ответов: 0
Просмотров: 200
Последний ответ 24.01.2024, 12:47:13
от VPSmarket
Ускоряем Joomla 2 и 3 - рабочий конфиг Nginx+PHP-FPM

Автор yuri-it

Ответов: 43
Просмотров: 7576
Последний ответ 02.02.2022, 17:40:59
от ivangord
hetzner — аренда сервера

Автор fefelov

Ответов: 109
Просмотров: 28722
Последний ответ 23.12.2019, 17:54:36
от B1ack7wan
Нужен админ выделенного сервера

Автор wishlight

Ответов: 7
Просмотров: 1035
Последний ответ 11.03.2018, 14:33:14
от yuri-it