LINUX.ORG.RU

Пожирание памяти популярными веб-феймворками


2

6

Кто-нибудь бенчил свои фреймворки? Сколько памяти пожирает он?

А нужно это для того, чтобы понять, на чем делать сайт под хостинг с 512 мегабайтами рамы и процом 400МГц.

Playframework2, Symfony2, Ruby on Rails, Django

Особенно интересно Playframework2, но у меня нету на нем ни одного достаточного сложного сайта, чтобы вот сейчас загнать в локальную виртуалочку и помучить httperf'ом. С одной стороны, умом я понимаю, что мегабайт 700 оно жрать обязано, плюс память на какую-нибудь БД (postgres поди мегабайт 300 жрет). Т.е. минимальный хостинг для Плея должен иметь гиг рамы. С другой стороны, в интернетах случаются люди, которые ставили лимиты и в 200 мегабайт, но при этом не отписывались о результатах.

★★★★☆

они небось первый плей без скалы уже в war гоняли, а не теперешнего монстра

anonymous
()

что за сайт-то?

вообще «делать сайт под хостинг» - странный подход, разве что визитку знакомому за пиво.

kelyar ★★★★★
()
Последнее исправление: kelyar (всего исправлений: 1)

поставь минималки в виртуалки да потести

RedPossum ★★★★★
()
Ответ на: комментарий от kelyar

визитку, знакомому, но за приличные деньги

stevejobs ★★★★☆
() автор топика

bottle.py можно взять

pi11 ★★★★★
()

Для примера можете бложек мой (ник+.ru) посмотреть. 800 мегагерц, 400 память. Джанго, кэша нет, ~70 человек в сутки плюс rss.

UPD: ах да, памяти оно ест меньше 30% при текущей нагрузке, если верить статистике хостера.

lampslave ★★
()
Последнее исправление: lampslave (всего исправлений: 1)

Кто-нибудь бенчил свои фреймворки? Сколько памяти пожирает он?

php.ini:

memory_limit 8M

студийная цмс.

anonymous
()
Ответ на: комментарий от lampslave

Если считать равномерно - десять человек в час. Если каждый сидит на сайте не более 6 минут, то получается, что в один момент времени на сайте не более 1 человека. Интересная статистика. Но в данном случае по ней ничего не скажешь.

Как-нибудь для интересу натрави на него httperf да глянь когда сервак захлебнётся :) И с чего именно он начнет захлебываться - с рамы, процессора, итп...

stevejobs ★★★★☆
() автор топика

Playframework2, Symfony2, Ruby on Rails, Django

Поцчему в списке нет Mojolicious или Catalyst? Это дискриминация!

anonymous
()
Ответ на: комментарий от stevejobs

Может быть и того меньше. По яндекс.метрике за последний месяц визитов 2600, просмотров 3800, среднее время 3 минуты. Но ведь и на визитке не больно-то много посетителей бывает. Или ваш знакомый сильно популярен в этих наших интернетах?

Я лучше почаще ссылочки буду везде постить :) Хотя, если виртуалку ещё не снёс, можно будет попробовать на ней.

lampslave ★★
()
Ответ на: комментарий от lampslave

Знакомый - это завод, производящий охранные системы, продаваемые в основном в России, но и по всему миру тоже. На визитке должна быть продукция, со всякими фичами типа фильтров по параметрам и визуальным диффом между мануалами к разной технике. На текущей визитке есть кнопка «скачать прайс», сейчас прайсы качают часто, предполагаю что на реальный сайт будет ощутимая нагрузка.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

А, вон оно как. Ну тогда конечно, нагрузка другая будет, да и визиткой я бы это не назвал.

lampslave ★★
()
Ответ на: комментарий от stevejobs

завод
по всему миру
будет ощутимая нагрузка
за приличные деньги

советую не подставлять знакомого и раскошелиться на что-то посерьезнее.

kelyar ★★★★★
()
Ответ на: комментарий от kelyar

тыщу лет без хорошего сайта жили, еще тыщу лет проживут

зайди на сайт техподдержки Thrustmaster, например. Это чуваки, джойстики производства которых есть в любом ларьке с компьютерным железом. Так вот их сайт поддержки - это хтмл-форма для IE 5, с одним полем воода и тремя ссылками. И ничего, посоны живут дай боже всем так жить.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от anonymous

Сайты-визитки пишутся на генераторах статических файлов.

например на Jakodorgen Pro ;)

user_id_68054 ★★★★★
()

Playframework2, Symfony2, Ruby on Rails, Django

по поводу Play я не знаю т.к. в ява-мире не шарю, все остальное «легко» потянет тучу юзеров на 512 рамы. Десятки тысяч. Сотню тысяч в день при кешировании :)

umren ★★★★★
()

как пример: у одного клиента на 512 VPS висят десять сайтов на PHP, (пара фреймворков, пяток битриксов, + еще какие-то самописки), посещаемость суммарно там около 50k в день на всех сайтах и ничего, работает :)

сам сдавал на джанге довольно нагруженный хелпдеск для интранета, около 50-100 конкурентных юзеров одновременно работало, 512 рамы тоже, норм работает.

вообщем проблем не будет, а если и будут то проблемы в коде.

umren ★★★★★
()
Ответ на: комментарий от ados

cast archimag

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

ados ★★★★★
()
Ответ на: комментарий от umren

(пара фреймворков, пяток битриксов, + еще какие-то самописки), посещаемость суммарно там около 50k в день

И это всё без оптимизации? Если с оптимизацией, то неинтересно (давно известно, что железо дешевле работы по программированию. если не хватает памяти - надо не оптимизировать, а воткнуть еще пару серверов). Если без оптимизации, то очень круто, хотеть!

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Минимальная оптимизация, писалось разными людьми, битрикс внутри себя это огромная большая неоптимизированная помойка.

Но я к тому, что под ваши задачи 1 фреймворк на скриптовом язычке может держать очень и очень много посещений. Не важно какой Symfony, RoR или Django, тут выбирайте по тому что «нравится». Хотя Симфони потормозней будет рельс и джанги, это точно, но в вашем случае не думаю что это критично :)

umren ★★★★★
()

Может рискнешь nginx + статика + C/C++/Go/Rust (whatever комплируемое) + sqlite ? SQLite для concurrent reading вполне покатит.

Раз ресурсы ограничены, то сделай front-end потолще, back-end потоньше, только выдача статики и минимальное rest api.

noomorph
()
Ответ на: комментарий от noomorph

Может рискнешь nginx + статика + C/C++/Go/Rust (whatever комплируемое) + sqlite

Из этого всего только Go подходит более-менее, есть микрофреймворки, но кучу занудных вещей придется писать самому, уж лучше взять Ruby on Rails или Django.

umren ★★★★★
()

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

umren ★★★★★
()
Ответ на: комментарий от kelyar

вообще «делать сайт под хостинг» - странный подход, разве что визитку знакомому за пиво

Плюсую этого оратора. Делать «сайт под хостинг» в наше время - тупняк даже для сайта визитки. Кстати, чтобы «знакомый за пиво» прочувствовал весь вложенный в проект труд и ценил полученное, нужно как раз таки заставлять его оплачивать сопутствующие расходы. В противном случае, скоро он/она передумывает и сайт уже нужен не ему, а, оказывается, тебе.

Sense
()
Ответ на: комментарий от umren

Из этого всего только Go подходит более-менее, есть микрофреймворки, но кучу занудных вещей придется писать самому

Это какие такие занудные вещи придётся писать самому?

Sense
()

Проводил такое исследование в отношении рельсов где-то полгода назад. Так вот, на минимальном амазоновском инстансе связка рельсы + мускуль + нгинкс + пассажир без кэширования выдаёт максимум 25 RPS. (Это был простенький инет-магаз без реги, если что.)

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

Но вот если поставить на фронт варниш (это ≈128 Мб), то то, что сзади будет уже практически неважно, имхо.

Apple-ch ★★
()
Ответ на: комментарий от Apple-ch

ВООООТ!!!

первый комментарий с цифрами!

ценно, спасибо

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от Black_Roland

Да, сейчас начал уже писать на Ноде. Точнее, на Sails - это сборник мидлвары для експресса. Но код, с кучей вложенных блоков лесенкой ОЧЕНЬ удручает...

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

Но код, с кучей вложенных блоков лесенкой ОЧЕНЬ удручает

Коллбеки что ли? На экспрессе (да и не только на нем думаю) можно на get и post вешать массив функций. В первой функции в res пишешь результат ее работы и вызываешь следующую (next). Так можно от лесенки избавиться. Но я серьезного ничего не писал, больше из любопытства, но контроллер получается примерно так:

// массив функций в экшене
exports.action1 = [
	function(req, res, next){
		var services = req.app.get("controlServices");
		var child_process = require("child_process");
		child_process.exec("systemctl is-active " + services.join(" "), function(error, stdout, stderr){
			res.locals.status = {}; // пишем данные для второй функции
			var status = stdout.split("\n");
			for (var i in services)
				res.locals.status[services[i]] = (status[i] == "active") ? true : false;
			next(); // вызываем следующую функцию
		});
	},

	function(req, res){
		res.render("list", {
			title: "Демоны",
			status: res.locals.status // забираем данные
		});
	}
]

// другой экшн
exports.action2 = function(req, res){
	
}
Экшн регистрируется так:
app.get("/", require("./controller").action1);
Или речь о другом?

Black_Roland ★★★★
()
Ответ на: комментарий от stevejobs

Sails - это сборник мидлвары для експресса

sails основан на express что ли?

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)

был хостинг с 500 метрами, джанга выпиливали всю память, от чего даже нельзя было зайти по ssh чтобы рестартануть ей и приходилось ребутить VPS, причём всё это было тестовое

переехал на на 1Gb, пока хватает

fMad ★★★
()
Последнее исправление: fMad (всего исправлений: 1)
Ответ на: комментарий от anonymous

Сайты-визитки пишутся на генераторах статических файлов.

Анонимус прав. Где на сайтах-визитках динамический контент? Максимум 5-6 страниц статичной информации о компании, продуктах, контакты и страница с ссылкой на прайс-лист.

Берете какой-нибудь Jekyll, делайте нескучный теймплейт, добавляете контент, на сервер заливаете статические страницы, маркетоидам даете FTP/SFTP доступ к директории с прайс-листом и все.

BigAlex ★★★
()
Ответ на: комментарий от stevejobs

Но код, с кучей вложенных блоков лесенкой ОЧЕНЬ удручает...

async какой-нибудь заюзай.

ritsufag ★★★★★
()
Ответ на: комментарий от fMad

был хостинг с 500 метрами, джанга выпиливали всю память, от чего даже нельзя было зайти по ssh чтобы рестартануть ей и приходилось ребутить VPS, причём всё это было тестовое

как-то слабо верится, что за связка деплоя, направленность приложения, что конкретно жрало память?

umren ★★★★★
()
Последнее исправление: umren (всего исправлений: 1)
Ответ на: комментарий от stevejobs

Используй оператор "goto"

stevejobs

Но код, с кучей вложенных блоков лесенкой ОЧЕНЬ удручает...

От множества вложенных блоков можно избавиться, если правильно применить оператор «goto».

anonymous
()

Тему не читал. Любой. 512 рамы это дофига, если у тебя там не будет дикой посещаемости и ты нигде не накосячишь. А если накосячишь, то и с гигабайтами рамы можно положить.

Suntechnic ★★★★★
()
Ответ на: комментарий от Bad_ptr

Ну почему ненужно. Нужно. Другое дело, что это слишком хорошо для вэб. Годные вещи в вэб не приживаются.

Suntechnic ★★★★★
()
Ответ на: комментарий от umren

смотрите сами: http://breys.ru/tmp/django-vps.png и это при том, что нагрузки на эту джангу вообще ни какой

я недавно создавал тему про эту VPS, там джанга сегфолтилась на старом дебиане, сейчас переехал на хостинг с убунтой

наверно я её пока не умею готовить, но и ничего не химичу. поставил пипом, гитом качнул апликуху простенькую и всё

fMad ★★★
()
Последнее исправление: fMad (всего исправлений: 1)
Ответ на: комментарий от umren

да он то пускай отжирает, там у него дефолтный конфиг

и над ним наверно 5 средне нагруженных сайтов apache/cgi/python работают

за калькулятр спасибо

fMad ★★★
()
Ответ на: комментарий от fMad

Да у тебя же АПАЧ! Ещё бы джангу через mod_python пускал.

x3al ★★★★★
()

Для примера вывод top с одного из front-end сервера Ленты.ру, где крутится приложение RoR:

PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
20   0  664m 180m 3484 R 47.3  0.4 732:47.56 ruby
20   0  598m 178m 3488 S 31.5  0.4 730:57.41 ruby
20   0  595m 176m 3488 S 21.9  0.4 710:57.69 ruby
20   0  592m 173m 3488 S 13.2  0.4 729:28.12 ruby
20   0  592m 173m 3484 S 14.9  0.4 717:11.09 ruby
20   0  592m 173m 3484 R 31.1  0.4 774:33.58 ruby
20   0  592m 173m 3488 S 31.1  0.4 773:00.26 ruby
20   0  592m 172m 3488 S 27.5  0.4 780:17.47 ruby
20   0  591m 171m 3488 S  7.9  0.4 726:33.24 ruby
20   0  591m 171m 3488 R 10.3  0.4 718:09.22 ruby
20   0  583m 164m 3488 S 10.3  0.3 734:54.23 ruby
20   0  579m 159m 3484 S  6.3  0.3 730:19.72 ruby
20   0  394m 110m 4812 S  0.0  0.2   0:09.50 ruby

Вывод apachetop, натравленного на access.log (запросы только к приложению):

last hit: 18:55:11         atop runtime:  0 days, 00:01:15             18:55:12
All:         9085 reqs ( 121.1/sec)        170.8M ( 2332.3K/sec)      19.3K/req
2xx:  8284 (91.2%) 3xx:     521 ( 5.7%) 4xx:   280 ( 3.1%) 5xx:     0 ( 0.0%)
R ( 30s):    3465 reqs ( 115.5/sec)         62.3M ( 2126.4K/sec)      18.4K/req
2xx:  3160 (91.2%) 3xx:     192 ( 5.5%) 4xx:   113 ( 3.3%) 5xx:     0 ( 0.0%)

kavkaz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.