EOMY.NET
Хостинг EOMY.NET: Форум поддержки
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
RSS Feed  

Задание правильного MaxClients для апача

 
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Сервис VPS от EOMY.NET
Задание правильного MaxClients для апача
Автор Сообщение
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2066
Откуда: Самара
11733 Монеты

СообщениеДобавлено: Ср, 27 Окт, 2010 15:35    Заголовок сообщения: Задание правильного MaxClients для апача Ответить с цитатой

Такой вопрос с помощью настройки MaxClients можно регулировать кол-во максимальных потоков для апача, такой вопрос если нужно чтобы запускалось максимальное кол-во потоков при этом каждый из потоков основное время (95% времени) будет тратить на получение данных с внешнего сервера и каждый из потоков ест примерно 1% памяти VPN, можно поставить MaxClients около 80 или это не поможет? Сможет процессор VPN обслуживать такое кол-во потоков?
_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
lazutov
while (1==1);
Последний герой


Зарегистрирован: 30.04.2007
Сообщения: 3840

111220 Монеты

СообщениеДобавлено: Ср, 27 Окт, 2010 17:43    Заголовок сообщения: Ответить с цитатой

Что-то у меня проблемы с пониманием Вашего поста.
Я прочитал три раза и ничего не понял.

MaxClients просто лимит того, что у вас никогда не будет ретривить данные с бекенда(интерпретатор, диск) больше MaxClients процессов одновременно.
_________________
сервис DNS | разные http, DNS и прочие утилиты
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2066
Откуда: Самара
11733 Монеты

СообщениеДобавлено: Ср, 27 Окт, 2010 20:10    Заголовок сообщения: Ответить с цитатой

Честно говоря фразу "ретривить данные с бекенда" я тоже не понял. Речь шла о том что есть смысл увеличивать кол-во одновременных http процессов в апаче (как я понял вроде для этого надо использовать не MaxClients, а MaxSpareServers), или все равно это не даст пользы, т.к. упрется в то что процессор все-таки имитирует многозадачность и все равно большое кол-во процессов будет ждать обработки процессором.
_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
girafenok
Два пингвиненка
Два пингвина


Зарегистрирован: 17.11.2007
Сообщения: 333

11827 Монеты

СообщениеДобавлено: Ср, 27 Окт, 2010 21:17    Заголовок сообщения: Ответить с цитатой

Насколько я понимаю веб-сервер, в том числе и Апач, нужен для того, чтобы отдавать страницы с сервера. Получение информации с других серверов это обычный сокетный запрос на порт 80 удаленного сервера, реализуется стандартными средствами любого языка программирования. Зачем здесь Апач или какой-либо другой веб-сервер? Если только апач в данном случае не является фронт-ендом к другим серверам. Но использовать его для этой цели очень нерационально.
При большом количестве запросов, также, не рационально использовать синхронную модель (по процессу на запрос), горазо эффективнее показывает себя асинхронная модель (последовательная перебор запросов), а для нее нужен один процесс на ядро.
В общем гадание на кофейном гуще. Дайте описание задачи, тогда можно будет что-либо посоветовать Very Happy.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2066
Откуда: Самара
11733 Монеты

СообщениеДобавлено: Ср, 27 Окт, 2010 21:47    Заголовок сообщения: Ответить с цитатой

хорошо задача
1) есть VPN который получает запрос с другого сервера (точнее другого VPN который занимается представлением сайта-интерфейса для данных запросов)
2) по данному запросу он должен обратится к одному или нескольким внешним серверам, скачать страницу, распарсить её и вернуть ответ на запрос в котором будет только нужная информация из внешних серверов + сохранить результаты в базе.
3) по текущим замерам производительности основное время это получение информации с внешних серверов, парсинг и сохранение данных в базу занимают 5-8 % времени.

При этом таких запросов может быть очень много в единицу времени и они должны выполнятся как можно быстрее. Т.е. нужно будет или оптимизировать работу так чтобы VPN мог выкладывался на 100% в час пик или использовать несколько различных VPN для данных целей.

P.S. Пример подобной системы сервис whois, определние ТИЦ и PR и т.п. где один VPN держит сам сайт, а второй отвечает на запросы (просьба не задавать вопросы почему нельзя сделать все на одном VPN'е - для такой архитектуры есть свои причины).
P.P.S. Сейчас после нагрузочного тестирования есть подозрение что VPN не работает в полную силу из-за ограничений на кол-во потоков в апатче (т.е. памяти и времени процессора ещё хоть залейся), но скорость ответа на большое кол-ва запросов падает до десятков секунд.
_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
girafenok
Два пингвиненка
Два пингвина


Зарегистрирован: 17.11.2007
Сообщения: 333

11827 Монеты

СообщениеДобавлено: Ср, 27 Окт, 2010 22:17    Заголовок сообщения: Ответить с цитатой

Я так понимаю, что основная логика - скачивание страниц и их парсер - написаны на php?

Апач здесь будет только тормозить систему именно из-за своей синхронной природы, т.е. пока не выполнится запрос с сайта-интерфеса (т.е. пока не скачается и не распарсится страница, а это делает php-интерпретатор, а не апач, апач просто ждет) он не сможет обслужить следующий. Для увеличения производительности он создает по процессу на запрос, но это много памяти и системных ресурсов, а следовательно количество одновременных запросов будет существенно ограничено.

Самым простым вариантом здесь является установка nginx в качестве прокси-сервера и запуск большого числа (выяснить экспериментальным путем) php интерпретаторов в режиме fast-cgi.

Nginx принимает запрос от сайта-интерфейса и передает его php-fastcgi серверу. Так как nginx является асинхронным, то ему не нужно ждать пока этот запрос будет выполнен php-сервером. Он сможет обслуживать другие преходящие запросы и выдавать распарсенные ответы. Т.е. это будет один процесс, который обслуживает запросы последовательным перебором.
php-fastcgi серверы в своем режиме будут скачивать страницы, парсить их и по мере готовности и отдавать nginx. Так как один php-fastcgi сервер может обслуживать несколько запросов, а таких серверов можно запустить большое количество, то и вероятность загрузить сервер на 100% будет больше.

В идеале вместо php fastcgi надо написать свой собственный сервер, который также будет скачивать страницы и обрабатывать их в асинхронном режиме. Тогда производительнось еще более увеличится.

Как-то так.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2066
Откуда: Самара
11733 Монеты

СообщениеДобавлено: Ср, 27 Окт, 2010 22:27    Заголовок сообщения: Ответить с цитатой

гммм вообще куда проще все это реализовать через Mysql таблицу примерно так на
1) сайте интерфейсе через java script запускается рhp скрипт через http который либо добавляет запрос в таблицу mysql если его нет, либо проверяет флаг готовности запроса в той же таблице, при этом с помощью JS повторят обращение к этом скрипту каждую секунду или чаще.
2) соответсвенно php в режиме fast-cgi выбирает из этой таблицы запросы, отмечает их как выполняющиеся, выполнет и потом сохраняет в эту таблицы результаты.
3) как только результат готов вернуть его пользователею, при этом все будет работать ассинхронно.

ок, надо подумать, спасибо
_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
girafenok
Два пингвиненка
Два пингвина


Зарегистрирован: 17.11.2007
Сообщения: 333

11827 Монеты

СообщениеДобавлено: Ср, 27 Окт, 2010 22:35    Заголовок сообщения: Ответить с цитатой

MySql является сервером, он не обязательно должен находиться на одном компьютере с обращающимся к нему скриптом (только безопасноть снижается). Поэтому сайт-интерфейс можно настроить так, чтобы он напрямую запросом записывал/читал информацию в удаленный сервер. А скрипт-парсер с другого VDS читал/записывал с этого удаленного сервера информацию. Таким образом убирается большое количество промежуточных звеньев. Единственно надо будет как-то управлять (синхронизировать) всем этим делом.

Хотя с nginx в качестве прокси (как раз разруливающего все это дело), мне кажется будет проще, чем самому все синхронизировать.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2066
Откуда: Самара
11733 Монеты

СообщениеДобавлено: Пт, 29 Окт, 2010 08:18    Заголовок сообщения: Ответить с цитатой

кстати, если интересно я поигрался с кол-вом одновременных потоков в апаче и у меня больше 20 одновременных запросов по http очень весело бегали, причем не загрузив даже гарантированной памяти - при тестирование за 10 минут были обработаны 5 тысяч запросов, что намного больше ожидаемой нагрузки, так что пока мне и так хватит. Wink
_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
lazutov
while (1==1);
Последний герой


Зарегистрирован: 30.04.2007
Сообщения: 3840

111220 Монеты

СообщениеДобавлено: Пт, 29 Окт, 2010 12:42    Заголовок сообщения: Ответить с цитатой

Веденин
На всякий случай для тестирования: гугл Apache Benchmark
или ab tool
_________________
сервис DNS | разные http, DNS и прочие утилиты
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
girafenok
Два пингвиненка
Два пингвина


Зарегистрирован: 17.11.2007
Сообщения: 333

11827 Монеты

СообщениеДобавлено: Пт, 29 Окт, 2010 14:14    Заголовок сообщения: Ответить с цитатой

Тестирование - вещь достаточно сложная. Не зная условий тестирования, очень сложно сказать хороший у Вас результат или нет.

У меня nginx + 3 php fastcgi обрабатывают ~30 запросов в секунду при ~ 500 параллельных запросов, правда на самом простом скрипте, который проверяет авторизацию пользователя по куки и выдает ответ. При этом загрузка процессора ~50%, а так скрипт не сложный, то и дополнительной памяти на его исполнение не выделяется, занята только та, что выделена процессам php-fastcgi.

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

Тестирую утилитой http_load: http://www.acme.com/software/http_load/
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Веденин
Красные глаза
Красные глаза


Зарегистрирован: 17.05.2007
Сообщения: 2066
Откуда: Самара
11733 Монеты

СообщениеДобавлено: Пт, 29 Окт, 2010 14:43    Заголовок сообщения: Ответить с цитатой

Скажем так этот результат пока меня вполне устраивает, время ожидание пользователя секунды 2-3 даже если придет около 30 тыс запросах в час. Very Happy Большая производительность не имеет смысла, т.к. во-первых такой необходимости просто нет, во-вторых на неё просто не хватит выделенного трафика.

Тестирую с помощью своих специальных страниц в браузере с обновлением страниц с помощью JS.
_________________
Написание конвекторов, парсеров, интеграции нескольких сайтов (в личку)

Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Сервис VPS от EOMY.NET Часовой пояс: GMT
Страница 1 из 1

 


EOMY TOP 100 Rambler's Top100   Рейтинг@Mail.ru    



Powered by phpBB © 2001, 2005 phpBB Group


Рейтинг SIMPLETOP.NET