Pull to refresh
2
0

DBA, Linux, JVM, Kubernetes

Send message

Мягкие ссылки на страже доступной памяти или как экономить память правильно

Reading time13 min
Views162K
image
Все java-разработчики, рано или поздно, встречаются с пресловутой ошибкой OutOfMemoryError. 
После этой встречи мы начинаем более бережно относится к используемой памяти, экономить ее. Начиная с версии 1.2 в Java появился пакет java.lang.ref.* с классами SoftReference, WeakReference, PhantomReference. Далее я расскажу вам о том, как помогут эти классы в борьбе с OutOfMemoryError. И что более интересно, приведу реальные примеры их использования. Начнем.
Читать дальше →
Total votes 67: ↑62 and ↓5+57
Comments23

Многопоточность в Java

Reading time14 min
Views1.1M
Здравствуйте! В этой статье я вкратце расскажу вам о процессах, потоках, и об основах многопоточного программирования на языке Java.
Наиболее очевидная область применения многопоточности – это программирование интерфейсов. Многопоточность незаменима тогда, когда необходимо, чтобы графический интерфейс продолжал отзываться на действия пользователя во время выполнения некоторой обработки информации. Например, поток, отвечающий за интерфейс, может ждать завершения другого потока, загружающего файл из интернета, и в это время выводить некоторую анимацию или обновлять прогресс-бар. Кроме того он может остановить поток загружающий файл, если была нажата кнопка «отмена».

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

Давайте начнем. Сначала о процессах.
Читать дальше →
Total votes 75: ↑59 and ↓16+43
Comments97

Обработка строк в Java. Часть I: String, StringBuffer, StringBuilder

Reading time8 min
Views453K

Вступление


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

  1. String, StringBuffer, StringBuilder (реализация строк)
  2. Pattern, Matcher (регулярные выражения)

Реализация строк на Java представлена тремя основными классами: String, StringBuffer, StringBuilder. Давайте поговорим о них.
Читать дальше →
Total votes 30: ↑21 and ↓9+12
Comments68

Дюк, вынеси мусор! — 3. CMS и G1

Reading time10 min
Views151K
Часть 3 - CMS GC и G1 GC

Сегодня мы продолжаем цикл статей о сборщиках мусора, поставляемых с виртуальной машиной Oracle Java HotSpot VM. Мы уже изучили немного теории и рассмотрели, каким образом с кучей расправляются два базовых сборщика — Serial GC и Parallel GC. А в этой статье речь пойдет о сборщиках CMS GC и G1 GC, первостепенной задачей которых является минимизация пауз при наведении порядка в памяти приложений, оперирующих средними и большими объемами данных, то есть по большей части в памяти серверных приложений.

Два этих сборщика объединяют общим названием «mostly concurrent collectors», то есть «по большей части конкурентные сборщики». Это связано с тем, что часть своей работы они выполняют параллельно с основными потоками приложения, то есть в какие-то моменты конкурируют с ними за ресурсы процессора. Конечно, это не проходит бесследно, и в итоге они разменивают улучшение в части пауз на ухудшение в части пропускной способности. Хотя делают это по-разному. Давайте посмотрим, как.
Посмотреть, как
Total votes 33: ↑31 and ↓2+29
Comments42

Java и Linux — особенности эксплуатации

Reading time23 min
Views60K
Java — очень распространённая платформа, на ней пишут очень разные вещи, начиная от Big Data, заканчивая микросервисами, монолитами, enterprise и прочим. И, как правило, всё это развёртывают на Linux серверах. При этом, соответственно, те люди, которые пишут на Java, зачастую делают это совсем на других операционных системах. Там они:

  • пишут код;
  • отлаживают, тестируют;
  • после этого упаковывают в jar;
  • отправляют на Linux, и оно работает.

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



С другой стороны, есть те, кто занимается администрированием серверов, на их сервера устанавливают JVM, отправляют jar и war-файлы, а с точки зрения мира Linux все это:

  • чужеродное;
  • проприетарное;
  • собирается не из исходников;
  • поставляется какими-то jar-архивами;
  • «отъедает» всю память на сервере;
  • вообще, ведёт себя не по-человечески.

Цель доклада Алексея Рагозина на Highload++, расшифровка которого идет далее, была в том, чтобы рассказать особенности Java для «линуксоидов» и, соответственно, Linux — Java-разработчикам.
Total votes 55: ↑53 and ↓2+51
Comments18

Page-кэш, или как связаны между собой оперативная память и файлы

Reading time8 min
Views53K


Ранее мы познакомились с тем, как ядро управляет виртуальной памятью процесса, однако работу с файлами и ввод/вывод мы опустили. В этой статье рассмотрим важный и часто вызывающий заблуждения вопрос о том, какая существует связь между оперативной памятью и файловыми операциями, и как она влияет на производительность системы.
Читать дальше →
Total votes 41: ↑40 and ↓1+39
Comments12

Шпаргалка по управлению сервисами CentOS 7 с systemd

Reading time7 min
Views339K
Systemd – менеджер системы и сервисов в операционной системе Linux. При разработке eго стремились спроектировать обратно совместимым со скриптами инициализации SysV init и предоставить полезные функции, такие, как параллельный запуск системных сервисов во время загрузки, активацию демонов по требованию, поддержку снепшотов состояния системы и логику управления сервисами, основанную на зависимостях. В CentOS 7 systemd заменяет Upstart как систему инициализации по умолчанию.

В этой статье мы рассмотрим процесс управления сервисами в systemd для пользователя CentOS 7. Эти знания будут полезны и в других дистрибутивах, ведь systemd уже давно используется в Fedora и планируется в Ubuntu 14.10 и Debian 8. Хорошо это или нет — оставим за кадром.

CentOS 7 Systemd Infobox

В процессе чтения статьи вы можете попробовать systemd на классических VPS и облачных VPS от Infobox. Мы стремимся своевременно добавлять поддержку современных ОС, чтобы вы могли использовать последние технологии для более эффективной работы. Сама идея написания статьи родилась после очередного вопроса пользователей об использовании сервисов в CentOS 7.
Читать дальше →
Total votes 66: ↑61 and ↓5+56
Comments10

Сортировки вставками

Reading time7 min
Views178K


Общая суть сортировок вставками такова:

  1. Перебираются элементы в неотсортированной части массива.
  2. Каждый элемент вставляется в отсортированную часть массива на то место, где он должен находиться.

Траффик
Total votes 15: ↑14 and ↓1+13
Comments17

Что нужно знать про арифметику с плавающей запятой

Reading time14 min
Views951K


В далекие времена, для IT-индустрии это 70-е годы прошлого века, ученые-математики (так раньше назывались программисты) сражались как Дон-Кихоты в неравном бою с компьютерами, которые тогда были размером с маленькие ветряные мельницы. Задачи ставились серьезные: поиск вражеских подлодок в океане по снимкам с орбиты, расчет баллистики ракет дальнего действия, и прочее. Для их решения компьютер должен оперировать действительными числами, которых, как известно, континуум, тогда как память конечна. Поэтому приходится отображать этот континуум на конечное множество нулей и единиц. В поисках компромисса между скоростью, размером и точностью представления ученые предложили числа с плавающей запятой (или плавающей точкой, если по-буржуйски).

Арифметика с плавающей запятой почему-то считается экзотической областью компьютерных наук, учитывая, что соответствующие типы данных присутствуют в каждом языке программирования. Я сам, если честно, никогда не придавал особого значения компьютерной арифметике, пока решая одну и ту же задачу на CPU и GPU получил разный результат. Оказалось, что в потайных углах этой области скрываются очень любопытные и странные явления: некоммутативность и неассоциативность арифметических операций, ноль со знаком, разность неравных чисел дает ноль, и прочее. Корни этого айсберга уходят глубоко в математику, а я под катом постараюсь обрисовать лишь то, что лежит на поверхности.
Читать дальше →
Total votes 245: ↑242 and ↓3+239
Comments75

Энергонезависимая память NVDIMM для защиты кэша в RAIDIX 4.6

Reading time7 min
Views15K


В этой статье мы подробнее расскажем о поддержке энергонезависимой памяти (NVDIMM) в ПО RAIDIX 4.6. Новую версию ПО взяли на вооружение наши ключевые партнеры. Так, управляющее ПО RAIDIX 4.6 уже используется в новой СХД Trinity FlexApp от «Тринити».

Персистентная память и стандарт NVDIMM


Новый RAIDIX работает с персистентной памятью (PMEM), которая объединяет в себе преимущества традиционных устройств хранения данных и большую пропускную способность памяти DRAM. Данный тип памяти допускает побайтовую адресацию (load/store), и – в отличии от традиционных «блочников» – функционирует со скоростью DRAM и соответствующими низкими задержками. В случае потери питания на сервере все содержимое памяти остается нетронутым и может быть восстановлено после загрузки. В настоящее время этот тип памяти доступен в форме модулей NVDIMM (Non-Volatile Dual Inline Memory Module).
Читать дальше →
Total votes 12: ↑12 and ↓0+12
Comments2

Новая память для новой архитектуры хранения данных

Reading time7 min
Views25K
В течение последнего десятилетия быстродействие процессоров выросло примерно в 10 раз, оперативной памяти – в 8 раз, сетей – в 100 раз, внутренней шины вычислительных систем – в 20 раз, а накопителей на жестких дисках – всего в 1,5 раза. То есть увеличение производительности подсистемы хранения серверов существенно отстает от роста производительности центрального процессора, оперативной памяти, внутренней шины, а также пропускной способности сетей. Недостаточная производительность традиционных жестких дисков (HDD) приводит к увеличению времени отклика приложений. Еще вчера решением могло быть только использование SSD или PCIe-флэш. Сегодня мы шагнули еще дальше с новым типом накопителей непосредственно на шине оперативной памяти!


Читать дальше →
Total votes 14: ↑13 and ↓1+12
Comments56

О главном инструменте разработчика, аналитика и руководителя

Reading time8 min
Views30K
Думаю, все были на собеседованиях и на вопрос «какие инструменты вы используете в работе», у всех заготовлен ответ про языки, библиотеки, среды разработки, базы данных и т.д. и т.п. В крайнем случае, у кого-то может быть припасена шутка про грабли и напильник. Ну и все доблестно перечисляют всякие Spring'и Hibernate'ы думая что перечисляют невероятно важные средства разработки, в которых хорошо разбираются. Но правда заключается в том, что единственно важным средством разработки является ваш мозг. И вы абсолютно ничего не знаете о том, как он устроен.


Эта статья основана на книге Андрея Курпатова Чертоги разума. Андрей Курпатов — российский врач-психотерапевт, телевизионный продюсер, автор книг по психологии, научных монографий по психотерапии и философии.
Читать дальше →
Total votes 23: ↑19 and ↓4+15
Comments52

Когда небеса утратили совершенство

Reading time10 min
Views7.2K

Приход телескопов сломал наши идеалы, связанные с ночным небом




У меня в руке – небольшая книга, "Звёздный вестник" (в оригинале на латыни — Sidereus Nuncius), написанная итальянским математиком и учёным Галилео Галилеем в 1610. Первое издание напечатали тиражом в 550 экземпляров, из которых до сегодняшнего дня дошло полторы сотни. Несколько лет назад на аукционе Кристис первые издания книги оценивали в сумму от $600 000 до $800 000. Моя копия в мягкой обложке, напечатанная в 1989, обошлась мне в $12.

И хотя история науки не увенчала «Вестник» такими же щедрыми лаврами, как Ньютоновские "Математические начала натуральной философии" или Дарвиновское "Происхождение видов", я считаю, что это была одна из наиболее влиятельных научных книг, когда-либо изданных. В этой небольшой книге Галилей сообщает о том, что увидел, развернув свой новый телескоп по направлению к небесам: явные свидетельства того, что небесные тела состоят из обычного материала, такого, как зимний лёд на островах. Результат вызвал революцию в умах, разделявших небо и землю, вызвал захватывающее расширение территории материального мира и бросил вызов Абсолюту. Материальность звёзд, совмещённая с законом сохранения энергии, говорит о том, что звёзды обречены на вымирание. Звёзды в небе, наиболее яркие символы бессмертия и постоянства, однажды закончат свою жизнь и умрут.
Читать дальше →
Total votes 24: ↑22 and ↓2+20
Comments17

Oracle RAC. Общее описание / Часть 1

Reading time10 min
Views73K
Высоконагруженные сайты, доступность «5 nines». На заднем фоне (backend) куча обрабатываемой информации в базе данных. А что, если железо забарахлит, если вылетит какая-то давно не проявлявшаяся ошибка в ОС, упадет сетевой интерфейс? Что будет с доступностью информации? Из чистого любопытства я решил рассмотреть, какие решения вышеперечисленным проблемам предлагает Oracle. Последние версии, в отличие от Oracle 9i, называются Oracle 10g (или 11g), где g – означает «grid», распределенные вычисления. В основе распределенных вычислений «как ни крути» лежат кластера, и дополнительные технологии репликации данных (DataGuard, Streams). В этой статье в общих чертах описано, как устроен кластер на базе Oracle 10g. Называется он Real Application Cluster (RAC).

Статья не претендует на полноту и всеобъемлемость, также в ней исключены настройки (дабы не увеличивать в объеме). Смысл – просто дать представление о технологии RAC.

P.S. Beware of the многабукаф
Продолжение статьи

Читать дальше →
Total votes 55: ↑49 and ↓6+43
Comments10

«20 тысяч IOPS на узел — хорошие показатели с учётом задержек в 5 мс». Для OLTP — нет

Reading time14 min
Views40K

КДПВ


Поводом написать эту статью стал весьма достойный обзор Как мы тестировали VMware vSAN... компании КРОК. Обзор-то достойный, но в нем есть фраза, с которой я борюсь уже больше десятка лет. Админы СХД, виртуализаторы и интеграторы раз за разом повторяют: "Задержки в 5 мс — это отличный показатель". Даже цифра в 5 мс десять лет не меняется. Я это слышал вживую от весьма уважаемых админов уже не меньше десятка раз. От менее уважаемых — десятки, а уж сколько раз читал в интернете… Нет, нет, нет. Для OLTP нагрузок 5 мс, особенно так, как их обычно измеряют — это epic fail. Мне приходилось объяснять причины этого уже много раз, на этот раз я решил собрать свои мысли в переиспользуемую форму.


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

Читать дальше →
Total votes 73: ↑71 and ↓2+69
Comments58
12 ...
24

Information

Rating
Does not participate
Location
Россия
Registered
Activity