Как стать автором
Обновить
11
Карма
0
Рейтинг
Герман Сёмин @v0devil

Site Reliability Engineer

  • Подписчики 11
  • Подписки 1
  • Публикации
  • Комментарии

Ускоряем интернет-запросы и спим спокойно

Блог компании JUG Ru GroupКонференцииDevOps


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

Наглядный пример Netflix подхода к разработке и поддержке сложных систем на DevOops 2019 представил Сергей Федоров — директор по разработке в Netflix. Выпускник факультета ВМК ННГУ им. Лобачевского, Сергей один из первых инженеров в Open Connect — CDN команды в Netflix. Он построил системы мониторинга и анализа видеоданных, запустил популярный сервис для оценки скорости Интернет-соединения FAST.com и последние несколько лет работает над оптимизацией Интернет запросов, чтобы Netflix приложение работало как можно быстрее для пользователей.

Доклад получил лучшие отзывы от участников конференции, и мы подготовили для вас текстовую версию.
Читать дальше →
Всего голосов 21: ↑21 и ↓0+21
Просмотры6.4K
Комментарии 1

Deep dive into PostgreSQL internal statistics. Алексей Лесовский

Системное администрированиеPostgreSQLSQLАдминистрирование баз данных

Расшифровка доклада 2015 года Алексея Лесовского "Deep dive into PostgreSQL internal statistics"


Disclaimer от автора доклада: Замечу что доклад этот датирован ноябрем 2015 года — прошло больше 4 лет и прошло много времени. Рассматриваемая в докладе версия 9.4 уже не поддерживается. За прошедшие 4 года вышло 5 новых релизов в которых появилась масса новшеств, улучшений и изменений относительно статистики и часть материала устарела и не актуальна. По мере ревью я постарался отметить эти места чтобы не вводить тебя читатель в заблуждения. Переписывать же эти места я не стал, их очень много и получится в итоге совсем другой доклад.


СУБД PostgreSQL — это огромный механизм, при этом состоит этот механизм из множества подсистем, от слаженной работы которых напрямую зависит производительность СУБД. В процессе эксплуатации обеспечивается сбор статистики и информации о работе компонентов, что позволяет оценить эффективность PostgreSQL и принять меры для повышения производительности. Однако, этой информации очень много и представлена она в достаточно упрощенном виде. Обработка этой информации и ее интерпретация порой совсем нетривиальная задача, а "зоопарк" инструментов и утилит запросто поставит в тупик даже продвинутого DBA.

Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Просмотры2.5K
Комментарии 2

Linux tuning to improve PostgreSQL performance. Илья Космодемьянский

Системное администрированиеPostgreSQLSQL*nixАдминистрирование баз данных

Расшифровка доклада 2015 года Ильи Космодемьянского "Linux tuning to improve PostgreSQL performance"


Disclaimer: Замечу что доклад этот датирован ноябрем 2015 года — прошло больше 4 лет и прошло много времени. Рассматриваемая в докладе версия 9.4 уже не поддерживается. За прошедшие 4 года вышло 5 новых релизов PostgreSQL вышло и 15 версий ядра Linux. Если переписывать эти места, то получится в итоге другой доклад. Но здесь рассмотрен фундаментальный тюнинг Linux для PostgreSQL, который актуален и сейчас.


Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Просмотры9.9K
Комментарии 5

Сети для начинающего IT-специалиста. Обязательная база

Системное администрированиеIT-инфраструктураУчебный процесс в ITКарьера в IT-индустрии
Из песочницы
🔥 Технотекст 2020

Примерно 80% из нас, кто заканчивает университет с какой-либо IT-специальностью, в итоге не становится программистом. Многие устраиваются в техническую поддержку, системными администраторами, мастерами по наладке компьютерных устройств, консультантами-продавцами цифровой техники, менеджерами в it-сферу и так далее.


Эта статья как раз для таких 80%, кто только закончил университет с какой-либо IT-специальностью и уже начал мониторить вакансии, например, на должность системного администратора или его помощника, либо выездного инженера в аутсорсинговую фирму, либо в техническую поддержку 1-й/2-й линии.


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


За время своей трудовой деятельности в сфере IT я столкнулся с такой проблемой, что в университетах не дают самую основную базу касательно сетей. С этим я столкнулся сначала сам, когда, после окончания университета, ходил по собеседованиям в 2016 году и не мог ответить на простые (как мне сейчас кажется) вопросы. Тогда мне конечно показалось, что это я прохалтурил и не доучил в университете. Но как оказалось дело в образовательной программе. Так как сейчас, я также сталкиваюсь с данным пробелом знаний, когда обучаю новых сотрудников.


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


Именно поэтому я решил собрать основные темы в одну статью и объяснить их как можно проще «на пальцах».

Читать дальше →
Всего голосов 77: ↑66 и ↓11+55
Просмотры166K
Комментарии 98

Основы мониторинга PostgreSQL. Алексей Лесовский

Системное администрированиеPostgreSQLSQL*nixАдминистрирование баз данных

Предлагаю ознакомиться с расшифровкой доклада Алексей Лесовский из Data Egret "Основы мониторинга PostgreSQL"


В этом докладе Алексей Лесовский расскажет о ключевых моментах постгресовой статистики, что они означают, и почему они должны присутствовать в мониторинге; о том, какие графики должны быть в мониторинге, как их добавить и как интерпретировать. Доклад будет полезен администраторам баз данных, системным администраторам и разработчикам, которым интересен траблшутинг Postgres'а.


Читать дальше →
Всего голосов 25: ↑25 и ↓0+25
Просмотры26K
Комментарии 6

Chaos Engineering: искусство умышленного разрушения. Часть 3

Блог компании ФлантТестирование IT-систем
Перевод
Прим. перев.: Это продолжение цикла статей от технологического евангелиста из AWS (Adrian Hornsby) про довольно новую ИТ-дисциплину — chaos engineering, — в рамках которой инженеры проводят эксперименты, призванные смягчить последствия сбоев в системах. Первый материал этого цикла рассказывал про концепцию chaos engineering в целом, второй — о том, как эта деятельность способствует позитивным культурным изменениям внутри организаций.



Последний материал посвящён практике хаос-инжиниринга: методам экспериментирования и инструментам для их непосредственной реализации. Несмотря на то, что его перевод уже публиковался на днях на хабре, у нас готова своя версия, которая кажется нам качественной и по-прежнему уместной для размещения. Так весь цикл перевода этих статей был представлен в едином стиле и наши подписчики — читатели прошлых частей — увидят его полностью.
Читать дальше →
Всего голосов 33: ↑32 и ↓1+31
Просмотры5.9K
Комментарии 0

ClickHouse + Graphite: как значительно уменьшить потребляемое место на дисках

Open sourceСистемное администрированиеАдминистрирование баз данныхВизуализация данныхDevOps


Приветствую, habr.


Если кто-то эксплуатирует систему graphite-web и столкнулся с проблемой производительности хранилища whisper (IO, потребляемое дисковое пространство), то шанс того, что был брошен взгляд на ClickHouse в качестве замены, должен стремиться к единице. Данное утверждение подразумевает то, что в качестве принимающего метрики демона уже используется сторонняя реализация, например carbonwriter или go-carbon.


ClickHouse хорошо решает описанные проблемы. К примеру, после переливки 2TiB данных из whisper, они уместились в 300GiB. Подробно на сравнении я останавливаться не буду, статей на эту тему хватает. К тому же, до недавнего времени с нашим ClickHouse хранилищем было не всё идеально.

Так что же не так?
Всего голосов 11: ↑10 и ↓1+9
Просмотры4.8K
Комментарии 0

Chaos Engineering: искусство умышленного разрушения. Часть 1

Блог компании ФлантТестирование IT-системСистемное администрированиеТестирование веб-сервисовDevOps
Перевод
Прим. перев.: Рады поделиться переводом замечательного материала от старшего технологического евангелиста из AWS — Adrian Hornsby. В простых словах он объясняет важность экспериментов, призванных смягчить последствия сбоев в ИТ-системах. Вы, наверное, уже слышали про Chaos Monkey (или даже применяли подобные решения)? На сегодняшний день подходы к созданию подобных инструментов и их реализация в более широком контексте осуществляются в рамках деятельности, которую называют chaos engineering. Подробнее о ней читайте в этой статье.



«Но за всей этой красотой скрывается хаос и безумие». — Tanner Walling

Пожарные. Эти высококвалифицированные специалисты каждый день рискуют жизнью, борясь с огнем. Знаете ли вы, что перед тем, как стать пожарным, необходимо провести в тренировках минимум 600 часов? И это только начало. Согласно отчетам, пожарные тренируются до 80% своего рабочего времени.

Почему?

Читать дальше →
Всего голосов 43: ↑42 и ↓1+41
Просмотры21K
Комментарии 3

WAL в PostgreSQL: 1. Буферный кеш

Блог компании Postgres ProfessionalPostgreSQLSQL
Предыдущий цикл был посвящен изоляции и многоверсионности PostgreSQL, а сегодня мы начинаем новый — о механизме журналирования (write-ahead logging). Напомню, что материал основан на учебных курсах по администрированию, которые делаем мы с Павлом pluzanov, но не повторяет их дословно и предназначен для вдумчивого чтения и самостоятельного экспериментирования.

Этот цикл будет состоять из четырех частей:


Читайте и другие серии.

Индексы:

  1. Механизм индексирования;
  2. Интерфейс метода доступа, классы и семейства операторов;
  3. Hash;
  4. B-tree;
  5. GiST;
  6. SP-GiST;
  7. GIN;
  8. RUM;
  9. BRIN;
  10. Bloom.

Изоляция и многоверсионность:

  1. Изоляция, как ее понимают стандарт и PostgreSQL;
  2. Слои, файлы, страницы — что творится на физическом уровне;
  3. Версии строк, виртуальные и вложенные транзакции;
  4. Снимки данных и видимость версий строк, горизонт событий;
  5. Внутристраничная очистка и HOT-обновления;
  6. Обычная очистка (vacuum);
  7. Автоматическая очистка (autovacuum);
  8. Переполнение счетчика транзакций и заморозка.

Блокировки:

  1. Блокировки отношений;
  2. Блокировки строк;
  3. Блокировки других объектов и предикатные блокировки;
  4. Блокировки в оперативной памяти.


Читать дальше →
Всего голосов 38: ↑37 и ↓1+36
Просмотры25K
Комментарии 23

WAL в PostgreSQL: 3. Контрольная точка

Блог компании Postgres ProfessionalPostgreSQLSQL
Мы уже познакомились с устройством буферного кеша — одного из основных объектов в разделяемой памяти, — и поняли, что для восстановления после сбоя, когда содержимое оперативной памяти пропадает, нужно вести журнал предзаписи.

Нерешенная проблема, на которой мы остановились в прошлый раз, состоит в том, что неизвестно, с какого момента можно начинать проигрывание журнальных записей при восстановлении. Начать с начала, как советовал Король из Алисы, не получится: невозможно хранить все журнальные записи от старта сервера — это потенциально и огромный объем, и такое же огромное время восстановления. Нам нужна такая постепенно продвигающаяся вперед точка, с которой мы можем начинать восстановление (и, соответственно, можем безопасно удалять все предшествующие журнальные записи). Это и есть контрольная точка, о которой сегодня пойдет речь.

Контрольная точка


Каким свойством должна обладать контрольная точка? Мы должны быть уверены, что все журнальные записи, начиная с контрольной точки, будут применяться к страницам, записанным на диск. Если бы это было не так, при восстановлении мы могли бы прочитать с диска слишком старую версию страницы и применить к ней журнальную запись, и тем самым безвозвратно повредили бы данные.
Читать дальше →
Всего голосов 32: ↑31 и ↓1+30
Просмотры12K
Комментарии 20

Последние изменения в IO-стеке Linux с точки зрения DBA

Блог компании Конференции Олега Бунина (Онтико)Высокая производительностьНастройка LinuxPostgreSQLАдминистрирование баз данных
Главные вопросы работы с базой данных связаны с особенностями устройства операционной системы, на которой работает база. Сейчас Linux — основная операционная система для баз данных. Solaris, Microsoft и даже HPUX все еще применяются в энтерпрайзе, но первое место им больше никогда не занять, даже вместе взятым. Linux уверенно завоевывает позиции, потому что open source баз данных все больше. Поэтому вопрос взаимодействия БД с ОС, очевидно, о базах данных в Linux. На это накладывается вечная проблема БД — производительность IO. Хорошо, что в Linux последние годы идет капитальный ремонт IO-стека и есть надежда на просветление.


Илья Космодемьянский (hydrobiont) работает в компании Data Egret, которая занимается консалтингом и поддержкой PostgreSQL, и про взаимодействие ОС и баз данных знает многое. В докладе на HighLoad++ Илья рассказал о взаимодействии IO и БД на примере PostgreSQL, но и показал, как с IO работают другие БД. Рассмотрел стек Linux IO, что нового и хорошего в нем появилось и почему все не так, как было пару лет назад. В качестве полезной памятки — контрольный список настроек PostgreSQL и Linux для максимальной производительности подсистемы IO в новых ядрах.
Читать дальше →
Всего голосов 48: ↑43 и ↓5+38
Просмотры17K
Комментарии 9

«Сгоревшие» сотрудники: есть ли выход?

Блог компании BadooУправление разработкойУправление персоналомКарьера в IT-индустрииЗдоровье
Ты работаешь в хорошей компании. Вокруг тебя крутые профессионалы, получаешь достойную зарплату, каждый день делаешь важные и нужные вещи. Илон Маск запускает спутники, Сергей Семёнович улучшает и без того лучший город Земли. Погода отличная, солнце светит, деревья цветут — живи да радуйся!

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

Что же делать? Как работать с Игнатом? Добро пожаловать под кат!


Читать дальше →
Всего голосов 224: ↑210 и ↓14+196
Просмотры138K
Комментарии 400

Индексы в PostgreSQL — 1

Блог компании Postgres ProfessionalPostgreSQLSQL

Предисловие


В этой серии статей речь пойдет об индексах в PostgreSQL.

Любой вопрос можно рассматривать с разных точек зрения. Мы будем говорить о том, что должно интересовать прикладного разработчика, использующего СУБД: какие индексы существуют, почему в PostgreSQL их так много разных, и как их использовать для ускорения запросов. Пожалуй, тему можно было бы раскрыть и меньшим числом слов, но мы втайне надеемся на любознательного разработчика, которому также интересны и подробности внутреннего устройства, тем более, что понимание таких подробностей позволяет не только прислушиваться к чужому мнению, но и делать собственные выводы.

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

В этой части мы поговорим про разделение сфер ответственности между общим механизмом индексирования, относящимся к ядру СУБД, и отдельными методами индексного доступа, которые в PostgreSQL можно добавлять как расширения. В следующей части мы рассмотрим интерфейс метода доступа и такие важные понятия, как классы и семейства операторов. После такого длинного, но необходимого введения мы подробно рассмотрим устройство и применение различных типов индексов: Hash, B-tree, GiST, SP-GiST, GIN и RUM, BRIN и Bloom.
Читать дальше →
Всего голосов 104: ↑103 и ↓1+102
Просмотры186K
Комментарии 59

Indexes in PostgreSQL — 7 (GIN)

Блог компании Postgres ProfessionalPostgreSQLSQL
Перевод
We have already got acquainted with PostgreSQL indexing engine and the interface of access methods and discussed hash indexes, B-trees, as well as GiST and SP-GiST indexes. And this article will feature GIN index.

GIN


«Gin?.. Gin is, it seems, such an American liquor?..»
«I'm not a drink, oh, inquisitive boy!» again the old man flared up, again he realized himself and again took himself in hand. «I am not a drink, but a powerful and undaunted spirit, and there is no such magic in the world that I would not be able to do.»

— Lazar Lagin, «Old Khottabych».

Gin stands for Generalized Inverted Index and should be considered as a genie, not a drink.
README
Read more →
Всего голосов 17: ↑16 и ↓1+15
Просмотры20K
Комментарии 0

Использование JavaScript-консоли в браузерах

Блог компании RUVDS.comРазработка веб-сайтовJavaScriptБраузеры
Перевод
Tutorial
Сегодня мы публикуем заметку, посвящённую особенностям использования JavaScript-консоли в браузерах, лежащим за пределами широко известной команды console.log(). Собственно говоря, эта команда представляет собой простейший инструмент для отладки программ, который позволяет выводить что-либо в консоль. Однако знание некоторых особенностей этого инструмента позволит тем, кто им пользуется, повысить эффективность работы.


Читать дальше →
Всего голосов 67: ↑57 и ↓10+47
Просмотры24K
Комментарии 10

Нагрузочное тестирование игры с парой сотен тысяч виртуальных пользователей

Высокая производительностьТестирование веб-сервисовТестирование игр
Привет, Хабр!

Я работаю в игровой компании, которая разрабатывает онлайн-игры. На текущий момент все наши игры делятся на множество “маркетов” (один “маркет” на страну) и в каждом “маркете” есть дюжина миров, между которыми распределяются игроки при регистрации (ну или иногда они могут выбрать его сами). Каждый мир имеет одну базу данных и один или несколько web/app-серверов. Таким образом, нагрузка делится и распределяется по мирам/серверам почти равномерно и в итоге мы получаем максимальный онлайн в 6K-8K игроков (это максимум, в основном в разы меньше) и 200-300 запросов в “прайм”-тайм на один мир.

Такая структура с делением игроков по маркетам и мирам изживает себя, игрокам хочется чего-то глобального. В последних играх мы перестаём делить людей по странам и оставили только один/два маркета (Америка и Европа), но до сих пор со множеством миров в каждом. Следующим этапом будет разработка игр с новой архитектурой и объединением всех игроков в одном единственном мире с одной базой данных.

Сегодня я хотел немного рассказать о том, как мне была поставлена задача проверить, а что если весь онлайн (а это 50-200 тысяч пользователей одновременно) одной из наших популярных игр «отправить» играть в следующую игру, построенною на новой архитектуре и сможет ли вся система, в особенности база данных (PostgreSQL 11) практически выдержать такую нагрузку и, если не сможет, узнать, где же наш максимум. Расскажу немного о возникших проблемах и решениях подготовки к тестированию такого количества пользователей, самом процессе и немного о результатах.
Читать дальше →
Всего голосов 18: ↑18 и ↓0+18
Просмотры8.2K
Комментарии 3

Бесшовная (почти) миграция между мажорными релизами PostgreSQL с помощью логической репликации

Блог компании True EngineeringВысокая производительностьPostgreSQLАдминистрирование баз данныхDevOps
Tutorial
У нас в True Engineering на одном проекте назрела необходимость в смене версии PostgreSQL с 9.6 на 11.1.

Зачем? База данных на проекте уже объемом 1,5 Tb и растет. Перформанс – одно из основных требований к системе. А сама структура данных эволюционирует: добавляются новые колонки, меняются существующие. Новая версия Postgres научилась эффективно работать с добавлением новых колонок с дефолтным значением, так что не нужно городить кастомных костылей на уровне приложения. Ещё в новой версии добавили несколько новых способов партиционирования таблиц, что тоже крайне полезно в условиях большого объема данных.

Итак, решено, мигрируем. Конечно, можно поднять параллельно со старой новую версию сервера PostgreSQL, остановить приложение, через dump/restore (или pg_upgrade) переместить базу и снова запустить приложение. Нам это решение не подошло из-за большого размера базы, к тому же, приложение работает в боевом режиме, и на даунтайм есть считанные минуты.

Поэтому мы решили попробовать миграцию с помощью логической репликации в PostgreSQL с использованием стороннего плагина под названием pglogical.

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



TL;DR

  • Всё получилось (не без костылей, о них и статья).
  • Мигрировать можно в рамках PostgreSQL версии от 9.4 до 11.x, с любой версии на любую, вниз или вверх.
  • Даунтайм равен времени, которое требуется вашему приложению, чтобы переподключиться к новому серверу БД (в нашем случае это был перезапуск всего приложения, но в дикой природе, очевидно, «возможны варианты»).
Читать дальше →
Всего голосов 38: ↑38 и ↓0+38
Просмотры12K
Комментарии 30

Бэкап для Linux, или как создать снапшот

Блог компании Veeam SoftwareOpen sourceCРезервное копированиеРазработка под Linux
Всем привет! Я работаю в Veeam над проектом Veeam Agent for Linux. С помощью этого продукта можно бэкапить машину с ОС Linux. «Agent» в названии означает, что программа позволяет бэкапить физические машины. Виртуалки тоже бэкапит, но располагается при этом на гостевой ОС.

Вдохновением для этой статьи послужил мой доклад на конференции Linux Piter, который я решил оформить в виде статьи для всех интересующихся хабражителей.

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

Всех заинтересовавшихся прошу под кат!


Читать дальше →
Всего голосов 22: ↑22 и ↓0+22
Просмотры23K
Комментарии 5

Производительность PHP: планируем, профилируем, оптимизируем

Блог компании BadooВысокая производительностьРазработка веб-сайтовPHPПрограммирование


Привет, Хабр! Два года назад мы писали о том, как перешли на PHP 7.0 и сэкономили миллион долларов. На нашем профиле нагрузки новая версия оказалась в два раза более эффективной по использованию CPU: ту нагрузку, которую раньше у нас обслуживали ~600 серверов, после перехода начали обслуживать ~300. В результате на протяжении двух лет у нас был запас мощностей.

Но Badoo растёт. Количество активных пользователей постоянно увеличивается. Мы совершенствуемся и развиваем нашу функциональность, благодаря чему пользователи проводят в приложении всё больше времени. А это, в свою очередь, отражается на количестве запросов, которое за два года увеличилось в 2—2,5 раза.

Мы оказались в ситуации, когда двукратный выигрыш в производительности нивелировался более чем двукратным ростом запросов, и мы опять стали приближаться к пределам нашего кластера. В ядре PHP снова ожидаются полезные оптимизации (JIT, предзагрузка), но они запланированы только на PHP 7.4, а эта версия выйдет не раньше, чем через год. Поэтому трюк с переходом сейчас повторить не удастся — нужно оптимизировать сам код приложения.

Под катом я расскажу, как мы подходим к таким задачам, какими пользуемся инструментами, и приведу примеры оптимизаций, идей и подходов, которые мы применяем и которые помогли нам в своё время.
Читать дальше →
Всего голосов 105: ↑105 и ↓0+105
Просмотры33K
Комментарии 58

Руководство по Node.js, часть 4: npm, файлы package.json и package-lock.json

Блог компании RUVDS.comРазработка веб-сайтовJavaScriptNode.JS
Перевод
Tutorial
Сегодня мы публикуем четвёртую часть перевода руководства по Node.js. В этом материале мы начнём разговор об npm а также рассмотрим особенности файлов package.json и package-lock.json.



Читать дальше →
Всего голосов 28: ↑28 и ↓0+28
Просмотры90K
Комментарии 8
1

Информация

В рейтинге
Не участвует
Откуда
Hamburg, Hamburg, Германия
Дата рождения
Зарегистрирован
Активность