ru.java на livejournal

Май 17, 2013

 

Solr/Lucene, synchronized, OSX

Добрый вечер.

Надеюсь, уважаемое сообщество поможет разгадать загадку.

Есть Solr, в котором сконфигуриван SearchHandler со стандартным QueryComponent'ом. Ничего необычного.
На это приложение подаётся нагрузка JMeter'ом. И вот тут начинаются странности.

Если приложение запущено на моём MBP c OSX 10.8.3, Java 1.6.0_35, то JMeter показывает 150 QPS.

Если приложение запущено на боксе с Debian, Java 1.6.0_32, JMeter показывает 750 QPS.

Если приложение запущено в VirtualBox'е (под OSX) с Debian, Java 1.6.0_20, JMeter показывает 300 QPS.

Профайлер говорит, что под OSX приложение утыкается в вызов этого метода:
class SegmentCoreReaders { synchronized TermInfosReader getTermsReader() { if (tis != null) { return tis; } else { return tisNoIndex; } } }

Возникает предположение, что synchronized в OSX работает в несколько раз медленнее, чем в Linux'е.
К сожалению, Гугл не смог рассказать, в чём дело.
Надеюсь, уважаемое сообщество мне поможет :-)

Спасибо!


Характеристика MBP:
Model Name: MacBook Pro
Model Identifier: MacBookPro8,2
Processor Name: Intel Core i7
Processor Speed: 2.5 GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 8 MB
Memory: 16 GB
Boot ROM Version: MBP81.0047.B27
SMC Version (system): 1.69f4

Характеристика Debian бокса:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
CPU(s): 4
Thread(s) per core: 1
Core(s) per socket: 4
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Stepping: 7
CPU MHz: 1600.000
Virtualization: VT-x
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 6144K
Memory: 16 GB

Характеристика Debian виртуалки:
Architecture: x86_64
CPU op-mode(s): 64-bit
CPU(s): 4
Thread(s) per core: 1
Core(s) per socket: 4
CPU socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Stepping: 7
CPU MHz: 2511.846
L1d cache: 32K
L1d cache: 32K
L2d cache: 6144K
Memory: 8 GB

Java на habrahabr

Май 17, 2013

 

[Из песочницы] Построение HA систем на базе Jboss AS 6

Доброго времени суток, уважаемые хабровчане!
Прочитав этот топик, решил написать свой, так как по моему мнению автор не до конца раскрыл потенциал построение HA систем на Jboss(Tomcat), к тому же в статье есть много ошибок (не грамматических).
В этом топике я не буду приводить step-by-step по конфигурации узлов, лишь выборочно, где есть нюансы.
Читать дальше →

Java на habrahabr

Май 17, 2013

 

Как я писал Bomberman’а на Android

День добрый, уважаемые хабражители.
Писать игры хотел ещё с того момента, когда только начал программировать. И вот, решил всё-таки попробовать себя в написании игр на Android.
Игру осенью сделал ещё и выложил в маркет. Правда её удалили, так как права на Bomberman'а у Konami. Но статья, естественно, не об этом.

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

Читать дальше →

Java на habrahabr

Май 16, 2013

 

Что популярнее среди Android и Java разработчиков — Eclipse или IntelliJ IDEA?

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

В комментариях предлагаю обсуждать плюсы и минусы данных IDE.

Java на habrahabr

Май 14, 2013

 

Межбандловое взаимодействия. Equinox для разработчика

И снова здравствуйте! И снова много кода в качестве тьюториала. ;)

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

В этом посте я хочу рассказать как бандлы могут общаться между собой.
Читать дальше →

Java на habrahabr

Май 13, 2013

 

Cборка target platform. Equinox для разработчика

Когда я начинал пользоваться OSGi вопрос, собственно, разработки и отладки встал сам собой. Отлаживать самостоятельное приложение на платформе, которая встроена в Eclipse было нерационально, слишком много бандлов он содержит и слишком много зависимостей — это с одной стороны. С другой стороны не хотелось, чтобы платформа расширялась при каждом обновлении Eclipse и обрастала новыми зависимостями. Короче говоря, мне от платформы нужен был только Jetty, OSGi консоль, EclipseLink и RAP/RWT.

Я хотел полностью контролировать состав среды выполнения и отлаживать проект именно в ней. А для этого надо было выделить OSGi платформу из Eclipse и натравить его на нее обратно. Как это сделать — я расскажу в этой статье.
Читать дальше →

Java на habrahabr

Май 13, 2013

 

JAVA+Swing в 2013. Стоит ли?

На Хабре Swing не любят. Поиск по «Swing» дает либо нейтральные, либо негативные упоминания. Вот некоторые из них:

  • «Java-апплеты (доразвивались до смертельной болезни под названием Swing)»
  • «Swing — мягко говоря не самый оптимальный UI фреймворк»
  • «Swing был ужасен»

Я не возьмусь утверждать, что Swing — идеал. Это неправда. Однако я постараюсь описать те плюсы и минусы с которыми пришлось столкнуться. Читать дальше →

Java на habrahabr

Май 13, 2013

 

Использование Liquibase без головной боли. 10 советов из опыта реальной разработки

Liquibase — это система управления миграциями базы данных. Эта вторая статья о Liquibase, на этот раз содержащая советы «боевого» использования системы. Для получения базовых сведений подойдет первая статья-перевод «Управление миграциями БД с Liquibase» (ссылка).

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

Вот 10 вещей, которые в определенный момент работы с Liquibase были для меня открытием.

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


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

/db-migrations /v-1.0 /2013-03-02--01-initial-schema-import.xml /2013-03-02--02-core-data.xml /2013-03-04--01-notifications.xml /changelog-v.1.0-cumulative.xml /v-2.0 ... /changelog-v.2.0-cumulative.xml /changelog.xml
Подробнее: Читать дальше →

Java на habrahabr

Май 12, 2013

 

[Из песочницы] Stand-alone приложение RAP

Приветствую всех! Это моя первая статья, потому просьба отнестить с пониманием.

С тех пор как я впервые увидел RAP и OSGi — прошел год, но с первого взгляда я просто влюбился в эти технологии. К сожалению даже в сети очень мало документации по RAP, позволяющей написать что-то крутое (кроме hello world) с нуля. Для начала, конечно, нужно знать что такое OSGi. По этой теме инфы в сети достаточно — можно загуглить. Так как статья о RAP, подразумевается, что читатель уже знает как создавать OSGi бандлы, как их устанавливать и запускать.

То есть задача ставится так: «сделать кастомный интерфейс сайта заюзав RAP». Как создать в Eclipse проект OSGi бандла, читатель, я предполагаю, знает.
Читать дальше →

Java на habrahabr

Май 12, 2013

 

[Из песочницы] Мониторинг «на коленке» – использование Cacti для контроля Jаva приложений

В статье описывается решение для мониторинга с использованием Cacti на примере задачи анализа и контроля потребления ресурсов большого Java-приложения.

Передо мной стояла задача – в краткие сроки предложить меры по стабилизации большого трехзвенного Java-приложения, имеющего проблемы с потреблением памяти и производительностью. Времени, как обычно, мало: 1-2 недели на все. На фирме отсутствовала подходящая инфраструктура мониторинга приложений, и в мою задачу не входило ее создавать. Вариант с использованием JConsole не подходил из-за необходимости анализировать потребление за продолжительное время и смотреть его после возможных внезапных перезагрузок приложений.

В одной из фирм, где я работал, было реализовано впечатляющее по удобству и простоте решение для мониторинга Java-приложений на основе RRD Tool. Состояло оно из несложной надстройки на perl-скриптах, обеспечивающих сбор и отображение данных через HTTP и ряда доработок-агентов сбора данных в самом приложении. Для меня это стало идеей решения, однако, времени на написание обвязки над RRD у меня не было.

После аккуратного поиска нашелся бесплатный инструмент, реализующий необходимую мне надстройку – Cacti. Cacti это приложение, написанное в инфраструктуре Apache-PHP-MySql, позволяющее настраивать сбор и отображение данных мониторинга на основе веб-интерфейса. Разобраться с ним оказалось несложно, пару дней для подъема инфраструктуры, затем настройка и дописывание агентов сбора данных и все.

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

Дальше...

 
<< < 1 из 131 > >>