Snusmumriken
Карочи, хайлоад - это составная хреновина, и пользователи - нехилая его часть, но не всегда.
RapidCodeLab
не будет пользователей, никакого хайлоада в принципе нет, я так считаю)
Snusmumriken
У тебя слишком широкое определение пользователей. В таком случае, сервис который шлёт логи лог-серверу является его пользователем.
Snusmumriken
Ага )) Но не искусственно, а потому что "так надо", например отловить появление пользователей, и нарисовать красивый график (кошке начальника).
RapidCodeLab
и какой тут хайлоад до появления пользователей?
RapidCodeLab
нет пользователей, нет данных, что слать , зеро и это хайлоад?))
Snusmumriken
Ладно. Сколько нужно пользователей для хайлоада? Один - это достаточно или мало?
RapidCodeLab
1М уж в сутки, имхо, это что-то уже под хайлоад катит
Snusmumriken
Один пользователь - это много или ниоч?
RapidCodeLab
1 миллион
RapidCodeLab
все остальное, даже wordpress+nginx свободно тянет 500к
RapidCodeLab
дейли)
RapidCodeLab
я про суточный траф
Snusmumriken
Один миллион пользователей, который условно равномерно делает один запрос в сутки например на сайт и выходит, при круто написанной системе (которая генерирует одно подключение на старте и дальше всё выкачивает вебсокетом, например), это 23 запроса в секунду. Ну, такая себе нагрузка. Raspberry pi справится.
RapidCodeLab
а ну да, даже одну страницу современного сайта просмотреть, это же 1 запрос только)
Snusmumriken
Два.
RapidCodeLab
мути сайт на рассбери в 1м ))) озолотишься)
Snusmumriken
Один - запрос за основной страничкой, вместо которой - js, открывающий вебсокет и грузящий одним запросом весь контент, включая картинки в base64, и распихивающий его в теги по макету ))
Snusmumriken
Конечно : ) Но ты говоришь что "миллион пользователей/сутки - это хайлоад". А тут - крошечное количество запросов, например.
RapidCodeLab
ну да, а в базу мы не ходим, а фул текст серч не делаем, херня, я ж говорю, сделай демо, что выдержит даже синтеттику на рассбери, озолотишься
Snusmumriken
Это может быть как хайлоад, так и не хайлоад. Один единственный пользователь может нехило заддосить сервак, особенно если что-то криво написано. Не 500к запросов в секунду, но 5к - да.
RapidCodeLab
в реальности каждый юзер не два запроса делает, это только твоя фантазия
Snusmumriken
Один пользователь может сделать 5к запросов в секунду, смекаешь? Один. Для этого достаточно всего лишь кривовато что-то написать ))
Snusmumriken
5к запросов в секунду - это не хайлоад, но что-то довольно жирное. Сто таких пользователей - уже хайлоад (500k rps).
Snusmumriken
Карочи, ты в курсе как переводится "хайлоад" с английского? Почему именно такое слово, а не "саузендсофюзерс"?
RapidCodeLab
мне что гуглить?
RapidCodeLab
ты покажешь 500к рпс на рассбери или нет уже?
RapidCodeLab
или сколько там на рассбери можно?
Snusmumriken
Я говорил про 500к? Процитируй : )
RapidCodeLab
да я хер занет, тыж редактируешь сообщения постоянно)
Snusmumriken
Аа, не к тому апеллируешь, я только добавляю, не меняя смысл/цифр. Давай цитируй ))
Snusmumriken
Мы не про миллион пользователей, а про 23 запроса в секунду, смекаешь?
RapidCodeLab
в течении суток, у тебя же два запроса на пользователя)
RapidCodeLab
так такая математика не работает!! ты теории разводишь, а в жизни не так!
Snusmumriken
Я беру пример с тебя : )
RapidCodeLab
ок, хорошего дня, твоя позиция ясна
Snusmumriken
Карочи, хайлоад отличается от не-хайлоада не количеством пользователей, а степенью загруженности системы. Если один человек способен нехило загрузить систему - это уже типа хайлоад. Привычная мера - rps, то есть, количество запросов в секунду. Ещё иногда применяют cps - количество (печенек) соединений в секунду, ибо установка соединения - медленная штука и лимитированная (количество портов у машины), но можно прогнать по нему сразу кучу мелких быстрых запросов, которые не будут отличаться по времени и нагрузке от одного медленного. Не пользователи. Которые безусловно иногда являются причиной этой загруженности, но не всегда. Зачастую, здоровенная доля нагрузки - внутренние издержки или обычные кривости.
Snusmumriken
Кстати, забыл привести другой граничный случай, когда весь миллион пользователей ломится в одну и ту же секунду, а всё остальное время в сутках система простаивает. Интересно посмотреть на "хайлоад" который с этим справится (хотя балансеры мб раскидают).
Maxim
так такая математика не работает!! ты теории разводишь, а в жизни не так!
В жизни бывает по разному и часто из за невнимательности, недостатка времени или банальной халатности, это факт. Тебя интересовало как так может быть без пользователей хайлоад на железяке? Пользователь являются одними из тех кто создаёт нагрузку, кроме пользователей, например, нагрузку может создавать само приложение из за допущенных ошибок автором кода, такое встречается довольно часто и в нашем случае была допущена ошибка программистом в одном редком сценарии, причем не одним программистом, а несколькими, так случилось что несколько человек допустив эти ошибки создали сложный баг который создавал дичайшую нагрузку и съедал почти все ресурсы железяки при стечении трёх обстоятельств в одно время
Snusmumriken
Товарищ смотрит на систему в целом, и под нагрузкой считает только внешние штуки. Если какие-то внутренности создают нагрузку - это их проблемы, они не учитываются.
Maxim
Товарищ смотрит на систему в целом, и под нагрузкой считает только внешние штуки. Если какие-то внутренности создают нагрузку - это их проблемы, они не учитываются.
Наверное он просто ещё не сталкивался с подобной ситуацией и с таким видом багов, можно только позавидовать, его ждут невероятные приключения от которых захватывает дух
Snusmumriken
"Количество пользователей" абстрагирует его от всех кривостей: если клиент в браузере делает миллиард запросов в секунду, то это тоже проблемы системы, при этом снизится количество пользователей, потому что не все достучатся.
Snusmumriken
То есть, это менеджерский подход к хайлоаду а не кодерский )) Менеджер такой отчитывается начальству: "Уже миллион пользователей в сутки! Где моё повышение, а? И премию не забудь!" А кодер такой: "Тэкс, я накатал сверхпроизводительную фигню, которая может во столько-то запросов/сек, значит с таким-то фронтендом мы потянем столько-то пользователей в пике, если база не откажет".
Maxim
"Количество пользователей" абстрагирует его от всех кривостей: если клиент в браузере делает миллиард запросов в секунду, то это тоже проблемы системы, при этом снизится количество пользователей, потому что не все достучатся.
Не суди его строго, людям свойственно менять свое мнение, отношение или привычки но этот процесс всегда занимает какое то время, сегодня думает и делает одно, а через какое то время думает и делает совершенно не так как раньше
Maxim
а чем обоснован такой "зоопарк" ?
Про зоопарк вопрос мне понравился, хороший вопрос. Обычно его задают специалисты которые придерживаются одного какого то направления или религии, те кто верит что с помощью того языка программирования которым он владеет можно не только решить все задачи но и установить мир во всем мире ;) если бы так было на самом деле то мы бы сейчас все использовали только один универсальный язык с каким нибудь смешным названием Изоп, все были бы счастливы, почти что рай, но мир гораздо больше чем он кажется, я не космонавт, я не знаю насколько именно он больше и многообразие языков программирования уже говорит о том что они все зачем то нужны и все важны, нет плохих языков программирования, есть языки программирования которые ты ещё не успел изучить.
Snusmumriken
Ты совершил четыре ошибки в слове "Java"))
Maxim
Ты совершил четыре ошибки в слове "Java"))
Сегодня кстати у меня был день javalua ))) Когда заводил в проект selenoid
Maxim
Ты совершил четыре ошибки в слове "Java"))
Подскажи, пожалуйста, какой версией lua и luajit ты сейчас пользуешься?
Snusmumriken
5.1/2.1.0-beta2 (x32) Можно собрать третью бету, но лень.
Maxim
5.1/2.1.0-beta2 (x32) Можно собрать третью бету, но лень.
устанавливал из репозитория? или собирал вручную?
Snusmumriken
Ручки, mingw. Хотя где как.
Snusmumriken
Где-то содрано из luapower.
Maxim
Ручки, mingw. Хотя где как.
наткнулся на то что у меня кое где разные версии lua, где то 5.1 а где то 5.3 и беда в том что у меня локально каким то образом luarocks ставит пакеты для lua 5.3, в то время как lua -v показывает версию 5.1 и я что то совсем запутался почему на локальной тачке такая путаница и как это можно исправить?
Maxim
@Snusmumriken решил удалить все что связано с lua и поставить обратно только нужные версии, надеюсь luarocks будет вести себя хорошо )))
Snusmumriken
Нормась
Maxim
Нормась
Разобрался с этим бардаком версий lua и luarocks на моей машине. Как удалось выяснить следствию виновником трагедии оказалась моя невнимательность ) Описание проблемы: на своём ноуте Xubuntu 18.04 решил установить локально lua, luajit и luarocks в качестве пакетного менеджера. Но так как в нашем проекте встречается lua5.1 то решил локально так же поставить lua5.1 что бы избежать ошибок версионности. Все устанавливал с помощью sudo apt install из официальных репозиториев. lua5.1 luajit ставятся отлично, а вот luarocks устанавливается и тянет за собой lua5.3 так как в официальной репе ubuntu имеется luarocks только для lua5.3 поэтому и тянул пакеты для lua5.3 Решение: Если используете Ubuntu 18.04 и необходимы использовать именно lua5.1 то luarocks нужно собирать вручную версии 2.2.4, команда для сборки и установки luarocks вручную: curl -fSL https://github.com/luarocks/luarocks/archive/2.4.4.tar.gz -o luarocks-2.4.4.tar.gz \ && tar xzf luarocks-2.4.4.tar.gz \ && cd luarocks-2.4.4 \ && ./configure \ && make build \ && make install Думаю нужно оставить эти новомодные Ubuntu18.04 и вернуться к старому доброму и надежному Debian 8, он реже подкладывает таких свиней как Ubuntu 18.04
mva
Разобрался с этим бардаком версий lua и luarocks на моей машине. Как удалось выяснить следствию виновником трагедии оказалась моя невнимательность ) Описание проблемы: на своём ноуте Xubuntu 18.04 решил установить локально lua, luajit и luarocks в качестве пакетного менеджера. Но так как в нашем проекте встречается lua5.1 то решил локально так же поставить lua5.1 что бы избежать ошибок версионности. Все устанавливал с помощью sudo apt install из официальных репозиториев. lua5.1 luajit ставятся отлично, а вот luarocks устанавливается и тянет за собой lua5.3 так как в официальной репе ubuntu имеется luarocks только для lua5.3 поэтому и тянул пакеты для lua5.3 Решение: Если используете Ubuntu 18.04 и необходимы использовать именно lua5.1 то luarocks нужно собирать вручную версии 2.2.4, команда для сборки и установки luarocks вручную: curl -fSL https://github.com/luarocks/luarocks/archive/2.4.4.tar.gz -o luarocks-2.4.4.tar.gz \ && tar xzf luarocks-2.4.4.tar.gz \ && cd luarocks-2.4.4 \ && ./configure \ && make build \ && make install Думаю нужно оставить эти новомодные Ubuntu18.04 и вернуться к старому доброму и надежному Debian 8, он реже подкладывает таких свиней как Ubuntu 18.04
или просто использовать Gentoo 😃
Maxim
или просто использовать Gentoo 😃
Не работал с gentoo, рекомендуете попробовать? И чем он лучше debian 8? Или может знаете какой то мануал где можно почитать об этом? Буду признателен, в нашей команде приветствуются новинки и всегда бурное обсуждение их особенностей
mva
Частота использования ругательных слов в отношении языков программирования на реддите за 2018 год
mva
про Lua хотя бы не пишут "fuck" 😃
Snusmumriken
И ты не пиши!
Snusmumriken
Но у луа это не используется потому, что все репозитории посвящены модам для minecraft, stalker, samp и roblox. Программисты просто пока не знают этого слова
mva
а как же openresty с прочим cloudflare'м?
Snusmumriken
Тссс, не запарывай шутку о малолетстве всех луа-кодеров
mva
думаешь, китайцы тоже не умеют?
Lucky
Lua понад усе!
Михаил
Кстати, маленькие чемпионы, кто напишет тулзу на луях, которая будет вычислять путь до скрипта/библиотеки, цепляющейся через require? Мне такая в своё время много нервов сэкономила, ибо штук десять разных мест в LUA_PATH/LUA_CPATH, и в некоторых местах либы с одними и теми же именами но с разными эффектами (версиями, например).
Нужна прям отдельная тулза? В доках по require() написано "Once a loader is found, require calls the loader with two arguments:modname and an extra value dependent on how it got the loader. (If the loader came from a file, this extra value is the file name.)" То есть модуль может узнать откуда его загрузили. Или попробовать: package.searchpath(modulename, package.path..";"..package.cpath)
Snusmumriken
Но это надо редактировать найденный модуль, а мы его ЕЩЁ НЕ НАШЛИ ))
Snusmumriken
Ну плюс путь не узнаешь, узнаешь только по какому имени его вызывали. Ну там, туда передаётся modname в require("modname") в качестве параметра скрипта "...". Так, кстати, можно узнать, вызвали ли скрипт отдельно, или в качестве библиотеки: -- вызвали через require (как библиотеку) if ... then -- возвращаем либу return M end -- а если дёрнули скриптом - вот тут вот можем прогнать тесты -- или накатать примеров, которые можно запустить и проверить, если запустили как скрипт
Snusmumriken
Обычно боты работают по принципу, что им телеграм сам шлёт http запрос с сообщением, когда оно появляется. Поэтому боты телегу без причины не грузят
Нет, так они работают очень редко, потому что вебхук требует маршрутизируемого сервера (за который надо платить много бабосов, иметь домен/внешний ойпи или ещё чего-то там), а ещё, разработчики ботов регулярно не знают что такое лонг-поллинг, или помимо собственно ботства, бот должен делать что-то ещё, поэтому запросы делаются и делаются часто.
Alex
Хм.. не думал что кто-то так пишет) мои боты все маршрутизируемы)
6 :)
С наступающим Новым годом!
Snusmumriken
Хм.. не думал что кто-то так пишет) мои боты все маршрутизируемы)
В каком смысле маршрутизируемы? А на чём ты их хостишь? Какой-нибудь amazon vps?
Alex
Впс , но не Амазон
Alex
У меня несколько ботов, клиенты платят за хостинг немного, до 10$