Guest User

Untitled

a guest
Jul 15th, 2017
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 29.09 KB | None | 0 0
  1.  
  2. LINUX.ORG.RU
  3.  
  4. добро пожаловать, www_linux_org_ru
  5. Новости
  6. Галерея
  7. Форум
  8. Трекер
  9. Уведомления (5)
  10. Поиск
  11.  
  12. Сообщение удалено Pinkbyte по причине 'Блокировка пользователя с удалением сообщений (0)'
  13. Форум — Development
  14. Mythbusters: c10k, «сдохнет от 10/100 тредов» и прочее.
  15.  
  16. c++, kernel, sockets, threads, си
  17.  
  18. 0
  19.  
  20. 1
  21.  
  22. Начнём. Очередной пятизвёздочный проиграл погоны. Обычно я не пишу подобные темы, но тут особенный случай. По воле виновника.
  23.  
  24. Первое; почему эксперт проиграл ещё до начала. Все попытки есть не более чем пример неуверенности и трусости. Почему?
  25.  
  26. Начнём сначала.
  27.  
  28. Было заявлено:
  29.  
  30. Больше 200–300 уже будут доставлять проблемы. man c10k problem.
  31.  
  32. Эксперт пруфцанул c10k. Расчёт прост - c10k достаточно распространённый миф и с ним проблем быть не должно. Ошибка первая.
  33.  
  34. На что был дан ответ:
  35.  
  36. c10k протух и не актуален уже десять лет.
  37.  
  38. Тут некоторые начнут мне говорить, что я балабол и в отличии от эксперта, который пруфцанул хоть чем-то, ничем не пруфцанул. На самом деле это враньё - ведь в рамках контекста уже было доказано то, что ядро спокойно может спокойно шедулить 100к тредов и более. Этого уже достаточно для того, чтобы понимать - 10к тредов для ядра ничто.
  39.  
  40. Ответ был следующим:
  41.  
  42. Ну давай сделай веб-сервер по принципу одно соединение — один тред. Посмотрим, сколько он выдаст и когда он загнётся. Сравниваем с nginx. Или ты сразу из треда улетаешь? ^_^
  43.  
  44. Тут уже есть сразу несколько манипуляций, которые заранее определяют проигрыш эксперта. Ведь, если ты уверен в победе - зачем ты манипулируешь?
  45.  
  46. Нулевое - это то, что у вас за манипуляцию не котируется, поэтому я её не учитываю. С какого хрена условия различны. Почему один должен «делать вебсервер», а другой не должен? Мотивация манипуляции проста - определить за пруф то, что оппонент делать не будет по причине слишком большой затраты времени на это.
  47.  
  48. Первое - подмена понятий. c10k не имеет никакого прямого отношения к вебсерверу. Мотивация проста и была определена выше. Прикрутить к пруфу как можно больше не относящихся к сути задач, тем самым свести на нет возможность оппонента к ответу.
  49.  
  50. Второе - подмена понятий. Изначально определялась что? «загнётся» - т.е. «не будет работать». В данном случае эксперт начинает ставить уже совершенно другую задачу - «победить нгинкс в производительности». Мотивация всё та же.
  51.  
  52. Далее эта песня будет продолжать до бесконечности. «а нгинкс может в пхп, а твой не может» и прочее. Основание для подобного я определю ниже и примеры предоставлю.
  53.  
  54. На что был дан ответ:
  55.  
  56. c10k - это про 10к коннектов, а не про нгинкс. >>Работоспособность 10к тредов доказана? Доказана.
  57.  
  58. Раскрытие 2-х манипуляций вкупе с апелляцией к моим доказательствам на тему «одновременной работы 100к тредов». Одновременная работа 10к тредов доказана. Из этого уже делается вывод, что никаких проблем нет. Ведь основная проблема подхода «тред на коннекшен» в том, что «много тредов „загнуться“», но уже доказано то, что они не загнуться.
  59.  
  60. А раз других причин нет - значит требования несостоятельны. И опять же - мотивация их одна. Выше она уже была определена.
  61.  
  62. Ответ:
  63.  
  64. А на простенькой задаче лапки поднял и что-то там про работоспособность мямлит. Нет, пока не покажешь рабочий пример, ты просто балабол.
  65.  
  66. Т.е. пошла детсадовская попытка взять меня «на понт» вкупе с игнорированием всех моих доводов против. Тут уже фиксируется слив.
  67.  
  68. Но продолжим. Я пропускаю то, где я отвечал всё то же самое, что писал выше. В результате:
  69.  
  70. Моги. Возьми Apache старенький, например, и выжми на нём обработку десяти тысяч соединений одновременно.
  71.  
  72. Эксперт признал несостоятельность своих заявлений. Здесь замаскирована очередная попытка слиться. Выкати я апач, то эксперт просто бы слился на «нгинкс быстрее».
  73.  
  74. Ответ:
  75.  
  76. Я уже обосновал тут то, что 10к тредов спокойно работают. Мне пойти тебе хелворд написать? Ты не можешь из А вывести Б?
  77.  
  78. Тоже самое, что я уже писал выше. Несостоятельность вывести экспертом А из Б зафиксирована.
  79.  
  80. Ответ:
  81.  
  82. У тебя уже было времени чтобы десять раз его написать. Но что-то я не вижу кода. Ты хотел взять готовый код, так бери. Чего на попятную пошёл? Погуглил-почитал и понял, что сморозил, а теперь пытаешься выгородиться? :-D
  83.  
  84. Очередная попытка взять «на понт». Эта потуга очень показательна, позже мы к ней вернёмся.
  85.  
  86. Далее я попросил определить условия того, что я, собственно, должен был «уже десять раз написать».
  87.  
  88. HTTP реверс-прокси, за которым один медленно отдающий данные бекенд. Твой реверс-прокси должен адекватно обрабатывать 10 тысяч одновременных подключений. Для определённости бекенд отдаёт файл длиной 8192000 байт с ограничением скорости в 8192 байта в секунду. Твоя реализация должна обрабатывать каждое соединение в отдельной нити. Полной реализации HTTP не требуется, допустима реализация подмножества HTTP/1.0. Достаточна реализация identity кодировки передачи.
  89.  
  90. Очередной подтверждение моих слов. Эксперт продолжает пользоваться подменой понятий, отождествляя c10k с вебсервером. Ему это было указано, но он благополучно всё проигнорировал и слился. Тут опять же можно только констатировать слив.
  91.  
  92. Так же вкупе с этим эксперт используется и второй манипуляцией. Пытаясь напихать мне побольше не относящихся к теме условий. К этому добавляется ещё дополнительная мотивация. Эксперт пытается определить для себя пути к отступлению. Ведь даже если я захочу потратить на этот бред своё время, то можно сколько угодно меня мурыжить. Ведь он не определил границы реализуемого, а значит можно сколь угодно тянуть время и рассказывать мне то, что я реализовал меньше, чем нужно.
  93.  
  94. Так же тут добавляется третья манипуляция. Естественно, эксперт несёт эту херню автоматом и не понимает скрытых мотиваций - его основная мотивация спасти свою жопу. Манипуляция заключается в придумывании новых условий, которые по мнению эксперта являются определяющими неработоспособность «тред на коннект».
  95.  
  96. Ведь никакие «байты в секунду» ни на что влиять не могут, т.к. никаких «байтов в секунду» не существует на уровне юзерспейса. Но это ладно. Мотивацию я уже определил выше. Имея возможность выкатить без оснований любое условие - мы можем утверждать всё что угодно. Надо понимать, что никакие условия просто так не ставятся. Ведь если условия есть - значит без них всё работает. Таким образом это и есть то обоснование «пхп не запустил - не засчитано».
  97.  
  98. Далее от меня последовало разъяснение всего того, что разъяснял выше, а так же:
  99.  
  100. В рамках c10k определяется одновременную обработку 10к сокетов. Трепут никак не определяется. Никаких файлов, никакой другой херни нет. Никакого хттп, вебчика и прочего нет.
  101. Поэтому ты, либо идёшь и правишь википедию, либо сливаешься из треда. Обработку 10к сокетов я выкачу. И не забывай про звёзды.
  102.  
  103. На этом приключения нашего эксперта закончены. Либо он проиграл, либо правит википедию. Ведь пока он не связал логический свои требования с контекстом - все его требования пыль. И если раньше он мог съезжать( что он и делал) на то, что «все это итак знают» и «я это доказывать не должен», либо «ты просто идиот», то тут такого уже не прокатит.
  104.  
  105. Если ты не в состоянии на примитивном уровне реализовать HTTP, ты просто ноль. На самом деле, это условие облегчает тебе работу, так как для тестов можно переиспользовать уже существующие инструменты.
  106.  
  107. Далее опять пошли попытки взять «на понт». В любом случае - любой уход от ответа - есть слив. И это уже было зафиксировано десять раз.
  108.  
  109. Подобные заявления:
  110.  
  111. Вот ты ещё соломки подстелил. Да, проблема в подходе есть. Только вот она возникает при переходе от миллиона к десяти миллионам. Не пытайся прикрыться этим при обработке 10k потоков.
  112.  
  113. Я разбирать не буду. Тот кто не поймёт - тот не поймёт, а кто может - итак всё понял без моих объяснений. Но всё же напишу. Проблема в сокетах не в коннекшенах, а в трупуте. Пациент просто не понимать того, о чём пытается болтать. Как можно нести подобную херню, пытаясь рассуждать об мультиплексинге, который как раз-таки то и делает, что определяет несостоятельность сокетов как api.
  114.  
  115. Это типичные потуги всех балаболов, которые только и могут что - манипулировать. Ведь я должен что сделать? Я должен показать, что обработка 10к коннекшенов в 10к тредов работает и работает нормально. Остальное меня волновать не должно. И меня оно не волнует. И если аудитория использует и является жертвами подобных манипуляций - пичально и глупо.
  116.  
  117. Ну а по теме. https://pastebin.com/xk37uhcS - клиент, https://pastebin.com/RVHfBkuc - сервер. 10к тредов, 10к коннекшенов и 400крпс. И в очередной раз, очередной эксперт уплыл вместе со своими погонами и звёздами.
  118. saifuluk
  119. 12.07.2017 6:36:42
  120. ← Немного слов про умные компиляторы
  121. Хранение ресурсов приложения в git →
  122.  
  123. Где ссылка на драму?
  124. peregrine ★★★★★ (12.07.2017 6:40:14)
  125.  
  126. Ссылка
  127.  
  128. Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
  129. Ответ на: комментарий от peregrine 12.07.2017 6:40:14
  130.  
  131. Изи гуглится, а так - www.linux.org.ru/forum/development/13512175/page1#comment-13517429 и далее по треду.
  132. saifuluk (12.07.2017 6:43:48)
  133.  
  134. Привет. Лучше бы ты вместо самоутверждения на ЛОРе накатал статью годную, развеющую «миф» о 10к коннектов, с демонстрацией различий в сложности организации кода, латенси, трупута, как на многопоточный код повлияют блокировки (ведь сервер часто имеет общий для клиентов r/w стейт), как быть с сотней тысяч, с миллионом соединений. Можно даже вдаваться в подробности, как разные подходы аффектят ядро, процессор и сетевую карту, если знаешь об этом. Ну то есть я не хочу сказать, что ты нам что-то обязан или не прав в своих утверждениях, но вся вот эта простыня — пустая болтовня, которая не приведёт ни к какому конструктиву, и по сути трата времени.
  135. staseg ★★★★★ (12.07.2017 7:08:16)
  136.  
  137. Ссылка
  138.  
  139. Сообщение удалено utf8nowhere по причине (0)
  140. Ответ на: комментарий от staseg 12.07.2017 7:08:16
  141.  
  142. Лучше бы ты вместо самоутверждения на ЛОРе
  143.  
  144. Очередной пятизвездочный выкатил требования.
  145. utf8nowhere ★ (12.07.2017 7:20:20)
  146.  
  147. Поздравляю ТС'а - он таки себе что-то в этом Интернете доказал. Молодец, так держать! Все тебя любит, уважает и долго будет помнить твою эпическую победу.
  148. anonymous (12.07.2017 7:24:36)
  149.  
  150. Ссылка
  151.  
  152. Ответ на: комментарий от staseg 12.07.2017 7:08:16
  153.  
  154. Затести код. И что бы соединения не просто ping->pong и всё, а что-то туда обратно передавалось на каждое соединение 500кб трафика от сервера и 100 от клиента.
  155. Dron ★★★★★ (12.07.2017 7:30:17)
  156.  
  157. Ссылка
  158.  
  159. Ответ на: комментарий от staseg 12.07.2017 7:08:16
  160.  
  161. Тьфу, не тебе, извини ☺
  162. Dron ★★★★★ (12.07.2017 7:30:45)
  163.  
  164. Ссылка
  165.  
  166. Ответ на: комментарий от staseg 12.07.2017 7:08:16
  167.  
  168. самоутверждения
  169.  
  170. Неверно. Я не буду рассказывать почему.
  171.  
  172. как быть с сотней тысяч, с миллионом соединений.
  173.  
  174. Выкинуть сокеты и ядро? Только так.
  175.  
  176. Ну то есть я не хочу сказать, что ты нам что-то обязан или не прав в своих утверждениях, но вся вот эта простыня — пустая болтовня, которая не приведёт ни к какому конструктиву, и по сути трата времени.
  177.  
  178. Она полезна. Ведь цель её не в том, чтобы рассказать как надо, либо что-то ещё. Цель её - показать то, что не стоит верить всему тому, что написано в интернете. Сколь бы «авторитетным» не был убеждающий вас в чём-то его слова значит не более, чем слова рандомного рандома.
  179.  
  180. Не всё то, что было актуально 20лет назад является актуальным сейчас. Таким мифов очень много. Сисколы медленные, 100 тредов ставят ядро раком и прочее. В них верит очень много людей.
  181.  
  182. А «пятизвёздочный» - это пример того, что авторитеты мало что стоят. И мотивация их к обману и манипуляциям не меньшая, чем у других. Вернее ещё большая. И не важно в чём причина - впарить кому-то го, либо оправдаться на лоре.
  183.  
  184. А «как делать надо» - это совершенно другая тема. Тут можно придумать сколь угодно много критериев и для всех решение будет разным. Для 99.9% случаев вообще существует только одно решение - брать что есть.
  185.  
  186. А проповедовать на тему «как работать с миллионами» я не могу. Таким задач передо мною не стояло и я их не решал. Я лишь могу из А вывести Б, а после показать, что это действительно так.
  187.  
  188. Встанет передо мною задача подобная - я напишу.
  189. saifuluk (12.07.2017 7:41:29)
  190.  
  191. Ссылка
  192.  
  193. Ответ на: комментарий от anonymous 12.07.2017 7:24:36
  194.  
  195. Почему вы всегда всё пытаетесь превратить в цирк? Меня не волнует ни победа, ни интернет. Я всегда готов от неё отказаться.
  196. saifuluk (12.07.2017 7:43:36)
  197.  
  198. Ссылка
  199.  
  200. Ответ на: комментарий от saifuluk 12.07.2017 7:43:36
  201.  
  202. Меня не волнует ни победа, ни интернет. Я всегда готов от неё отказаться.
  203.  
  204. А вот фиг, не получится - тема уже создана, заявка на победу подана, пахнет горячем и слышно эхо взрыва. :)
  205. anonymous (12.07.2017 7:50:03)
  206.  
  207. Ссылка
  208.  
  209. Ответ на: комментарий от saifuluk 12.07.2017 7:41:29
  210.  
  211. Она не полезна. Заявляю тебе как абсолютно незаинтересованна в вашем споре сторона. Потому что ты ничего не показал в итоге. Ведь вроде никто не спорит, что хоть как-то оно пережует сколько угодно дохрена неблокирщихся потоков. Вопрос в цене. Например если мы на порядок упростим код ценой 20% производительности, то это абсолютно acceptable для подавляющего числа задач.
  212.  
  213. ЗЫ Я почему-то думал, что «миф» про 10к коннектов — это про соснулость select'a против (e)poll, а не про потоки :)
  214. staseg ★★★★★ (12.07.2017 7:52:36)
  215.  
  216. Ссылка
  217.  
  218. Поддерживаю staseg, если у вас есть время, желание, пожалуйста, оформите статью или серию статей, где вы выложите и разжуете свои мысли, - с удовольствием почитаю и подниму свой уровень знаний.
  219. Silerus ★ (12.07.2017 7:57:33)
  220.  
  221. Ссылка
  222.  
  223. Ты забыл i-rinat позвать. Привет i-rinat ☺
  224. Dron ★★★★★ (12.07.2017 8:02:47)
  225. Последнее исправление: Dron 12.07.2017 8:03:18 (всего исправлений: 1)
  226.  
  227. Ссылка
  228.  
  229. Молодец ТС, настоящий джедай.
  230. rumgot ★★ (12.07.2017 8:18:07)
  231.  
  232. Ссылка
  233.  
  234. #define safe_call(call) safe_call(call, #call)
  235.  
  236. Не понял! А это еще зачем?
  237. shkolnick-kun ★★ (12.07.2017 8:23:03)
  238.  
  239. Ссылка
  240.  
  241. Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
  242. Ответ на: комментарий от staseg 12.07.2017 7:52:36
  243.  
  244. Потому что ты ничего не показал в итоге.
  245.  
  246. Я всё показал.
  247.  
  248. Вопрос в цене. Например если мы на порядок упростим код ценой 20% производительности, то это абсолютно acceptable для подавляющего числа задач.
  249.  
  250. Код на потоках проще.
  251.  
  252. Вопрос не в цене - это манипуляция. Если бы был вопрос в цене - всё было бы совершенно иначе. Нгинкс у нас является пускалкой для пхп. 99.999% всего кода даже близко не упираются в разницу между потоками/не потоками. Да и там 10к соединениями не пахнет.
  253.  
  254. Тут место для ещё одно манипуляции. Изначально под соединением имеется ввиду АКТИВНЫЕ соединения, но сейчас всё дошло до такого маразма, что уже давно активные/не активные не различают.
  255.  
  256. Никакой хелворд не может выдать 10к рпс, а значит там по определению 10к активных соединений быть не может.
  257.  
  258. Тем более в контексте хттп это выглядит наиболее смешным.
  259.  
  260. Поэтому вопрос именно в возможности. Всё остальное противоречит наблюдаемой реальности. Возможность показана. Изначально утверждалась невозможность.
  261. saifuluk (12.07.2017 8:24:05)
  262. Ответ на: комментарий от rumgot 12.07.2017 8:18:07
  263.  
  264. Не джедай, а Царь.
  265. anonymous (12.07.2017 8:27:39)
  266.  
  267. Ссылка
  268.  
  269. Ответ на: комментарий от saifuluk 12.07.2017 7:41:29
  270.  
  271. А «пятизвёздочный» - это пример того, что авторитеты мало что стоят. И мотивация их к обману и манипуляциям не меньшая, чем у других. Вернее ещё большая. И не важно в чём причина - впарить кому-то го, либо оправдаться на лоре.
  272.  
  273. «Пятизвездочный» - это просто чувак, который давно на лоре. У тебя комплексы чи шо? )
  274. vasily_pupkin ★★★★★ (12.07.2017 8:28:09)
  275.  
  276. Ссылка
  277.  
  278. Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
  279. Ответ на: комментарий от shkolnick-kun 12.07.2017 8:23:03
  280.  
  281. Не понял! А это еще зачем?
  282.  
  283. Для того, чтобы получить контекст вызова. В данном случае строку вызова. Так же можно получить номер строки и прочее.
  284.  
  285. write(accept_fd, it, 1024) == -1, errno(104) == Connection reset by peer
  286.  
  287. saifuluk (12.07.2017 8:34:23)
  288. Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
  289. Ответ на: комментарий от vasily_pupkin 12.07.2017 8:28:09
  290.  
  291. «Пятизвездочный» - это просто чувак, который давно на лоре. У тебя комплексы чи шо? )
  292.  
  293. Пятизвёздочный, в данном случае, это кодовое имя конкретного пользователя, а в более широком смысле просто «эксперт».
  294. saifuluk (12.07.2017 8:37:16)
  295. Сообщение удалено Pinkbyte по причине Блокировка пользователя с удалением сообщений (0)
  296. Ответ на: комментарий от anonymous 12.07.2017 7:50:03
  297.  
  298. А вот фиг, не получится - тема уже создана, заявка на победу подана, пахнет горячем и слышно эхо взрыва. :)
  299.  
  300. Ладно-ладно. Думай что хочешь.
  301. saifuluk (12.07.2017 8:38:11)
  302. Вы не можете добавлять комментарии в эту тему. Тема удалена.
  303. ← Немного слов про умные компиляторы
  304. Development
  305. Хранение ресурсов приложения в git →
  306. Похожие темы
  307.  
  308. Форум C++ программист (Киев) (2012)
  309. Форум Можно ли использовать один сокет из разных потоков? (2012)
  310. Форум мультиплексировать операции между двумя дескрипторами (2016)
  311. Форум 10^100 (2013)
  312. Форум получить socket fd из "struct sock" (2017)
  313.  
  314. Форум треды в линукс (2016)
  315. Форум Подскажите ЯП с норм тредами (2012)
  316. Новости Проблемa c10k (2001)
  317. Форум 100% загрузка ядер процессора (2015)
  318. Форум 100/Full => 10/Half (2004)
  319.  
  320. О Сервере - Правила форума - Правила разметки
  321. https://www.linux.org.ru/
Advertisement
Add Comment
Please, Sign In to add comment