я хотел бы ещё раз затронуть тему — веб сервера и хостинга для ls, а так же посещаемости и нагрузки, которая она создаёт.
Привет, я хотел бы ещё раз затронуть тему — веб сервера и хостинга для ls, а так же посещаемости и нагрузки, которую она создаёт.
Прелюдия
Начал своё знакомство с ls с версии 0.51, развернул некое коммьюнити, на shared хостинге. Были конечно кое какие проблемы у самого хостера, которые решались в общей сложности 2 недели… И вот появились первые заинтересованные пользователи, начали приглашать новых заинтересованных, лед тронулся… Спустя какое то время, начали приходить письма от самого хостера, мол вы используете процессорного времени больше чем положено 460 — 500 минут вместо 60, посему пришлось сделать коммьюнити закрытым — количество процессорного времени сократилось.
Спустя какое то время я обновил версию до 1.01, скачал и докупил несколько плагинов, шаблон, начал улучшать внешний вид сообщества и вот теперь пришёл к тому, что нужно переезжать с этого хостинга на что нибудь помощнее, да так, чтобы при этом открыть его для не зарегистрированных пользователей при этом оставив возможность регистрации только по инвайтам. Вся беда заключается в том, как бы это сказать: тематика сообщества довольно популярная и создавалось сообщество с перспективой как раз на большой онлайн, и теперь мне трудно представить сколько примерно уникальных человек будет посещать ресурс ежедневно, на одном из недавно реинкорнировавшимся, конкурентном ресурсе зарегистрировано 6 тыс пользователей, причем это тупо форум. И вот теперь я стал перед вопросом хостинга для такого сайта и выбором веб сервера для него.
Начало
Начал с веб сервера, опыта у меня в этом плане маловато, но надо же с чего то начинать, пробовал разные:
-голый apache как выяснилось не подходит из за того, что много кушает ресурсов.
-Nginx+Apache+PHP5, ставил по этому гайду доброволец сис админ проведя тестовую нагрузку siege'ом выявил что на моем коряво настроенном веб сервере с лайвстритом, на облаке от клодо с 14 ядрами + 256 — 768 оперативки мягко говоря одновременно могут находится 45 пользователей, но при 50 он уже падает. Как же так, совсем не то что я ожидал, хотя руки корявые у меня, скорее всего. Вообще получилось так, что конфигурацию некоторых параметров nginx, мне подсказал сис адми, а вот апач при этом имел дефолтные настройки из гайда, видимо поэтому и ложился так быстро. Вообще было что то наподобии worker process 8 + use epoll; +timer_resolution 100ms; А в апаче я изменил только в prefork MPM MaxClients 24 поменял на 1500.
-Nginx+PHP-FastCGI+Memcached — к сожалению работаю в ночное время и застать добровольца сис админа я уже не смог, зато после установки данного сервера на тот же clodo, хоть и с немного другими параметрами, я решил установить xcache, после этого перестал работать как memcache, так и xcache, даже после aptitude purge [], сайт стал открываться только после изменения кэша на файловый, что как я понял не приемлемо в моём случае, т.к. дисковые операции медленнее чем операции в оперативной памяти.
Что меня потом сподвигло прочитать вот такую вот заметку, то есть тут веб сервер как я понимаю выносит самые тяжелые фаилы для работы в оперативке, но мне не совсем понятно как быть с бэкапами, как своевременно делать на таком сервере бекап, чтобы если вдруг упадет питание ребутнувшись с помощью какого то костыля поднимался сервер с данными последнего бекапа?
Помимо всего этого, разумеется, стоит вопрос о выборе хостинга, я так понимаю для начала мне нужно смотреть в сторону vds, а дальше в сторону ds. Облако я сразу отсекаю, потому что если начнут досить то будет как в этом комментарии, то есть сгорят все мои кровные. С другой стороны как написано в комментарии пониже можно изначально взять DS, но при этом платить стабильно одну и ту же сумму 49 евро и не бояться, что ресурсы сгорят как на облаке, кстати видел почти аналогичный DS сервер за те же деньги в hetznet'e. В принципе 49 евро не так уж и много, тем более можно продавать ресурсы своим друзьям/знакомым/etc и тогда платить нужно будет гораздо меньше, единственный подводный камень который я обнаружил, это то что нужно в 1 месяц заплатить двойную сумму, 1 месяц + физ.установка сервера, уже думал брать его но распланировав бюджет для меня это была непреодолимая неожиданность и я воздержался от покупки в этом месяце, т.к. уже распланировал деньги.
Но в принципе это и хорошо, потому что для меня всё ещё загадка, какой же всё таки веб сервер лучше использовать под высоко посещаемый сайт на LS, вот поэтому и прошу вас поделится своим ценным опытом в данном направлении.
P.S. Просьба не разводить холиваров из этого топика.
Прелюдия
Начал своё знакомство с ls с версии 0.51, развернул некое коммьюнити, на shared хостинге. Были конечно кое какие проблемы у самого хостера, которые решались в общей сложности 2 недели… И вот появились первые заинтересованные пользователи, начали приглашать новых заинтересованных, лед тронулся… Спустя какое то время, начали приходить письма от самого хостера, мол вы используете процессорного времени больше чем положено 460 — 500 минут вместо 60, посему пришлось сделать коммьюнити закрытым — количество процессорного времени сократилось.
Спустя какое то время я обновил версию до 1.01, скачал и докупил несколько плагинов, шаблон, начал улучшать внешний вид сообщества и вот теперь пришёл к тому, что нужно переезжать с этого хостинга на что нибудь помощнее, да так, чтобы при этом открыть его для не зарегистрированных пользователей при этом оставив возможность регистрации только по инвайтам. Вся беда заключается в том, как бы это сказать: тематика сообщества довольно популярная и создавалось сообщество с перспективой как раз на большой онлайн, и теперь мне трудно представить сколько примерно уникальных человек будет посещать ресурс ежедневно, на одном из недавно реинкорнировавшимся, конкурентном ресурсе зарегистрировано 6 тыс пользователей, причем это тупо форум. И вот теперь я стал перед вопросом хостинга для такого сайта и выбором веб сервера для него.
Начало
Начал с веб сервера, опыта у меня в этом плане маловато, но надо же с чего то начинать, пробовал разные:
-голый apache как выяснилось не подходит из за того, что много кушает ресурсов.
-Nginx+Apache+PHP5, ставил по этому гайду доброволец сис админ проведя тестовую нагрузку siege'ом выявил что на моем коряво настроенном веб сервере с лайвстритом, на облаке от клодо с 14 ядрами + 256 — 768 оперативки мягко говоря одновременно могут находится 45 пользователей, но при 50 он уже падает. Как же так, совсем не то что я ожидал, хотя руки корявые у меня, скорее всего. Вообще получилось так, что конфигурацию некоторых параметров nginx, мне подсказал сис адми, а вот апач при этом имел дефолтные настройки из гайда, видимо поэтому и ложился так быстро. Вообще было что то наподобии worker process 8 + use epoll; +timer_resolution 100ms; А в апаче я изменил только в prefork MPM MaxClients 24 поменял на 1500.
-Nginx+PHP-FastCGI+Memcached — к сожалению работаю в ночное время и застать добровольца сис админа я уже не смог, зато после установки данного сервера на тот же clodo, хоть и с немного другими параметрами, я решил установить xcache, после этого перестал работать как memcache, так и xcache, даже после aptitude purge [], сайт стал открываться только после изменения кэша на файловый, что как я понял не приемлемо в моём случае, т.к. дисковые операции медленнее чем операции в оперативной памяти.
Что меня потом сподвигло прочитать вот такую вот заметку, то есть тут веб сервер как я понимаю выносит самые тяжелые фаилы для работы в оперативке, но мне не совсем понятно как быть с бэкапами, как своевременно делать на таком сервере бекап, чтобы если вдруг упадет питание ребутнувшись с помощью какого то костыля поднимался сервер с данными последнего бекапа?
Помимо всего этого, разумеется, стоит вопрос о выборе хостинга, я так понимаю для начала мне нужно смотреть в сторону vds, а дальше в сторону ds. Облако я сразу отсекаю, потому что если начнут досить то будет как в этом комментарии, то есть сгорят все мои кровные. С другой стороны как написано в комментарии пониже можно изначально взять DS, но при этом платить стабильно одну и ту же сумму 49 евро и не бояться, что ресурсы сгорят как на облаке, кстати видел почти аналогичный DS сервер за те же деньги в hetznet'e. В принципе 49 евро не так уж и много, тем более можно продавать ресурсы своим друзьям/знакомым/etc и тогда платить нужно будет гораздо меньше, единственный подводный камень который я обнаружил, это то что нужно в 1 месяц заплатить двойную сумму, 1 месяц + физ.установка сервера, уже думал брать его но распланировав бюджет для меня это была непреодолимая неожиданность и я воздержался от покупки в этом месяце, т.к. уже распланировал деньги.
Но в принципе это и хорошо, потому что для меня всё ещё загадка, какой же всё таки веб сервер лучше использовать под высоко посещаемый сайт на LS, вот поэтому и прошу вас поделится своим ценным опытом в данном направлении.
P.S. Просьба не разводить холиваров из этого топика.
58 комментариев
В RAM сохранять все немного опасно. Упадет питание — упадет все что было в энергозависимой памяти. Будете заново поднимать все в память, но только старую версию, ту которая еще была на HDD (еще раз напоминаю, все то что было в RAM пропадет). Конечно можно извращаться: пробовать по крону делать
нагрузку на серверсинхронизацию данных каждых n минут между RAM и HDD. Написать на баше скрипт который бы загонял необходимые данные с HDD в RAM (ну и что там еще нужно чтобы делал) и ставим в автозагрузку. Также надо не забыть, что RAM не такая ужрезиноваяобъемная как HDD.Мне кажется более рационально будет просто разместить все в RAID (на SSD) + вынести статику (картинки, видео, и т.п.) на поддомен (на отдельный сервер, рядом в стойку). Еще можно поставить рядом в стойку отдельный сервер и вынести туда БД.
2. Зачем пользовать nginx+apache? Ради .htaccess, который лень переписать на конфиг nginx'а?
Нет такого плюса. В конфигурации nginx + php-fpm последний доступен вообще только через сокеты. Ни одного преимущества в данной конкретной задаче апач не даст. С другой стороны, избавление от апача не ускорит сервер в разы, но определенный прирост будет. Мануал если что — livestreet.ru/blog/dev_documentation/10626.html
habrahabr.ru/company/clodo/blog/107445/
В комментариях там есть все.
А это на сладенькое:
Это при 70к зарегистрированных и среднем онлайне 350, так что ваши 200 вообще семечки, там любая самая простецкая настройка подойдет.
Посещаемость моего ресурса — до 500 в день. Сайт расположен на сервере clodo, оперативы 514мб-4г. ОС и сервак ставили специалисты clodo, я дальше никак не настраивал, ибо я ничего не шарю в этом. В итоге, все прекрасно работает пока и по деньгам выходит рублей 350-400 в мес.
Могу попасть под дос от конкурирующего ресурса, и деньги просто сгорят, будто это были живые посетители и хостингу будет абсолютно пофигу, он сошлется на то, что это были живые посетители и т.д. в наше время задосить не так уж и сложно, даже те же 300 мнимых пользователей которых я буквально на минуту натравил на сайт конкурента создал заметные задержки в работе сайта.
количество нужных ресурсов, можно взять почти за те же самые деньги на DS, да тут экономии никакой не будет конечно, но что мешает использовать неиспользуемые ресурсы DS для других сайтов, например сделать сайты друзьям, знакомым, etc…
Вы конечно извините, но я создал топик, чтобы узнать мнение людей у которых уже был подобный опыт ведения обслуживания и настройки веб сервера для LS под высокую нагрузку, а то, что вы сделали vds в клодо с ихними «настройками» ещё не говорит о том, что они идеальны, скорее всего вы просто создали vds ls с голым апачем, у них там такой есть, я даже пробовал поставить 2 таких в целях поинтересоваться чего же они там накрутили, но сколько не делал, процесс установки vds оканчивался ошибкой.
Например для 8 ядерного 8 воркеров — рекомендация, а 12 например — оптимум
2censured: 300 мнимых пользователей это вообще ни о чем, тот же атом с гигом на борту их сможет вполне потянуть, нагрузка здесь уже будет заметна и эффект от их появления в первый раз будет, а потом после подстройки опять будет ни о чем… При ошибках в создании vds надо было в саппорт писать…
бросайте это дело и идите читать про незакрытые коннекты с кипалайвом.
дам подсказки:
* сколько простаивающий воркер жрет памяти?
* сколько воркер с worker_connection = max отбирает процессорного времени с учетом того, что все коннекты для этого воркера находятся в состоянии keep-alive
* сюда же, сколько воркеров остаются рабочими и сколько при этом они потребяют процессорного времени?
* сколько нужно оперативной памяти для работы mysql при 80к соединениях и будет ли играть роль прирост памяти для кэша в размере одного простаивающего воркера?
* в теории 2.5 мб, в реальности от 8 до 56 мб, при наших 256 мб предоплаченых это важно
* это как сюда относится, вокер ест ресурс в любом случаи, а так как мы говорит про облако, то это лишние деньги на ветер
* это тут причем
* я смотрю вы про кеширование даже не слышали, это вам надо теории читать, для начала, плюс 80к написано чтобы показать что упереться в max connection, даже с 1 вокером сложно.
Берем среднее цифру размера вокера за 25 мб, то лишних 4 вокера займут 100мб памяти, которые вы позиционируете как созданные Вашим здравым смыслом. Очевидно, что они съедают половину доступной по умолчанию памяти и заставят владельца платить за воздух.
Вы вообще понимаете, что такое keep-alive?
Так же в цифрах и примера расскажите при чем здесь «незакрытые коннекты с кипалайвом.»
ajax-соединения с keep-alive убьют ваш воркер и вы потеряете процессорное время. ах нуда, каждый пользователь может создавать от 2 коннектов, так что 80к вы можете смело делить пополам. причем 80к — это ваши галюцинации, поскольку ядро линукса без тюнинга и патчей не позволит создать больше 65к соединений
можете дальше продолжать настраивать сервера строго по документации и мифическим 80к
Считайте…
65к соединений? Снова 5 балов, проблема в том у веб сервера соединения входящие, а не исходящие, проблема с исходящими в том что портов всего 65к и 1к из них заняты(рассказать под что?) и можно использовать только 64к. А теперь подкреплю свои слова ссылочкой, там без всяких патчей ядра на сервер принимаю 1 миллион соединений. Обратите внимание в комментариях есть вопрос А сколько можно принять в себя соединений? и ответ на него.
ЗЫ: А теперь возьмем Вашу теорию про 10к/2 соединений, а у Вас есть проекты на которых в один момент народу столько, что они сделают 5к соединений в один момент? Знаю что нет, а число вокерв делают равным числу процессор, для лучшей отзывчивости веб сервера пользователю.