Top.Mail.Ru
? ?

Imageru_java


ru_java, posts by tag: performance - LiveJournal

все о языке программирования java


Entries by tag: performance

Посоветуйте бесплатный профилировщик для web
raven
Imagestrangeraven
Интересует бесплатный, но хороший профилировщик для web сервера. Для java, естественно.

Бесплатный - в основном потому, что хочется пользоваться на production и не париться с лицензиями.

Основное что надо: чтобы понимал что такое http запросы и умел по ним показывать распределение CPU. Ну то есть вот был запрос с такого url, вот он занял 1 секунду, вот так эта секунда расползлась по различным callstacks.

Гуглится слишком много всякой всячины, в том числе сомнительной актуальности, поэтому хочется рекомендаций от тех кто чем пользовался и что нравится.

Как сделать неблокирующую загрузку из базы?
raven
Imagestrangeraven
На всякий случай опишу текущую ситуацию:
Есть web сервер, сделанный из Tomcat+Tapestry+Hibernate+Postgresql+еще всякое до кучи.

И вот приходит пользователь и говорит: отдай мне страничку.

А чтобы страничку нарисовать, надо слазить за данными в postgres и еще другие удаленные места.

Допустим, для страницы нужны данные d1, d2, d3 из внешних источников s1, s2, s3 (один из которых postgres)
Как это выглядит с точки зрения потоков:
Для обработки пользовательского запроса tomcat достает из пула рабочий поток и говорит ему: нарисуй html. Рабочий поток последовательными блокирующими запросами лезет за данными в s1, s2, s3 и рисует html.

Итого получается, что общая задержка на извлечение данных суммируется: t1+t2+t3.

Хочется запросить данные параллельно неблокирующими запросами. То есть сказать что то типа: источник, вот тебе запрос на эти данные. Но ты пожалуйста мой поток не блокируй и верни сразу же управление. А когда данные приедут, кинь мне какой-нибудь event или дерни мой callback.

Тогда бы я одновременно сделал запросы в s1, s2, s3 и спокойно ждал, пока они все не приедут. Задержка бы получилась не сумма, а max( t1, t2, t3)

С прочими внешними источниками так договориться можно, а вот можно ли так договориться с Hibernate?
Ну или если Hibernate так не умеет, может есть что-то аналогичное, что умеет?

Java performance mind map as an OSS
hog
Imageraydac
Я опубликовал java performance mind map как OSS проект на github, раньше только картинка была, но теперь доступен и сам проект, так что можно скачать и курочить как угодно.
https://github.com/raydac/Java-performance-mind-map

Создание Веб-приложения на ваадине - вопросы по производительности и Ко
каменяр, кирка
Imagekamen_jahr
Присматриваюсь к ява фрейворку ваадин  для решения следующей задачи:
1. Пользователь в веб-приложении - редакторе спец. графических элементов собирает прототип - ГУИ-маску. (Графическими элементами могут быть поля однострокового и многострокового ввода, комобосксы и тд. Причем, поскольку одни и те же граф. элементы могут быть использованы в нескольких местах, - создание маски будет выполняться в ячейках таблицы)

2. Созданная таким образом маска трансформируется по XML-файл, который передается в другую оболочку. Вот в эту - http://activiti.org/. В данной оболочке уже есть определенные элементы, которые из XML-файла 1:1 можно отобразить. Остальные, недостающие элементы надо будет самим реализовать.
Собственно говоря, эта оболочка на ваадине и запилена. Потому и присматриваюсь для реализации как пункта 1 так и пункта 2.

При чтении отзывов (как на русском так и на немецком ) один из противников ваадина привел пример задержки отображения цифр вот у этой демки с калькулятором  - у меня вначале эффект наблюдался, затем все шустро запахало (на разных компах)

Кто-либо имел опыт работы с данным фреймворком?
Или мож ужет готовые решения уже есть, реализованные на др. веб-фреймворках?


З.Ы Ранее протитип ГУИ маски создавались в другом редакторе - чета наподобия визивинга в нетбинсах на толстом клиенте: - затем маски гуишные ручками с помощью явыскрипт-библиотек трансформировались в хтм-код - деталей пока не знаю, да и они мне не надо - т.к. клиентам тема вызова нескольких приложений не катит.

Терабайты данных
Image
Imagedrykov
Вопрос не совсем про java, но в контексте java приложения. Грубо говоря хранится лог, постоянно добавляются
новые записи, удаляются старые, редко делаются запросы найти небольшую группу данных по дате и 1-2 признакам.
Сейчас все лежит в MySql.

Неожиданно стало известно что объем данных станет 10 терабайт. 100 миллионов записей каждый день.
В чем такое сейчас принято хранить? У кого есть практический опыт?

upd:
Требуется максимально легкое (и дешевое) опенсорс решение. Есть уже несколько предложений in-memory баз.
Столько памяти конечно не будет и не надо. Данные не меняются. Только удаляются старые и добавляются новые.
И агрегация к сожалению невозможна. Время запроса выборки нужно до 5 минут,
но это не должно быть проблемой, так как в запросе всегда есть дата.

Cloud Servlet Containers
Image
Imagepaskin
Ув.All, существуют ли какие-то решения для обьединения нескольких Servlet Containers в один виртуальный ? Насколько я понимаю, решения типа Tomcat Cluster просто обмениваются информацией о сессиях а с точки зрения деплоймента, логов, JMX каждый сервер сам по себе ? Конечно, часть проблем можно решить с помощью shared диска - но хотелось бы чего-нибудь типа "поставил ОС, софт, задал имя кластера - готово, сервер стал мощнее". Даже за счет ограничения доступа к файлам и запуска тредов.

Спасибо

JBoss и открытые JAR-файлы
Image
Imagekolemik
Началось всё с того, что пред-продакшн сервер выдал нам "too many open files". Выдалось это после второй попытки пропатчить наше мега-приложение. Мега-приложение грузится своим деплойером, расширяющим SubDeployerSupport, поэтому все силы были брошены сначала на него...

Но в процессе борьбы выяснилось, что в /proc лежит множество линков вида:
server/default/tmp/deploy/tmp1536561351976467536qwe.sar (deleted)

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

По мотивам был найден следующий пост: http://management-platform.blogspot.com/2009/01/classloaders-keeping-jar-files-open.html

Оказалось, что JarFile не закрывает открытые потоки!!! Это было откровением...

Вроде как понятен стал метод борьбы (указан в посте), но он почему-то не сработал для JBoss. Как минимум, мне нужно каким-то хитрым образом запихать свой класс-лоадер заместо URLClassLoader. Но там всё-равно ещё остаются открытые дескрипторы, которые я выловил указаной в посте хитрой утилитой http://blogs.sun.com/roller/resources/quinn/ZipFileMonitor.jar

Кто-нибудь сталкивался с такой проблемой? Как решали?
Может быть можно запатчить саму Java-машину? http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4167874 Вроде бы баг пофикшен для 7-й версии...

Image