LINUX.ORG.RU
ФорумTalks

/хроники пикирующего истребителя/ Лучше - не значит быстрее

 ,


1

3

Случайно написал несколько скриптов на PHP. Вначале написал, а потом понял, что это PHP. Это зашквар, или один раз не считается?

А знаете, зачем прога на PHP?

Потому что я понаписал веб-интерфейсов на Java, и где-то там устроил утечку памяти. Теперь после процессинга определенного количества данных, вся память на серваке заканчивается, вместе со свопом. И процессор заканчивается, непойми почему.

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

Поэтому я сделал скрипты для юзера, чтобы когда прога начинает нереально тормозить в вебморде (это значит, она глубоко зарылась в своп), надо дернуть из браузера restart.php, который убьет и перезапустит докер с джава-софтиной на серваке. И еще tail-f.php чтобы посмотреть логи докера (понять, стартанул ли он, и если повис - то как именно).

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

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 2)

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

Ну да, healthcheck надо делать, это одна строчка в Dockerfile/docker-compose.yml. А уж поднять сервис в докере, что было несколько инстансовприлжения с лоадбалансингом и дохлые рестартовать в фоне — это, видимо, что-то вроде рокетсайенса.

Deleted
()

Следить надо за

1. Строками (s += s + «ерунда какая-то в цикле»)

2. Нестатическими внутренними классами

3. Коллекциями объектов, которые очищать потребно, если более не используются.

4. Подключениями к БД и другим ресурсам.

Впрочем у Тейта все разобрано.

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

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

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

это одна строчка в Dockerfile/docker-compose.yml

Не поверишь у многих и этого нет.... Докер на самом деле сделал медвежью у слугу. Те кто внедрили его в начале теперь слезть не могут. и docker-compose у них нет...

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

Ну, я стараюсь. Далеко не всегда условия позволяют писать идеальный код, но до кошмара описанного ТС'ом я стараюсь дело не доводить.

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

посплю часа три-четыре, сделаю работу которую сегодня не успел

Вы всё _работаете_?

А когда же вы _думаете_ ?

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

Не я не про чек, а про то что он будет чекать. Там емнип надо http эндпоинт, который хелсчек будет дёргать, и определять жив или нет. То есть надо написать что-то на яве (ну и там унутри проверить, память потоки и т.п.). Или подключить какой-нибудь готовый фремворк для этого. Короче, чуть сложнее.

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

Не я не про чек, а про то что он будет чекать

Там любую команду можно задать. Можно JVM спрашивать через JMX сколько памяти осталось, например.

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

Не поверишь у многих и этого нет.... Докер на самом деле сделал медвежью у слугу. Те кто внедрили его в начале теперь слезть не могут. и docker-compose у них нет...

Обезьяны есть везде. Докер тут не причём. Мне вот, он сильно жизнь упрощает.

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

Нужно срочно написать учебник по быдлокодингу. И видеокурс, для тех кто не умеет читать. За десять баксов, а то ишь привыкли к бесплатному контенту на швабре. Рассказывать буду штуки как в этом посте :) Взлетит?

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

Докер приучил людей делать одноразовые сервисы - сдох сервис и ладно. А еще насрать что он на диск писал и вот все это. А если сервис гнилой просто имидж другой запустим. Помню как компилировали exim да еще и ключи подбирали для компилятора... А сейчас можно иметь 3 Postgres - если 1 плохой - запустим другой...

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

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

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

А в Эрланге это вообще основная мантра. Let It Crash. Там же есть концепция crash-only software: это когда единственный способ остановить приложение - это крашнуть его, а единственный способ запустить - запустить процедуру восстановления от краша. И ничо, живут эрлангисты попиваючи, зарабатывают свои кровавые деньги в серьезном энтерпрайзе

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

Не знаю. У нас Эрланг умирает потому что бимы должны общаться и чем больше бимов тем хуже... в итоге все жрет траффик...

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

Ты имеешь в виду, что вы заюзали эрланговскую встроенную кластеризацию? Не надо так делать :)

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

Я не настоящий сварщик... Но судя по всему да. Там еще и TCP соединения бимы делят...

demrnd
()

...на Java, и где-то там устроил утечку памяти
Java
утечку памяти

WTF? Разве это возможно??? Где же ваше преимущество перед C++?

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

Докер приучил людей делать одноразовые сервисы - сдох сервис и ладн. А еще насрать что он на диск писал и вот все это. А если сервис гнилой просто имидж другой запустим.

Да это не докер, а хайп на микросервисы. Это монолит накладно рестартить, а микросервис — бах, и готово. Ну и они стейтлесс, к тому же. А вот БД и тп в таком стиле только хипстеры юзают.

Помню как компилировали exim да еще и ключи подбирали для компилятора...

Да, а еще потом это в пакет заворачивать, на серваки ставить. Хорошие времена были... А некоторые джедаи прям make install херачили. Если кто-то про checkinstall слыхал, он сразу за гуру ставал.

А сейчас можно иметь 3 Postgres - если 1 плохой - запустим другой...

Не вижу проблем, при разработке это удобно. А вот в проде, там да, ha postgres кластер, со снэпшотами, все дела.

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

Да это не докер, а хайп на микросервисы. Это монолит накладно рестартить, а микросервис — бах, и готово. Ну и они стейтлесс, к тому же. А вот БД и тп в таком стиле только хипстеры юзают.

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

demrnd
()

Стиви, надо тебе в качестве исправительных работ что-нибудь на мелкоконтроллере без оперативной памяти пописать :) 32 регистра по 1 байту и всё, крутись как хочешь

Harald ★★★★★
()

Ещё интереснее получается, если жаба-программисты начинают писать на JS

Я в одну контору пришёл поднимать проект который почти год насиловала команда из 8 жабофилов.

В результате приложение потребляло ~1.6Gb памяти в браузере и тормозило нещадно.

Но конец терпения Большого Босса обнаружился, когда поняли что на iPad в котором просто гиг памяти оно просто валится так как сжирает все что есть ;)

А сэйлсы на iPad-ах демонстрируют клиентам как их деньги растут у эти прекрасных мэнеджеров инвестиций.

А вы все про хипстеров да вейпы.

iPad - вот это двигатель качества в ПО а не ваши смузи да гироскутеры.

grim ★★☆☆
()

restart.php, который убьет и перезапустит докер с джава-софтиной на серваке

stevejobs
Слышь! Кто тут crutchmaster ты или я?

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

А как ты решил бы данную задачу?

Отделил бы веб интерфейс от самой логики. А дальше грохал бы её и запускал хоть по 5 раз в день. Понапишут всякого говна, да еще и одним большим вонючим куском, потом сиди, ковыряйся.

crutch_master ★★★★★
()

а любители хорошего кода так за год эту задачу и не решили - никаким способом

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

crutch_master ★★★★★
()

У меня тоже как-то в 2006 году жутко тёк видеосервер на цпп с бустом. Скудным своим умишком не мог понять, где. Добавил ещё шаред_птр, и, ура, течь перестало!

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

mv ★★★★★
()

Штиви а чего на рутнопе не наговнякал то?

ggrn ★★★★★
()

Есть же oomkiller. Настроил бы его, чтобы он всегда убивал жабу, а systemd её перезапускал. А вообще утечки памяти от таких же говнокодеров «зато работает».

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

И зачем ты отключил роняние виртуалки вместо того, чтобы запилить быстрый перезапуск?

KivApple ★★★★★
()

Случайно написал несколько скриптов на PHP.

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

По сабжу: если тебе дорога репутация, пиши наново и бесплатно обновляй. Если тебе пофиг, то забей и наслаждайся жизнью. Пока на ногах стоишь.

Deleted
()

докер с джава-софтиной на серваке.

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

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

Потому что я понаписал веб-интерфейсов на Java, и где-то там устроил утечку памяти. Теперь после процессинга определенного количества данных, вся память на серваке заканчивается, вместе со свопом. И процессор заканчивается, непойми почему.

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

Поэтому я сделал скрипты для юзера, чтобы когда прога начинает нереально тормозить в вебморде (это значит, она глубоко зарылась в своп), надо дернуть из браузера restart.php, который убьет и перезапустит докер с джава-софтиной на серваке. И еще tail-f.php чтобы посмотреть логи докера (понять, стартанул ли он, и если повис - то как именно).

- Как назывется ваш номер?

- Аристократы интерпрайз

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

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

Как коррелирует докер с папуасами?

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

Как следствие того, что стандартные способы запуска ПО оказались гораздо менее удобными, в отличие от докера.

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

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

Докер оказался на столько удачным решением,

вот тут то и стоит начать задумываться, а может мне стоит изменить свою жизнь?

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

Не обязательно.

Никто не мешает запустить java с агентской библиотекой какого-нибудь YourKit и снимать memory-дампы периодически (хотя, кажется, это и через обычный JMX можно сделать, не говоря уже о Flight Recorder в Oracle JDK).

После убийства контейнера, приложив небольшие усилия, ты всё равно можешь получить core-файл java-процесса, из которого, опять же, можно получить предсмертный memory dump.

Ну и сервисы типа Plumbr тоже решают поставленную задачу — на вкус и цвет...

Мне кажется, автор просто признался в собственной лени. Если совесть/заказчики не мучают за код на PHP — ну ок. Но хвалиться этим? Странная слава.

Bass ★★★★★
()

Суровые будни евангелизма

ма, сфоткай типа я джава-гуру

вот я и мой джава-бложик

вот я пишу про джаву на швабр

вот я и джава-конференция (я справа)

вот я объясняю как пых умер

вот я и крутой энтерпрайз

вот я и мой говнокод (я справа)

вот я при помощи скотча, мёртвого пыха и мамы простого сербского парня Йобана починяю свой говнокод

надо будет потом ещё статью написать

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

Если совесть/заказчики не мучают за код на PHP — ну ок. Но хвалиться этим? Странная слава.

Удваиваю. Даже _мне_ было бы стыдно.

crutch_master ★★★★★
()
Ответ на: Суровые будни евангелизма от Deleted

вот я и мой говнокод (я справа)

Наповал =)

Чувак, уже, конечно, пятница, но ведь только начало рабочего дня. Нельзя же _так_ жечь. Как бы мне самому теперь сервисов на PHP не написать по ошибке.

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

Добавил ещё шаред_птр, и, ура, течь перестало!

[...]

С тех пор мои программы не текут.

Что, теперь ты заранее добавляешь шаред_птр?

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

Flight Recorder в Oracle JDK

FR/JMC теперь не в Oracle JDK, а бесплатно в OpenJDK

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

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

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

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

Не свалит.

Котлин разве уже работает без JVM? А то я отстал от хайповых язычков.

C# для офтопика, как правило, быстрее Жабы работать будет.

Но НЕ всегда быстрее и НЕ намного быстрее -

https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/csharp.html

Только, кроме офтопа, ещё и UNIX и GNU/Linux есть.

Где на коленке написанная моня сливает как официальному мелкомягкому дотнету, так и Жабе.

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