Skip navigation.
Home

Вопрос к девелоперам

Банк. Пишется новая софтина через которую проходят все логин-операции со стороны клиентов к самому, собственно банку. Вертится это на Томкате. Пишется это на Джаве. Изначально виртуалки выделенные под это имели 2 ядра процессора. При первых тестах все ударилось в потолок по нагрузке. Попросили дать больше мощи. Сделал с 2 до 4 ядер. В параллель молотят 6 хостов, то-есть 6 хостов по 4 ядра каждый. Теперь эти гаврики снова ломятся с требованиями о том что high-load tests невозможны, потому что все-равно бьемся в потолок. Дайте по 6 ядер на каждом хосте.

Вопрос - мне одному (и как-то странно) кажется что они явно криво пишут если у них даже 4-х ядерные хосты бьются в потолок, когда речь идет об операциях логина?

Апдейт по

Апдейт по теме:

Старший девелопер поковырялся в коде. Сказал что там есть пара косяков которые писали пара сабжей с альтернативной одаренностью. Он будет ковырять тему джава профайлером и фиксить.

Так же, некая трабла еще в том что Томкат 8 и mTLS шифрование дружат так себе. А здесь каждый запрос должен быть очень качественно зашифрован, плюс все это бегает по OCSP, который, судя по всему, реализован здесь довольно перанально. Хотя, из моего изучения сабжа, мне кажется что OCSP вообще не имеет нормальной реализации нигде. Протокол который только в задумке работает хорошо, но никаких стандартов там особо нет.

У меня глаза

У меня глаза кровоточат. А почему эту авторизацию не сделать через SSH туннель? Или через VPN между вами и Амстердамом? Почему запросы не шифровать каким-нибудь, меняющимся раз в сутки симметричным ключом длиной в Панамериканское шоссе?

Все вопросы риторические, если чо, я в курсе, что мы на веслах на этих галерах, а на руле стоят слепоглухонемые мудаки в дорогих костюмах.

Когда я пришел -

Когда я пришел - задавать эти вопросы смысла не имело вообще. Сейчас, я смотрю на это спокойно, прохладно и мирно. Им надо - они решают. На запросы о дополнительных ядрах линуксоиды буксанули обратно и сказали что нагрузки не видят, мотивируйте. Я отправил весь этот цирк к ПО данной софтины и сказал чтобы мотивировали свои запросы. Попросили меня. Я сказал что в данном случае я - прокси. Сидят, разбираются.

"Я сказал что в

"Я сказал что в данном случае я - прокси"

Ржал, икал, вспоминал похабный анекдот про "работай, мой прокси-сервер".

А чего ты ржешь?

А чего ты ржешь? Мы с тобой оба, по сути, шлюхи. Просто работаем немного другим местом и ценник повыше. Хотя, по сравнению с элитными эскортами, мы с тобой копеечные лохи.

Во-первых,

Во-первых, перед элитными эскортами у нас есть ряд приемуществ, бро:

Элитная эскортница в 40, а уж тем более в 50 может лишь писать мемуары, шамкая натруженными челюстями и массируя боевую печень, державшую удары алкахи. Мы в этом возрасте еще востребованы, причем как бы даже не больше, чем в 30, и тем более 25.

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

В-третьих, у нас обьем капиталовложений гораздо ниже. Поясняю: посмотри, сколько стоят одни труселя в "Агент Провокатюр". Сравни по цене со всеми своими труселями. Сколько ты вложил за последний год в маникюр, педикюр, подтяжку ебла и накачку губ? Правильно, примерно столько же, сколько и я: ноль евро. Не говоря уже о том, что наш мэйкап - это брусок мыла, туба крема для бритья, флакон шампуня и зубная щетка. Любая эскортная шлюха с таким набором обречена гнилую морковку на овощебазе перебирать, а мы вполне востребованы. Более того, я могу прийти на проект с небритой рожей и всем будет похрен, а попробуй она прийти на работу с небритыми ногами...

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

Хочешь сказать,

Хочешь сказать, что когда ебут мозг - это легче перенести, чем когда ебут буквально? 8-)

Твой вопрос

Твой вопрос несколько обидно звучит: подразумевается, что я в курсе ощущений, когда ебут буквально.

:-) ну

:-) ну фантазия-то работает, можно представить.... ;-)

Зато у вас

Зато у вас более долгий период активной профессиональной деятельности. И на промежутке в столько лет - еще вопрос, кто больше бабок суммарно поднимет. 8-)

//нашел анекдот уже сам... :)

Тут два

Тут два момента:
1) Способности железа: вот у меня на столе лежит копеечная железка с ARM'овским недопроцессором, типа тех что используются в мобильных телефонах. Одно ядро этой железки генерирует три гигабайта данных в секунду (!).
2) Концептуально-идеологический момент: прозвучало слово Джава.
Я помню, когда-то давно, когда Джава только появилась, на какой-то конфе в ответ на реплику маркетолога, что дескать джава как концепция спроектирована так чтобы в ней можно было всё и никому за это ничего не было, какой-то чувак ехидно спросил - что, и на нуль делить тоже можно? - и получил ответ - Да, можно.
Джава, как идеология, делит экосистему на две части - вменяемое ядро, в котором умные люди должны правильно расставить обработчики исключений. И дикий юзерспейс, в котором резвятся всякие одноклеточные кодеры-Брахмапутры. Так построен в частности SAP. Стандартным для юзерспейса Джавы является, например, перебор строк многомегабайтной базы данных с делением одной ячейки на другую и переходу к выбору следующей строки по ексцепшену деления на ноль. Понятно, что на такой подход процессорного времени и памяти не напасёшься. И это уже бизнесу решать, на что ему тратить деньги - на железо или на вменяемых людей. Как показывает практика - бизнес предпочитает платить за железо. Главное - Джава даёт бизнесу возможность выбора и бизнесу это нравится.

" Стандартным

" Стандартным для юзерспейса Джавы является, например, перебор строк многомегабайтной базы данных с делением одной ячейки на другую и переходу к выбору следующей строки по ексцепшену деления на ноль"

Так в этом не Джава виновата. А руки.

Взгляд со

Взгляд со стороны манагера по продукту и по проектам, а также аналитика:
1. Инфы мало, но уже ясно, что архитектура продумана через Ж. О статистике нагрузки и масштабировании не подумано от слова "совсем". (подозреваю что и запасного решения не задумано на случай если основной сервис ляжет)
2. Если где-то просто была ошибка - уже после первого звоночка о нехватке начально запланированных ресурсов это поделие должно было сразу быть отправлено назад архитектору/аналитикам/девелоперам на проверку и возможную переработку
3. Раз было позволено просто тупо докинуть ресурсов - то п.2 либо не был сделан, либо принято волевое решение "насрать" на эффективность системы и просто наращивать хардвер. (нынче очень популярный способ решения всех проблем. Поэтому и простейший калькулятор нынче тянет 3 гига зависимостей и 25 библиотек и требует 2-корного проца и 4 Ги памяти: типа железо ничего не стоит, а программисты дороги. :))

Взгляд со

Взгляд со стороны админа:
1) инфы явно мало;
2) юзать nmon с анализатором и экспортом в эксель - для получения тонн наглядной фактуры по профилю нагрузки, блокировках и т.п. - при этом сам nmon практически не дает нагрузки на систему, идет у меня как объективное ср-во контроля при проведении нагрузочных тестов;
3) dtrace/strace;
4) что-то нативное джавовское для профилирования и получения статы по ботлнекам в джаве.

Да. Еще. Если уж

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

Вообще, именно с этой аппликацией история интересная. Я был совсем зеленым и это было одним из моих первых заданий - создать среду разработки для этой аппликации. Спросил девелопера в каком углу делать. Он указал угол. Спустя три месяца, я напрямую этого дева (контрактника) в глаза, назвал мудоёбом. Потому что он попросил создать среду в том углу который является аналогом shared hosting где единый конфиг на томкат, единый конфиг на диски и вообще на все. А выяснилось что для аппликации все нужно очень индивидуально свое. Я утрахался в сопли с if, then, else и прочими ||.

Тем не менее, у меня сейчас, почему-то, стойкое ощущение что дай я им с 4-х ядер до 6-ти - толку будет ноль и они попросят 8. Я прав в своих догадках? Мне просто любопытно - насколько может кривой код положить железо?

Кривой код

Кривой код может положить железо любой мощности, ибо нет пределу мудизму. Кривой код, произведенный особо талантливыми разработчиками, может положить даже Вселенную.

Ну давай по

Ну давай по порядку.

Зная, на кого ты трудишься, я оцениваю пиковое количество клиентских запросов на логирование где-то в 10,000-20,000 в минуту (это явно завышенный, почти невозможный результат). Если это раскидать на 6 хостов, мы имеем в пике 3333 запроса в минуту, или около 55 запросов в секунду на хост, или 13 запросов в секунду на ядро. Много это или мало? По моему опыту работы в телекоммуникациях, 1 (ОДИН) четырехпроцессорный хост влегкую обрабатывал около сотни запросов в секунду, при этом что эти запросы, на секундочку, были критичны по времени (ISDN-плата не будет ждать больше строго оговоренного времени, причем весьма небольшого, на изменение статуса звонка). Причем это была система под Виндой, а не под чем-то типа Мандрейка или QNX.

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

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

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

Мне приходилось работать с системой, где было 250,000,000 (двести пятьдесят миллионов) запросов за 12 часов, причем это был трейдинг, т.е. время выполнения было крайне критичным, поэтому мне представляется, что я знаю, о чем говорю.

Ну смотри. Даю

Ну смотри. Даю параметры:

ОS: RHEL 7
RAM: 4 Gb
HDD: 30 Gb
CPU: 4 core

По идее, как это вижу я, мы имеем 6 хостов с конфигом довольно адекватным. При этом, задача софтины примерно проста, а именно:

Клиент открывает на мобильном телефоне аппу или на лапте сайт. Делает логин запрос. Строго по mTLS этот запрос, через нашу софтину, убегает на API в Нидерланды, где быстренько авторизуется. Все.

Структура этого софта еще специфична чем - там нет Апача или чего-то вроде. Это платформа где у нас аппликуха вертится напрямую в Томкате. Томкат говорит напрямую с фаерволлом, а тот уже разбрасывает подключения куда надо. То-есть такие вещи как вебсервер, балансировщик, прокси и другие компоненты - их там нахер совсем нет. Аппсервер -> Фаерволл. Всё.

Не, у меня по должности все просто - нужны ресурсы -> я прошу и даю. НО. Я смотрю на то как эти ребята сначала попросили +2 ядра, потом +20 гигов диска и немного охуеваю. Я не разработчик, поэтому я не могу точно выразить что именно меня смущает. Но что-то кажется будто "не так" когда аппликуха должна тупо открывать соединения, писалась она год и в итоге бьется в потолок по ресурсам (диск потому что она пишет какие-то невъебенные логи и камень потому что она тупо убивает все ядра при нагрузке)

У меня есть идея, но она слегка (как говорит Констанция) "ё-бо-бо". Я могу спиздить кусок артефакта и показать что там нахимичили. Но тогда мне надо знать где, что и с какой строки брать. Весь не могу, потому что, сам понимаешь, мне придется ручками перехерачивать это чудо техники сюда, а ебашить полторы тысячи строк на энтерпрайзной джаве в комменты я слишком ленив.

Вообще, мне интересно даже не это, а скорей следующее: как можно ГОД (я 8-го марта 2018-го года создал enviroment под написание) писать софтину в environment E (Entwicklung), пройти environment T (test) и V (vorproduktion) и все равно уебаться в такие грабли!? Я честно не понимаю. У нас, системщиков, руки вырывают сразу если твой тестовый конфиг апача, нджинкса или джейбосса не пашет в начале и ты его суёшь в продакшен. Сразу все тестят. Если не сконнектилось и не взлетело - иди нахер и переписывай конфиг, не суй его в T и V. Не еби людям мозги. Делай умно. У девелоперов типа как-то по-другому? Как можно было год ебать мозги, а потом ВНЕЗАПНО понять что ни диска для логов, ни камня для работы тупо не хватает, три сраных стейджа спустя!?

" Я могу

" Я могу спиздить кусок артефакта"

Не надо. Вывернут мехом вовнутрь и расстреляют прямо на ресепшене.

", убегает на API в Нидерланды"

Вот там и стоит укуренный сервер.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.