Как уменьшить нагрузку на сервер?

karman.com.ua - Хостинг в Украине
форум о хостинге в Украине

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Как уменьшить нагрузку на сервер?
Aladdin
сообщение 25.11.2007, 1:48. Re: Как уменьшить нагрузку на сервер?
Сообщение #1


ФИО: Праведно-Счастливый Аладдин Ярославович
*****

Группа: Любимый хостинг-ROOT
Сообщений: 1 153
Регистрация: 25.11.2006
Из: г. Киев
Пользователь №: 4



Вот встала на дыбы задача: нехватка ресурсов сервера. И пути решения:
1. Купить более мощный сервер.
2. Уменьши как-то нагрузку на сервер.

С более мощным сервером тут все ясно. Вопрос во втором.
Я тут узнал, что Apache туго работает со статическими файлами. Из-за этого забирает много ресурсов.

И умные люди подсказали, что есть некие бэкэнд системы, которые вместо апача работают со статикой. В частности предложили использовать nginx / thttpd . Построение принципа выглядит так:
| Internet | -> nginx(gif / jpg / html) -> Apache -> php / cgi

Вопрос: кто либо использовал такую систему? Поделитесь опытом.
Возможно кто-то пользовался другими способами. Тоже с радостью ознакомлюсь и я и те, кто этим вопросом печется.
Перейти в начало страницы
 
+Цитировать сообщение
Valentin (HBUA)
сообщение 25.11.2007, 1:48. Re: Как уменьшить нагрузку на сервер?
Сообщение #2


Любимый продвинутый хостинг-профессионал
***

Группа: Любимый Хостер
Сообщений: 346
Регистрация: 25.12.2006
Пользователь №: 224



Наилучшим решением для устранения перечисленных проблем является создание двухуровневой системы Front-End + Back-End для обработки запросов.

Front-End – публичная часть проекта, обеспечивающая прием запросов от пользователей, трансляцию запросов к Back-End и выдачу непосредственного содержимого пользователю.

Back-End – исполнительная часть системы, которая обеспечивает выполнение PHP-скриптов, формирование контентных страниц и работу бизнес-логики приложений.

Front-end

Front-Еnd исполняет все запросы, которые возможно обработать самостоятельно без обращения к Back-End. Графические файлы и таблицы стилей с веб-сервера запрашиваются только в соответствии с политикой кеширования. После этого файлы хранятся в кэш Front-End и отдаются пользователям без обращения к Back-End.

Наиболее эффективна конфигурация, когда Front-End непосредственно напрямую с диска считывает статические файлы и не нагружает Back-End запросами.

Желательно, чтобы только для получения PHP-страниц Front-End обращался к Back-End серверу для получения страницы и при необходимости ожидал освобождения Back-End процессов.

В качестве Front-End сервера можно использовать:

NGINX - http://sysoev.ru/nginx/
SQUID - http://www.squid-cache.org/
OOPS - http://www.oops-cache.org/

или любой аналогичный продукт.

Наилучшие практические результаты получены при использовании NGINX.

Если вы используете кэширующий прокси-сервер в качестве Front-End, обязательно настраивайте время кэширование документов. Графические файлы и таблицы стилей, XML файлы и другие статические объекты с веб-сервера должны запрашиваются только в соответствии с политикой кэширования. После этого файлы хранятся в прокси-сервере и отдаются пользователям без обращения к Back-End и Apache. Рекомендуется настраивать время кеширования для графических файлов на 3-5 дней. Пример настройки кэширования через файл .htaccees в корне веб-сервера:
ExpiresActive on
ExpiresByType image/jpeg "access plus 3 day"
ExpiresByType image/gif "access plus 3 day"

Внимание! Для работы этого примера необходимо, чтобы веб-сервер позволял переопределение переменных через файл .htaccess и модуль mod_expires был установлен.
В некоторых случаях на Front-end политика кеширования настраивается независимо от настроек Back-end.

Таким образом, Front-end будет кешировать все графические изображения. Запросы к контентным страницам не будут кешироваться и будут перенаправляться к Back-end.

Back-End

Back-end представляет собой обычный веб-сервер Apache, который исполняет PHP-приложения.

Back-end готов исполнять запросы на графические и статические документы, если вы используете кеширующий прокси-сервер для Front-End.

Но очень важно, чтобы число таких запросов было минимальным и 99% запросов приходилось на выполнение именно PHP-страниц.

Конфигурируя Back-End, можно добиться значительного выигрыша в производительности и стабилизировать систему по расходу памяти.

В большинстве случаев Back-End представляет собой обычный веб-сервер Apache, работающий на нестандартном порту, к примеру, на порту 88, и отвечающий только на запросы с localhost или IP адреса прокси-сервера.
Совет администратору. Лучше использовать несколько внутренних IP адресов типа 127.0.0.2, 127.0.0.3 и т.д. с 80м портом, иначе возможны нежелательные редиректы на неработающий порт у Front-end.

Рассмотрим процесс обработки запроса пользователя к обычной странице сайта.
Запрос принимается Front-End, например, по адресу http://www.hostbizua.com на 80 порту, транслируется веб-серверу Apache по адресу http://127.0.0.2:80/ Запрос исполняется веб-сервером Apache. Ответ принимается прокси-сервером, и соединение между прокси-сервером и Apache сервером закрывается, память высвобождается. Прокси-сервер передает готовую сформированную страницу посетителю по медленному каналу. Получив страницу, браузер посетителя посылает последовательно серию запросов на графические элементы и таблицу стилей. Все запросы принимаются прокси-сервером и обрабатываются без обращений к Back-end.

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

Стабилизируем Back-end по расходу оперативной памяти

Для стабилизации системы по расходу памяти и минимизации числа запущенных процессов Back-end можно рекомендовать в настройках Apache установить параметр MaxClients в значении 5-50.

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

Наличие лимита позволяет включить Persistent соединение к базе и уменьшить расходы на соединение и число работающих процессов базы данных.

Так же рекомендуется подбирать параметры управления процессами в соответствии с установленным лимитом MaxClients. Например, если MaxClients = 20, тогда:
MinSpareServers 20
StartServers 20
MaxClients 20
©
Перейти в начало страницы
 
+Цитировать сообщение
Aladdin
сообщение 25.11.2007, 1:48. Re: Как уменьшить нагрузку на сервер?
Сообщение #3


ФИО: Праведно-Счастливый Аладдин Ярославович
*****

Группа: Любимый хостинг-ROOT
Сообщений: 1 153
Регистрация: 25.11.2006
Из: г. Киев
Пользователь №: 4



А такой вот пример: Если у меня в апаче стоит в .htaccess
RewriteRule ^_.*\.html index.php

А в самом index.php идет скриптовыми функциями подгрузка статический файлов вида DOCUMENT_ROOT ."/files/lala.html". Бэкэнд сума не сойдет от таких манипуляций?
Перейти в начало страницы
 
+Цитировать сообщение
Valentin (HBUA)
сообщение 25.11.2007, 1:48. Re: Как уменьшить нагрузку на сервер?
Сообщение #4


Любимый продвинутый хостинг-профессионал
***

Группа: Любимый Хостер
Сообщений: 346
Регистрация: 25.12.2006
Пользователь №: 224



Нет
Перейти в начало страницы
 
+Цитировать сообщение
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
Есть вопросы о хостинге и о сайтах?

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

Последнее сообщение karman.com.ua (хостинг в Украине) требуется colocation или dedicated сервер

Последнее сообщение помощь при выборе VPS сервера

Последнее сообщение Куплю качественный хостинг на Украинских серверах с UA-IX для интернет магазина

Последнее сообщение DOS и DDOS атаки на сервера и VPS

Последнее сообщение ищется хостинговая компания с сервером в UA с тех.поддержкой 24x7x365

Последнее сообщение Ддос атака на сервер karman.com.ua

Последнее сообщение Ищу VPS или Выделенный сервер

Последнее сообщение Нужен dedicated сервер

Последнее сообщение Прошу совет какой арендовать сервер и где
Design by: Free IPB Skins & Web Proxy & © Karman.com.ua Rambler's Top100