LINUX.ORG.RU
ФорумTalks

[noob] вопрос о потоках

 


0

0

Сколько потоков может держать приложение без особых потерь производительности, если скажем перманентно активных из них - сотня, и нужно чтобы в памяти лежало несколько тысяч? Вопрос - сколько их может там лежать, скажем сотня тысяч, миллион? Подсознательно чувствую, что вопрос тупой, надеюсь на доки и маны по теме.

★★★★★
Ответ на: комментарий от bibi

Хм. А сервер баз данных переживет multimaster репликацию? Т.е. да, можно использовать, online транзакции, но помойму это есть только в mnesia

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

> 8ми ядерного ксеона

Але, придурок. Xeon — это ЗИОН.

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

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

Вам не кажется, что таким образом вы поставите СУБД раком ещё надежней?

hint: оптимизатор делит свободную память между запросами. Чем больше памяти отдать - тем лучше поделит.

Запустить два движка одновременно - отличный способ пустить себе пулю в лоб, они одеяла будут тянуть друг у друга. Если, конечно, лимиты не настраивать - но смысл?

Одно ведро == Одно СУБД.

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

Да, влияет. Вы делаете сфирический дизай с 10 тысячами потоков? Вам бы учесть архитектурные ограничения, немного, попа была бы целей, в целом

Я очень люблю и ценю свою попу и уж если что-то и делаю то сугубо так, чтобы её было сухо, тепло и уютно. Причем 24x7x365. Поверьте, программы разрабатываете не только вы и, как это ни странно, прекрасно радостно и с песнею они работают и в других местах тоже :)

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

И кстати, что значит зашареный процесс?

это к тому что для организации потоков в linux используются унаследованные от материнского процесса дочерние, разделяющие адресное пространство, файловые дескрипторы, обработчики сигналов, whatever :)

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

> Мужик, это мускуль, в нем нет оптимизатора

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

Я правда не знаю зачем назвали «СУБД» систему, у которой лишь nested loops в комплекте...

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

не знаю, я интересуюсь программи которые работают на компьютерах. Если ваши программы работают в других местах, то я не понимаю причин по которым вы тут нас улыбаете!

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

Вам не кажется, что таким образом вы поставите СУБД раком ещё надежней?

Запустить два движка одновременно - отличный способ пустить себе пулю в лоб, они одеяла будут тянуть друг у друга. Если, конечно, лимиты не настраивать - но смысл?

Причем здесь два движка? Система состоит из десятков независимых серверов. На каждом - своя часть в т.ч. и базы. По базе на сервер.

Одно ведро == Одно СУБД.

К.О? :)

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

<q>Я очень люблю и ценю свою попу и уж если что-то и делаю то сугубо так, чтобы её было сухо, тепло и уютно. Причем 24x7x365. Поверьте, программы разрабатываете не только вы и, как это ни странно, прекрасно радостно и с песнею они работают и в других местах тоже :)</q> 10 000 потоков? А можно посмотреть примеры ваших работ, или хотя бы объяснение - НАХУЯ 10000 потоков в приложении? Правда интересно.

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

mysql это не СУБД, это notepad с sql интерфейсом.

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

>Причем здесь два движка? Система состоит из десятков независимых серверов. На каждом - своя часть в т.ч. и базы. По базе на сервер.

Вы хотите сказать, что на одной какой-то машине открыто 10 000 подключений к другим серверам?

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

> Причем здесь два движка? Система состоит из десятков независимых серверов. На каждом - своя часть в т.ч. и базы. По базе на сервер.

какие субд умеют мультимастер репликацию? Или как вы решили все это сделать?

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

10К потоков сожрут примерно все ресурсы современного процессора на context switch.

Хотя может что-то останется.

Хорошее, годное, приложение, которое работает в других местах!

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

http://jan.kneschke.de/2008/9/9/async-mysql-queries-with-c-api/

Digging a bit deeper you discover that mysql_send_query() and mysql_read_query_result() are public, but undocumented. Well, but that doesn't stop us.

Не знаю как вас, но для меня указанного замечания более чем достаточно, чтобы дальше не читать. Что-то в этом роде я и ожидал.

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

> какие субд умеют мультимастер репликацию? Или как вы решили все это сделать?

PostgreSQL вроде master-master умел. Плюс никто не мешает шардировать базу - тогда из фронтенда нужно connection до каждого instance'а держать. Но зачем там 10 000 потоков - я хоть убей не понимаю. Если нагрузка там велика - то что-то нужно менять Либо людей, либо архитектуру.

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

я и 30К tcp сокетов открывал, активных. Жили как-то.

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

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

ЩИТО? Мне всю жизнь казалось, что единственная разница - это адресное пространство сущности. У каждого процесса своё, а треды шарят.

Вы точно апеллируете к тому сообщению на которое отвечаете? если - да, уточните что конкретно Вас не устраивает

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

Ага, ага. А если у нас 8 master серверов?

А если у нас еще 8 backend? И 30 frontend?

Тебе петлю завязать или сам справишься?

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

какие субд умеют мультимастер репликацию? Или как вы решили все это сделать?

Базы независимы друг от друга. By design. Ибо им нечего делить. Но назовем его процессинговый не важно чего сервер опять же by design работает с несколькими серверами баз данных. Но от того, что они, базы, друг с другом не пересекаются, ему, серверу, ни разу не легче. Сотня соединений в одну базу, сотня в другую ещё пара сотен туда и пара туда. И все - синхронные. By API. И что будем делать?

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

> Вы точно апеллируете к тому сообщению на которое отвечаете? если - да, уточните что конкретно Вас не устраивает Меня флаги смутили Про адресное пространство Вы и сам уже ниже написали

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

> Базы независимы друг от друга. By design. Ибо им нечего делить. Но назовем его процессинговый не важно чего сервер опять же by design работает с несколькими серверами баз данных. Но от того, что они, базы, друг с другом не пересекаются, ему, серверу, ни разу не легче. Сотня соединений в одну базу, сотня в другую ещё пара сотен туда и пара туда. И все - синхронные. By API. И что будем делать? Убить себя апстену?

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

А мы разве тут про windows?

именно с таких слов начинаются сложности с портированием приложения N месяцев спустя :)

кроме того, пока не указано обратное, почему бы и не рассматривать и их тоже?

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

Мужик, не парься, это вообще мой виртуал. Или я его виртуал.

И вообще, мы тут голодные, нам суши не дают, из-за этого мы вас и кушаем!

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

Эм. Как это нечего делить? Данные?

Я вот, на вашем месте, подумал бы, что вы делаете вообще.

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

Не, ну нихуя себе одинаково.

где я говорил «одинаково»? :)

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

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

Ага, меня будут сильно карать в милиции за поделку IP!

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

10К потоков сожрут примерно все ресурсы современного процессора на context switch. Хотя может что-то останется.

Ну не 'сожрут' в терминах обывателя т.е. mplayer как-то но работать будет. Если они будут тупо крутить пустой цикл. Но вот ничего полезного от этих 10к потоков добиться не удастся :)

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

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

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

> Ну не 'сожрут' в терминах обывателя т.е. mplayer как-то но работать будет. Если они будут тупо крутить пустой цикл. Но вот ничего полезного от этих 10к потоков добиться не удастся :)

Давайте я расскажу, что я понял. У вас 100 (сто) серверов, на каждом запущен 1 (один) mysql. Есть «процессинговый сервер», у которого до каждого из серверов открыто 100 (сто) подключений. Я ничего не перепутал.

Вопрос «а нахуя?» как бэ висит в воздухе.

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

> Мужик, сегодня субота. Все чоткие пацанчики на районе сидят уже в своих шалашиках, а их чоткие подруги делают им яйишницу абильно поливая ее майонезиком!

И фигачат опердени на erlang!

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

Ты не понял, это такой хитрый шардинг данных. База не умеет мультимастер. А подрочить сидя как-то хочется.

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

А что в нашей жизни documented?

'В жизни' - это мы лучше переместимся в тред 'за жизнь'. Относительно же конкретно того же мускуля - это минимальная совместимость API и ABI хотя бы в минорных релизах. Что, очевидно, никем и никак не гарантируется на уровне описанных в статье хаков. Обнаружить же одним прекрасным утром что после обновления libmysqlclient с версии 5.0.x на 5.0.x+1 вся система полегла - спасибо, я лучше стоя постою.

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

> Ты не понял, это такой хитрый шардинг данных. База не умеет мультимастер. А подрочить сидя как-то хочется.

10 000 потоков нахуй положат всю систему. Не говоря уже о том, что 1 (одна штука) машина физически не сможет нагрузить все сто серверов.

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

>'В жизни' - это мы лучше переместимся в тред 'за жизнь'. Относительно же конкретно того же мускуля - это минимальная совместимость API и ABI хотя бы в минорных релизах. Что, очевидно, никем и никак не гарантируется на уровне описанных в статье хаков. Обнаружить же одним прекрасным утром что после обновления libmysqlclient с версии 5.0.x на 5.0.x+1 вся система полегла - спасибо, я лучше стоя постою.

http://www.kernel.org/doc/man-pages/online/pages/man2/eventfd.2.html

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

Хм. А как влияет документированость API на совместимость по ABI?

Вообще, любая система, пишется под конкретные версии програм. Под них прогоняются перфоманс тесты и пишется для отдела эксплуатации книжечка, как это все трахать...

Вот вы хотите обновить libmysqlclient, вы верите что он станет лучше? А вы верите что там багов новых не будет? А что регрессий?

А зря.

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

Давайте я расскажу, что я понял. У вас 100 (сто) серверов, на каждом запущен 1 (один) mysql. Есть «процессинговый сервер», у которого до каждого из серверов открыто 100 (сто) подключений. Я ничего не перепутал.

Я бы сказал N и M. Оба числа > 1.

Вопрос «а нахуя?» как бэ висит в воздухе.

Вот я сейчас все брошу и буду на десять страниц давать описание системы. Посреди ночи. Да даже если и полудня. Нет уж, извините, я не стану этого делать. Не вижу в этом ни малейшего смысла. Вполне достаточно указанных граничных условий. Если вы не в состоянии с ними справиться - ничего страшного. Другие люди вполне в состоянии и у них все работает и все счастливы безмерно :)

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

Есть два пространства выполнения. User space и kernel space. Твой любимый браузер сидит в user space. Когда он читает данные из сокета, он вызвает read. read нужно переключиться в kernel space что бы вызвать syscall который и скопирует данные из буферов сокета в выделеную тобой память. В момент переключения будут сброшены все-все-все кеши.

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

> смотря чем. Можно seti встроить. Что бы в моменты простоя!

Давай так. 1) Пусть запросы тяжелые. Каждый сервер будет тащить максимум 2-3 тяжелые таски. Нахуй 100 подключений до сервера? 2) Пусть запросы лёгкие. 10 000 лёгких запросов через TCP/IP стек устанут продираться - не проще повесить морду на каждый сервер, и делать тупой редирект запросов?

В итоге я не понимаю, нахера нам ОДНОВРЕМЕННО 100 подключений к КАЖДОМУ серверу и 100 серверов воткнутых в один.

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

при дёргании fork() создаётся дочерний процесс, который получает копии (да я знаю про «коров») данных, стека, кучи, по сему можно сказать что дочерний процесс __наследуются__ от материнского (хоть это и не распространённый термин), так пойдёт?

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