Дорожка из: Дорожки из гравия своими руками, как сделать тропинку на даче в саду

Содержание

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

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

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

 

Дорожки из гравия своими руками в саду на даче

Дорожка из гравия как элемент ландшафтного дизайна

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

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

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

Дорожки из гравия своими руками в саду на даче

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

Материал для дорожки на даче и в саду

Галечник для дорожкиГалечник имеет небольшие фракции (камешки), обычно округлой формы благодаря длительному воздействию реки или моря. Галечную дорожку не следует насыпать слоем толще 5 см, поскольку ее фракции не могут хорошо сцепляться друг с другом и быстро «расползаются» по сторонам. Плюс, увеличение слоя галечной дорожки еще более затрудняет ходьбу по ней.

Щебень гравийный для дорожкиЩебень гравийный или, как часто говорят, «щебенка» обладает фракциями самых разных форм, что создает достаточно хорошее сцепление.
Дорожка из щебенки неплохо сохраняет форму и не создает значительных неудобств при ходьбе. Сланец дробленый для дорожкиДробленый сланец применяется при устройстве дорожек, создающих декоративный эффект и расположенных возле клумб, деревьев, кустов, других компонентов сада.

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

Садовые дорожки из гравия – преимущества и недостатки

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

Соответственно, себестоимость изготовления и трудозатраты будут не столь высоки. Богатый ассортимент гравийного материала создает возможности для реализации самых изысканных решений садового ландшафта.

Фракции гравия замечательно гармонируют со многими другими материалами: металлом, деревом, камнем. На дорожке можно с успехом разместить доски, небольшие столбики, камни, гальку крупного размера. Гравий практически не изнашивается, и будет использоваться очень долго. За ним не требуется тщательный и специальный уход, что не мешает гравию сохранять свое исходное качество.

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

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

И наконец, кому-то дорожки из гравия кажутся уж очень «деревенскими», не «шикарными».

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

Садовые дорожки из гравия – преимущества и недостатки

Устройство дорожек из гравия – процесс изготовления своими руками

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

Устройство дорожек из гравияРазметка

Для нее подойдут колышки из дерева или металла, на которые натягивается любая веревка или шнур. Так создаются границы строящихся дорожек.

Устройство дорожки из гравия
Подготовка «ложа»

То есть рытье небольшой траншеи. Поверхностный слой земли удаляется на 15-20 см, затем траншею следует вскопать. Таким образом удается избавиться на определенный срок от борьбы с сорняками.

Изготовление дорожки из гравия
Устройство «ложа»

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

Изготовление дорожки из гравия
Насыпка гравия

Подготовленное «ложе» засыпается слоем мелкого гравия толщиной в 3-5 см. Полученную дорожку следует утрамбовать.

Логичным завершением перечисленных процедур являются декоративное оформление дорожки. Здесь не обойтись без бордюрного камня. Он, во-первых, играет декоративную роль, во-вторых, предотвратит «растекание» гравия по сторонам, где он будет засорять ближайшую территорию.

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

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

Как сделать дорожку из гравия — видео инструкция



Дорожка из гравия — фото вариантов устройства

Дорожка из гравия как элемент ландшафтного дизайнаДорожка из гравия как элемент ландшафтного дизайна

Дорожка из цемента в саду

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

СодержаниеСвернуть

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

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

Этапы строительства садовых дорожек из цемента

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

Колесная база двухколесной тачки грузоподъемностью 50 кг составляет 700 мм, отсюда следует, что ширина садовой дорожки должна быть не менее 1000 мм или 1 метра. Толщина дорожки для ходьбы и езды садовой тачкой должна быть не менее 50 мм.

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

Материалы и инструменты

  • Основные материалы: портландцемент марки ЦЕМ I 32,5Н ПЦ (М400), гранитный щебень фракции 5-40 мм, строительный или речной песок, чистая вода.
  • Хорошо обожженный красный рядовой кирпич (можно бывший в эксплуатации).
  • Полоски тонколистового металла 100х50 мм, или полоски оконного стекла 100х50 мм толщиной 3-4 мм или деревянные реечки (дранка), размерами 1000 х 50х3 (5) мм для температурных швов.
  • Сетка рабица, стальная сетка для штукатурки или б/ушный стальной хлам в виде ненужных полосок металла, кусков толстой проволоки, сеток от старых кроватей и т.п. для армирования.
  • Металлические иди деревянные колышки, бечевка для разметки.
  • Полиэтиленовая пленка.
  • Чтобы залить дорожки в саду своими руками из цемента необходимо подготовить штыковые и совковые лопаты, металлические ведра, стандартный лист железа (1х2 метра) толщиной 1-1,5 мм или бетономешалку.
  • Строительный уровень, строительное правило, шпатель

Подготовка фронта работ под заливку

  • Разметка будущей конструкции с помощью колышков и бечевки. Здесь следует заметить, что, так как в качестве несъемной опалубки будет использоваться красный кирпич, ширина разметки составляет 1 метр + 130 мм (толщина двух рядовых кирпичей).
  • Выемка грунта на глубину 120 мм по всей площади дорожки.
  • Установка несъемной опалубки – красного кирпича. Благодаря стабильности размеров – ширины 120 мм, красный кирпич можно использовать как опалубку и как отделку границ дорожки. По обеим сторонам будущей дорожки, в ее начале, выкладывается по одному кирпичу в формате «на ребро по длине» и обеспечивается их горизонтальность с помощью уровня и подсыпки грунта. Следующий кирпич планируется по горизонтали «по предыдущему кирпичу», и так, либо до окончания дорожки, либо до окончания очередной порции заливки. Кирпич в этом варианте выполняет несколько функций. Первая функция – служит «маяком для верхней границы заливки. Вторая функция предохраняет внешние границы дорожки от разрушения. Третья функция – создает архитектурно оконченный привлекательный внешний вид.
  • Укладка и трамбовка слоя дренажа (щебень и песок, смешанные в равных пропорциях) толщиной 70мм.
  • Укладка армирующего слоя из сетки или ненужного металлического хлама.

Как залить дорожку из цемента после проведения подготовительных работ?

Готовится или приобретается бетонный раствор марки М150 на основе цемента ЦЕМ I 32,5Н ПЦ (М400). Здесь возможны три варианта. Первый вариант, приобрести необходимое количество раствора на ближайшем бетонном заводе. Второй вариант, использовать для замешивания собственную или арендную бетономешалку. Третий, самый бюджетный вариант – готовить раствор порциями на стальном листе при помощи совковой и штыковой лопаты.

Какой вариант выбрать, личное дело и финансовые возможности конкретного застройщика.

Раствор для садовых дорожек – цемент и песок, а также щебень замешивается в следующих пропорциях, кг: 1 часть цемента, 3,5 части песка, 5,3 части щебня, 0,9 части воды. Сначала с помощью весов или ведер отмеряются и тщательно перемешиваются цемент, песок и щебень, потом добавляется вода, и все компоненты еще раз тщательно перемешиваются.

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

Чтобы садовую дорожку не разорвало при сезонном перепаде температур, через каждые 1-1,5 метра заливки предусматриваются температурные швы. Функцию температурных швов выполняют установленные перпендикулярно кирпичам полоски металла, стекла или древесные планки. Можно организовать температурные швы, заливая край очередной порции заливки битумом, однако это не очень эстетично, хотя и имеет право на жизнь.

Железнение

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

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

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

  • Сразу после заливки, штыкования и разравнивания раствора очередной партии бетона аккуратно посыпать поверхность чистым раствором толщиной 2-3 мм.
  • Аккуратно, разбрызгиванием руками или садовым опрыскивателем увлажнить цемент водой, следя чтобы не было размывания до основы.
  • Использовать строительный шпатель для «втирания» круговыми движениями смоченного цемента в поверхность дорожки.
  • Контроль правильности выполнения операции железнения – поверхность приобрела иссиня-зеленую мокрую, равномерную по всей площади окраску.

Заключение

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

Дорожка из щебня | Материалы и технологии

Щебень (мелкодробленный камень) отлично подходит для мощения садовых дорожек: фактура и цвет натурального материала придают их поверхности природное очарование.

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

Несущий слой (основание) укладывается в пределах контура будущей дорожки на уплотненный механической трамбовкой грунт, с которого предварительно срезается плодородный почвенный слой. Основание засыпается дробленым песком с размером фракций до 7 мм. Этот материал укладывается на слой щебня толщиной от 16 до 32 мм и сразу же уплотняется. Перемешивание остро-угольных и порошкообразных частиц «съедает» примерно 4 см высоты основания.

После укладки и уплотнения несущего слоя на него по границам дорожек выкладывают ленту-фундамент из тощего бетона (с высоким содержанием заполнителей и низким содержанием цемента) для устройства бордюра — выразительного элемента дизайна и практичной преграды «расползанию» покрытия в стороны.

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

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

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

Цвет щебня (белый, розовый, желтый, зеленый, серый, черный) выбирают исходя из вкусов владельца или стилевого оформления сада. Щебень низко- и среднепрочных пород осадочного происхождения (к примеру, мрамор или известняк) не очень подходит для сильно затененных участков сада: в таких условиях он может покрыться зеленоватым налетом влаголюбивой микрофлоры, способной повредить его поверхность. Тогда как щебень прочных скальных пород (гранит, кварц, порфир) лишен подобного недостатка.

Таким образом, щебень — реальная альтернатива традиционной плитке или мощению. Работы выполняются быстро, дорожка всегда выглядит аккуратно, сорняки сквозь нее не прорастают, в сырую погоду нет луж, а в сухую — пыли.

Этапы работ

  • Фото 1

  • Фото 2

  • Фото 3

  • Фото 4

  • Фото 5

  • Фото 6

  • Фото 7

Фото 1. Основание (несущий слой) из смеси песка и щебня засыпают на дорожку и тщательно уплотняют механической трамбовкой. По контуру дорожки с обеих сторон выкладывают ленту из тощего бетона, служащую фундаментом для бордюрных камней.
Фото 2. На ленту бетонного фундамента укладывают бордюрные камни, выравнивают в ряд и также скрепляют бетоном. «Обтекая» дерево, дорожка из щебня повторяет круговую форму кроны, образуя своеобразную круглую клумбу.
Фото 3. После укладки каждого слоя щебень уплотняют механической трамбовкой до получения ровной и прочной поверхности. Расширенная дорожка не создает неудобства при хождении и не мешает корням получать дождевую влагу.
Фото 4. Прежде чем продолжить работы, следует завершить все необходимые садовые и земляные работы вокруг дорожки. Ковшовым погрузчиком засыпают слой щебенки заведомо большей толщины (около 4 см), с учетом утрамбовывания.
Фото 5. Граблями с частыми зубьями выравнивают слой покрытия, не забывая учесть дальнейшее уплотнение. Поверхность щебневого слоя тщательно проливают водой для оседания и сплочения фракций.
Фото 6. После чего так же равномерно механической трамбовкой уплотняют слой покрытия.
Фото 7. Уже через сутки покрытие готово выдержать проезд легкой колесной техники. С помощью ровной доски проверяют, чтобы слой щебневого покрытия везде был ниже поверхности бордюра.

аналитика, советы, помощь с выбором материалов.

[Error] 
Maximum function nesting level of '256' reached, aborting! (0)
/home/bitrix/www/bitrix/modules/main/lib/config/option.php:430
#0: Bitrix\Main\Config\Option::getDefaultSite()
	/home/bitrix/www/bitrix/modules/main/lib/config/option.php:43
#1: Bitrix\Main\Config\Option::get(string, string, string, boolean)
	/home/bitrix/www/bitrix/modules/main/classes/general/option.php:30
#2: CAllOption::GetOptionString(string, string, string)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:2699
#3: CAllMain->get_cookie(string)
	/home/bitrix/www/bitrix/modules/main/lib/composite/engine. php:1321
#4: Bitrix\Main\Composite\Engine::onEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:480
#5: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/tools.php:3880
#6: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#7: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#8: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#9: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#10: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#11: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#12: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#13: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module. php:465
#14: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#15: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#16: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#17: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#18: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#19: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#20: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#21: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#22: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#23: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#24: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#25: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#26: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#27: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#28: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#29: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#30: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#31: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#32: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#33: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#34: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#35: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#36: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#37: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#38: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#39: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#40: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#41: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#42: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#43: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#44: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#45: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#46: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#47: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#48: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#49: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#50: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#51: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#52: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#53: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#54: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#55: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#56: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#57: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#58: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#59: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#60: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#61: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#62: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#63: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#64: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#65: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#66: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#67: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#68: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#69: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#70: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#71: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#72: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#73: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#74: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#75: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#76: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#77: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#78: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#79: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#80: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#81: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#82: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#83: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#84: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#85: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#86: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#87: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#88: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#89: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#90: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#91: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#92: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#93: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#94: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#95: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#96: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#97: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#98: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#99: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#100: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#101: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#102: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#103: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#104: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#105: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#106: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#107: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#108: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#109: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#110: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#111: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#112: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#113: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#114: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#115: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#116: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#117: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#118: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#119: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#120: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#121: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#122: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#123: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#124: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#125: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#126: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#127: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#128: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#129: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#130: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#131: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#132: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#133: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#134: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#135: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#136: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#137: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#138: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#139: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#140: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#141: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#142: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#143: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#144: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#145: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#146: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#147: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#148: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#149: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#150: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#151: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#152: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#153: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#154: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#155: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#156: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#157: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#158: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#159: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#160: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#161: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#162: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#163: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#164: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#165: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#166: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#167: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#168: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#169: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#170: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#171: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#172: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#173: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#174: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#175: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#176: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#177: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#178: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#179: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#180: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#181: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#182: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#183: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#184: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#185: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#186: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#187: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#188: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#189: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#190: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#191: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#192: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#193: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#194: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#195: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#196: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#197: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#198: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#199: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#200: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#201: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#202: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#203: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#204: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#205: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#206: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#207: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#208: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#209: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#210: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#211: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#212: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#213: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#214: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#215: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#216: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#217: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#218: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#219: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#220: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#221: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#222: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#223: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#224: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#225: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#226: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#227: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#228: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#229: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#230: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#231: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#232: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#233: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#234: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#235: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#236: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#237: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#238: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#239: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#240: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#241: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#242: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#243: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3465
#244: CAllMain::FinalActions(string)
	/home/bitrix/www/bitrix/modules/main/include/epilog_after.php:54
#245: require(string)
	/home/bitrix/www/bitrix/modules/main/include/epilog.php:3
#246: require_once(string)
	/home/bitrix/www/bitrix/footer.php:4
#247: require(string)
	/home/bitrix/www/404.php:53
#248: require(string)
	/home/bitrix/www/bitrix/modules/iblock/lib/component/tools.php:66
#249: Bitrix\Iblock\Component\Tools::process404(string, boolean, boolean, boolean, string)
	/home/bitrix/www/bitrix/components/bitrix/news/component.php:145
#250: include(string)
	/home/bitrix/www/bitrix/modules/main/classes/general/component.php:605
#251: CBitrixComponent->__includeComponent()
	/home/bitrix/www/bitrix/modules/main/classes/general/component.php:680
#252: CBitrixComponent->includeComponent(string, array, boolean, boolean)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:1039
#253: CAllMain->IncludeComponent(string, string, array, boolean)
	/home/bitrix/www/articles/index.php:133
#254: include_once(string)
	/home/bitrix/www/bitrix/modules/main/include/urlrewrite.php:159
#255: include_once(string)
	/home/bitrix/www/bitrix/urlrewrite.php:2

аналитика, советы, помощь с выбором материалов.

[Error] 
Maximum function nesting level of '256' reached, aborting! (0)
/home/bitrix/www/bitrix/modules/main/lib/config/option.php:430
#0: Bitrix\Main\Config\Option::getDefaultSite()
	/home/bitrix/www/bitrix/modules/main/lib/config/option.php:43
#1: Bitrix\Main\Config\Option::get(string, string, string, boolean)
	/home/bitrix/www/bitrix/modules/main/classes/general/option.php:30
#2: CAllOption::GetOptionString(string, string, string)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:2699
#3: CAllMain->get_cookie(string)
	/home/bitrix/www/bitrix/modules/main/lib/composite/engine.php:1321
#4: Bitrix\Main\Composite\Engine::onEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:480
#5: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/tools.php:3880
#6: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#7: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#8: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#9: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#10: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#11: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#12: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#13: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#14: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#15: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#16: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#17: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#18: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#19: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#20: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#21: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#22: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#23: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#24: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#25: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#26: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#27: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#28: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#29: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#30: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#31: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#32: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#33: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#34: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#35: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#36: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#37: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#38: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#39: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#40: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#41: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#42: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#43: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#44: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#45: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#46: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#47: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#48: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#49: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#50: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#51: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#52: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#53: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#54: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#55: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#56: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#57: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#58: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#59: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#60: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#61: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#62: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#63: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#64: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#65: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#66: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#67: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#68: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#69: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#70: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#71: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#72: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#73: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#74: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#75: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#76: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#77: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#78: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#79: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#80: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#81: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#82: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#83: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#84: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#85: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#86: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#87: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#88: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#89: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#90: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#91: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#92: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#93: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#94: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#95: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#96: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#97: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#98: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#99: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#100: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#101: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#102: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#103: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#104: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#105: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#106: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#107: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#108: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#109: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#110: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#111: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#112: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#113: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#114: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#115: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#116: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#117: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#118: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#119: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#120: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#121: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#122: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#123: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#124: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#125: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#126: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#127: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#128: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#129: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#130: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#131: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#132: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#133: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#134: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#135: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#136: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#137: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#138: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#139: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#140: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#141: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#142: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#143: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#144: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#145: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#146: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#147: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#148: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#149: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#150: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#151: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#152: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#153: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#154: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#155: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#156: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#157: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#158: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#159: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#160: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#161: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#162: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#163: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#164: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#165: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#166: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#167: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#168: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#169: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#170: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#171: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#172: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#173: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#174: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#175: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#176: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#177: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#178: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#179: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#180: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#181: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#182: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#183: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#184: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#185: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#186: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#187: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#188: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#189: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#190: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#191: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#192: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#193: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#194: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#195: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#196: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#197: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#198: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#199: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#200: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#201: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#202: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#203: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#204: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#205: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#206: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#207: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#208: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#209: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#210: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#211: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#212: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#213: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#214: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#215: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#216: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#217: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#218: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#219: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#220: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#221: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#222: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#223: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#224: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#225: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#226: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#227: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#228: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#229: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#230: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#231: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#232: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#233: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#234: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#235: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#236: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#237: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/lib/application.php:187
#238: Bitrix\Main\Application->terminate(integer)
	/home/bitrix/www/bitrix/modules/main/lib/application.php:174
#239: Bitrix\Main\Application->end()
	/home/bitrix/www/bitrix/modules/main/tools.php:3885
#240: LocalRedirect(string, boolean, string)
	/home/bitrix/www/bitrix/php_interface/init.php:644
#241: CYakusHandlers::OnAfterEpilog()
	/home/bitrix/www/bitrix/modules/main/classes/general/module.php:465
#242: ExecuteModuleEventEx(array)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3487
#243: CAllMain::RunFinalActionsInternal()
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:3465
#244: CAllMain::FinalActions(string)
	/home/bitrix/www/bitrix/modules/main/include/epilog_after.php:54
#245: require(string)
	/home/bitrix/www/bitrix/modules/main/include/epilog.php:3
#246: require_once(string)
	/home/bitrix/www/bitrix/footer.php:4
#247: require(string)
	/home/bitrix/www/404.php:53
#248: require(string)
	/home/bitrix/www/bitrix/modules/iblock/lib/component/tools.php:66
#249: Bitrix\Iblock\Component\Tools::process404(string, boolean, boolean, boolean, string)
	/home/bitrix/www/bitrix/components/bitrix/news/component.php:145
#250: include(string)
	/home/bitrix/www/bitrix/modules/main/classes/general/component.php:605
#251: CBitrixComponent->__includeComponent()
	/home/bitrix/www/bitrix/modules/main/classes/general/component.php:680
#252: CBitrixComponent->includeComponent(string, array, boolean, boolean)
	/home/bitrix/www/bitrix/modules/main/classes/general/main.php:1039
#253: CAllMain->IncludeComponent(string, string, array, boolean)
	/home/bitrix/www/articles/index.php:133
#254: include_once(string)
	/home/bitrix/www/bitrix/modules/main/include/urlrewrite.php:159
#255: include_once(string)
	/home/bitrix/www/bitrix/urlrewrite.php:2

Садовая дорожка из бетона

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

Планировка садовой дорожки.

Важно заранее продумать количество и расположение садовых дорожек, их длину и ширину.
Для удобства дорожка от входной группы на участок до двери дома должна проходить по самому короткому маршруту, за исключением случая, когда сам дом в низине участка, а вход на участок на вершине. В таком случае дорожка должна иметь форму ломанной линии.
Длинные дорожки визуально увеличивают участок, в то время как большое количество дорожек дробят его.
Ширину дорожек из бетона выбирают исходя из функциональных назначений и комфорта: для основных дорожек применима ширина в 80-100 см., для второстепенных достаточно будет 30-40 см. Если же речь идет о дорожке у гаража, то для ориентира берется ширина автомобиля.

Выбор качественного материала.

Для бетонной дорожки рекомендовано применять пескобетон или песчано-цементную смесь марки по прочности на сжатие не менее М200. Чем выше марка раствора, тем выше показатели долговечности. Оптимальным решением для садовой дорожки является марка М300. Качественный пескобетон имеет ряд преимуществ за счет правильного соотношения песка и цемента, и также его использование избавит от хлопот с приготовлением самодельного раствора: добавлением правильных пропорций цемента в раствор, поиском хорошего песка и его просеивания.
Пескобетон продается в мешках, на которых указан точный вес, что позволит безошибочно рассчитать расход материала. При соблюдении рецептуры от производителя получится желаемый качественный результат.

Последовательность работ при устройстве садовой дорожи:

1. Снятие дерна и выкапывание траншеи под основание.

источник: forumhouse

Распланировав расположение и ширину бетонной дорожки на участке устанавливается разбивка: по всей длине будущей дорожки вбиваются колья на расстоянии 1,5 – 2,5 м друг от друга, на изгибах применимо расстояние 30-50 см. Между кольями натягивается шнур. И выкапывается траншея согласно разметке.
Глубина траншей для пешеходных дорожек — 25-30 см (без учета толщины плодородного слоя). Для бетонной дорожки под стоянку автомобиля толщина увеличивается до 40 см. Если на участке глинистый грунт, то выемку нужно сделать глубже, так как такой грунт имеет способность пропускать через себя воду, а склонность к морозному пучению (увеличение объема грунта при замерзании и его уменьшение – при оттаивании) увеличивается;

2. Установка опалубки.

источник: forumhouse

Опалубку крепят к колышкам разметки так, чтобы они оставались снаружи. Над уровнем грунта опалубка должна возвышаться на 4-5 см. За счет того, что раствор важно заливать частями, чтобы получить поперечные швы для компенсации циклов сжатий и расширений бетона под воздействием температуры, опалубку также возможно устанавливать частями по дорожке. Если опалубка уже установлена на всю длину дорожки, то ее необходимо разбить на небольшие участки;

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

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

3. Устройство песчано-щебневой подушки, т.е. основания дорожки.

источник: forumhouse

Для дренажа и равномерного распределения весовой нагрузки на дорожку укладывается песчано-щебневая подушка.
Для пешеходных дорожек бетонный слой составит 8 – 10 см, для автомобильных – 10 – 15 см., соответственно все остальное это и будет основание.
Между слоями щебня/гравия и песка прокладывается геотекстиль. Слой гравия или щебня и слой песка трамбуется, слой песка хорошо разравнивается, для того, чтобы толщина бетона была равномерной;

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

4. Укладка арматурной сетки.

Перед армированием и бетонированием песчаную подушку основания укрывают полиэтиленовой пленкой. Это нужно для того, чтобы бетон набрал свою прочность, то есть именно затвердел, а не высох. Пленка помешает цементному молочку, которое играет важную роль в процессе затвердевания, уйти в песок.
Лучшим армирующим слоем для бетонной дорожки считается сетка с ячейками 10х10 см, сваренная из прутьев диаметром 8 мм, или прутья, связанные в армирующий каркас. Также для армирования применяют фиброволокно или сетку рабицу. Сетка должна быть поднята над уровнем пленки минимум на 15 мм, так как должна иметь защитный слой, который будет предотвращать коррозию металлических деталей армирующего каркаса. Сетка или прутья должны быть объединены в общий каркас, так чтобы он воспринимал нагрузку, как одно целое;

5. Бетонирование дорожки.

Производители сухих строительных смесей на заводской упаковке обязательно указывают рецепт приготовления смеси. При приготовлении раствора с использованием обозначенного количества воды оцените, насколько раствор удобен в использовании: как хорошо он растягивается, разравнивается и уплотняется.
Если есть необходимость придать раствору более высокую подвижность лучше заменить привычную воду на всего добавки-пластификаторы. Золотое правило: «больше воды – ниже прочность».
Чем лучше перемешаны все компоненты раствора, тем большую прочность в конечном итоге наберет бетон. Для перемешивания смеси лучше использовать бетономешалку, но также подойдет и перфоратор, который может работать на низких оборотах с насадкой для сыпучих смесей.
Если готовый раствор с течением времени начинает расслаиваться и на его поверхности появляется вода, то необходимо уменьшить количество воды. Если подвижность раствора низкая, что затрудняет качественно распределять смесь и разравнивать ее, в этом случае снова стоит воспользоваться добавками-пластификаторами или комплексными добавками (пластификатор + воздухововлекающая добавка).

Совет: Используемый раствор должен быть ни густым, ни жидким – жидкий будет трескаться при высыхании, а слишком густой невозможно распределить по опалубке. Добавки – пластификаторы помогут довести смесь до нужной консистенции. Рекомендуем использовать добавки в жидком виде, и обязательно выполнять требования инструкций к их применению.

источник: forumhouse

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

источник: forumhouse

Поперечный профиль покрытия дорожки должен быть выпуклый, для наилучшего отвода воды. В центре толщина бетонного слоя должна быть больше на 0.5-1 см. Бетонное покрытие делают на 3 сантиметра выше уровня земли, это минимизирует намыв на бетонную поверхность почвы и мусора, а также упростит чистку дорожек от мусора и снега. Боковые выступы бетонного/растворного камня желательно также гидроизолировать.
Залитый бетонный раствор разравнивают правилом и с силой уплотняют.

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

Садовая дорожка из дерева и гравия. Мастер-класс с фото на Supersadovnik.ru

Шаг 1

При помощи рулетки и садового шланга разметьте дорожку шириной 70 см.

Шаг 2

На месте будущей дорожки снимите дерн на глубину 20–30 см.

Шаг 3

На дно дорожного корыта насыпьте песок слоем 10 см, утрамбуйте его.

Шаг 4

Установите бортик из готовых деревянных кассет. Выровняйте его при помощи резиновой киянки.

Шаг 5

Электрорубанком обработайте поверхность деревянного бруса.

Шаг 6

Наметьте длину брусков (50–55 см при ширине дорожки 70 см). Ножовкой распилите брус на куски.

Шаг 7

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

Шаг 8

Уложите бруски на песок на расстоянии 4–7 см один от другого.

Шаг 9

Выровняйте их при помощи резиновой киянки.

Шаг 10

Пространство между брусками засыпьте гравием, утрамбуйте его.

Шаг 11

Дорожка готова!

и-поле | Определение легкой атлетики Merriam-Webster

\ ˌTrak-ən (d) -fēld \

: , относящихся к или являющихся любыми из различных спортивных соревнований (таких как бег, прыжки и метание веса), выполняемых на беговой дорожке и на прилегающем поле.

Гусеница двойного назначения

от Woodpeckers в

гусеница двойного назначения от Woodpeckers in

Похоже, в вашем браузере отключен JavaScript. Для наилучшего взаимодействия с нашим сайтом обязательно включите Javascript в своем браузере.

Т-образные гусеницы — один из самых полезных компонентов, доступных для создания различных вспомогательных приспособлений. Они легко адаптируются к любому приспособлению, где требуются прочный зажим и прямое отслеживание.

Woodpeckers new DP Track (Dual Purpose) развивает эти преимущества еще дальше.Он сконфигурирован с (2) слотами с одной стороны и (1) с другой. Все (3) паза напрямую совместимы с любым болтом или гайкой 1/4 дюйма с шестигранной головкой. Такая конфигурация допускает установку с помощью болтов, что практически исключает возможность выдергивания.

Как видно на фото, установка проста; просто опустите болт с шестигранной головкой в ​​отверстие и прикрепите. Это так просто. Прикрепив гусеницу таким образом, вы получите чрезвычайно прочную установку, делающую практически невозможным извлечение.

Разнообразные очень полезные зажимные приспособления могут быть изготовлены путем встраивания DP Track в горизонтальную поверхность.Woodpeckers также предлагает прецизионные прижимные угольники, наборы угловых зажимов и тумблерные зажимы.

DP Track имеет размеры 1-3 / 4 «x 1/2» и бывают длиной 24, 36 и 48 дюймов. Прозрачный анодированный сатин.

Дополнительная информация
Страна производитель США

Мы нашли другие продукты, которые могут вам понравиться!

{{/ thumbnail_url}} {{{_highlightResult.name.value}}}

{{#categories_without_path}} в {{{category_without_path}}} {{/ category_without_path}} {{# _highlightResult.color}} {{# _highlightResult.color.value}} {{#categories_without_path}} | {{/ category_without_path}} Цвет: {{{_highlightResult.color.value}}} {{/_highlightResult.color.value}} {{/ _highlightResult.цвет}}

{{price.USD.default_formated}} {{# price.USD.default_original_formated}} {{price.USD.default_original_formated}} {{/price.USD.default_original_formated}} {{# price.USD.default_tier_formated}} Всего лишь {{price.USD.default_tier_formated}} {{/price.USD.default_tier_formated}}

Фиона Apple объясняет каждую песню в «Fetch the Bolt Cutters»

Фото: любезно предоставлено Фионой Эппл.

Fetch the Bolt Cutters не похож ни на что, что Фиона Эппл делала раньше, но альбом все еще узнаваем как нечто, что могла создать только она.Это намеренно без прикрас, сырой экспорт изнутри ее мозга: ее голос растягивается и зацикливается, переходя в песнопения Випассаны и жуткие, сюрреалистические вопли; в середине одной песни она лажает и бормочет: «Ах, бля, дерьмо»; в другом она смеется, когда ее собака, Мерси, облизывает ее лицо.

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

Здесь она познакомила нас с генезисом и смыслом каждой песни на Fetch the Bolt Cutters. (Читайте наше полное интервью с Apple здесь .)

Фото: работа Дэвида Гарзы.

Это началось как песня о любви к кому-то, кого я еще не встречал.Затем в 2015 году я снова встретился с Джонатаном [Эймсом], и на какое-то время это стало про него. Примерно через год мы расстались, так что это уже не о нем. Вот как все это происходит. Песни сильно меняют то, о чем они говорят.

Это возникло из-за того, что я много медитировал, размышляя о природе вещей. Вся эта фраза: «Если дерево упадет в лесу и никто его не услышит, издает ли оно звук?» Да, это так. Потому что происходит вибрация. Придете ли вы его слышать или нет.Я существую независимо от того, видишь ли ты меня. Эти вещи обо мне верны, признаете вы их или нет. По крайней мере, второй куплет.

Линия о пульсе — это был опыт, который я испытал однажды после шести дней медитации в Спирит Рок в Вудакре, Калифорния, в группе из примерно 75 женщин в 2010 году. У меня это пульсировало в голове. Затем я вспомнил этот совет, который кто-то дал мне, который заключался в том, чтобы просто сдаться — позволить себе падать в воду, прекратить попытки что-либо сделать.И почему-то мне это удалось, и пульсация в голове ушла. Но тогда все пульсировали — все. У меня никогда не было такого опыта, и мне трудно вспомнить, каково это было сейчас, но это самое большое, что когда-либо случалось со мной в моей жизни.

Тогда я знал, что такое жизнь и смерть. Это пульс. И мы все разделяем это, и это звучит так банально. Но это было не в моей голове; это было вне этого. Это было среди всех нас. Мы все были в этом вместе.Это было как в этом доме, в этом пульсе, в котором мы все будем. Я чувствовал, что нашел его, и все было так прекрасно. Мне казалось, что если я открою глаза, может, оно исчезнет. Но я открыл глаза, и это все еще происходило. Я вышел из зала для медитаций, и это все еще продолжалось. Я спустился с холма, и были эти лошади, которые никогда не обращали на меня внимания. Но я чувствовал, что между нами существует понимание. Я все это чувствовал. И через некоторое время это прошло. Но я помню, что это было там.Это все изменило для меня. Просто зная: «Хорошо, что бы ни случилось, вот где находится дом. Вот какова реальность. Я знаю, что это там.

Фото: работа Дэвида Гарзы.

Шамейка настоящий. Когда я впервые написал песню, я не был полностью уверен, что она существует. Потому что у меня есть одно воспоминание, и это очень большое воспоминание для меня.Но, возможно, я создал этого человека. Моя учительница в третьем классе Линда Кунхардт была моей любимой учительницей. Я поддерживаю с ней связь на протяжении многих лет. Она прочитала статью New Yorker и на следующий день прислала мне электронное письмо со словами: «Я слышала, вы писали о Шамейке. Я вижу ее… »Она прислала мне ее фотографию.

Я не помню, в каком она классе. Мне было лет 11 или около того. Не помню, зачем она со мной разговаривала. Я просто помню, как был в кафетерии, группа девушек сидела за одним концом стола.Я подошел посидеть с ними, и они начали надо мной смеяться. Так что я сел на одно место, но все же старался быть ближе к ним. Подошла Шамейка, и она такая: «Почему ты пытаешься сидеть с этими девушками? У тебя есть потенциал ». Это все, что она мне сказала. Но я вспомнил, что, возможно, она хулиганка или что-то в этом роде. Потом мне прислали эту фотографию, и она такая милая — совсем не похожа на хулигана. У нее просто такая широкая улыбка на лице. Но на листе бумаги, который мне прислала мисс Кунхардт, сверху написано это короткое эссе, которое Шамейка написала.И, чувак, это потрясающе. Все дело в том, как ее заставили делать это в церкви, на службе. И все смеялись, потому что она была такой милой и испортила слова или что-то в этом роде. И она была так взбешена. Она сказала: «Они использовали меня, чтобы привести сюда людей, чтобы они думали, что это мило. Они использовали меня ». Я подумал, Этот маленький ребенок понял, что, черт возьми, происходит.

Мне страшно подумать — а что, если она сейчас не очень хороший человек? А может, она меня ненавидит или что-то в этом роде.Я бы побоялся, чтобы она это услышала. Но я думаю об этой маленькой фотографии с ней. Она такая милая. Мой опыт учебы в средней школе по-прежнему очень важен для меня. В основном потому, что именно здесь мои отношения с женщинами начали портиться. Ужасно, сколько у меня воспоминаний, когда со мной был друг, а затем более популярная девушка говорила этому другу: «Хорошо, ты можешь дружить с Фионой, или ты можешь дружить со мной. Выбирать.» И меня так и не выбрали.

[Мой басист] Себастьян [Стейнберг] сказал это, когда мы были в Марфе, штат Техас.Нас чуть не арестовали за хранение травки. Нас остановили, а Себастьян курил яблоко в спине, и я перешла в режим управления. Я подумал: «У Дэвида коричневая кожа, поэтому он не может быть тем, кто держит горшок. У Себастьяна длинные волосы и длинная борода; он не может быть тем, кто держит горшок. Я маленькая белая девочка, мне нужно держать горшок ». Я сказал: «Себастьян, теперь ешь яблоко, дай мне горшок». Я засунул его в носок, и он очень быстро съел это отвратительное яблоко. А потом нас вытащили из машины.

Была собака-наркоторговец. Они вытащили нас из машины, и у меня была травка в носке, и они так заняты разговорами с коричневым мужчиной и парнем-хиппи, что не замечают, что собака-наркоторговец действительно в моем носке. Они такие: «О, она же белая девушка. Неважно. Она просто нравится собаке. Они просто хотели навлечь на ребят неприятности. В любом случае, мы справились с этой ситуацией, поэтому Себастьян сказал мне это. Я подумал: «О, спасибо».

Фото: работа Дэвида Гарзы.

Когда я писал эту, у нас было достаточно песен для альбома, и я даже не собирался писать другие песни.Затем я сказал: «Подожди, подожди. Мы еще не закончили. У меня скоро еще одна песня. У меня есть еще кое-что, чтобы уйти ».

Альбом должен был называться Fetch the Bolt Cutters до того, как у меня появилась песня под названием «Fetch the Bolt Cutters». Когда я начал писать песню, я подумал: «Как же глупо писать песню с таким названием?» И я думаю, что тема «Принеси болторезы», вероятно, является его темой. Я знаю, что в материале New Yorker говорится что-то вроде: «Дело в том, что не нужно бояться говорить.«Но это еще не все. Речь идет о побеге из той тюрьмы, в которой вы позволили себе жить, независимо от того, построили ли вы эту тюрьму для себя или она была построена вокруг вас, и вы просто приняли ее. Послание во всей записи просто: принесите долбанные болторезные станки и выберитесь из ситуации, в которой вы оказались — чего бы вы ни хотели.

Кара [Делевинь] и я много лет дружим по переписке. Я хотел, чтобы она спела строчку [«Принеси болторезки»].Она привела своих собак, Лео и Альфи. Итак, все наши собаки были в этой комнате с закрытой дверью, и они полностью молчали на протяжении всей песни. А потом в конце песни они взорвались. Это было так прекрасно.

Фото: работа Дэвида Гарзы.

Это было вдохновлено конкретным ужином, на котором было много дорогого вина и много хвастовства вещами, которыми я бы не стал хвастаться.Я не буду много говорить об этом, но кто-то сказал что-то, что я считал оскорбительным. Это был не тот ужин, на котором нужно кого-то звать. Но я вообще не хотел там быть. Я вызвал этого парня. И, возможно, немного испортил ужин. Но я был прав. Строка походных ботинок такая: «Привет, малыш, я знаю, что ты меня используешь. Позволь мне облегчить тебе задачу, малышка. Хорошо?» Типа: «Ублюдок, ты не думаешь, что я понимаю, что ты сейчас делаешь? Думаешь, ты мне нахрен помогаешь? Я знаю, что ты меня используешь.Позвольте мне помочь вам использовать меня. Хорошо?»

Прогулки, походы и марши всегда были очень важны для меня с точки зрения мышления, а также для создания музыки. Листья падают, и я стучу в ритм. Тогда ритмы продолжались бы весь день. На самом деле это причина, по которой мне нужно много времени, чтобы делать записи. Если я услышу одно и то же или сделаю одно и то же слишком много раз подряд, я не перестану это слышать. Это хуже, чем ушной червь. Это похоже на пытку. Поэтому я не должен позволять своей работе мучить меня.Потому что тогда мне это так надоело; Я очень быстро врезался в стену. И как только я упираюсь в стену, я больше не гожусь. Я не собираюсь больше делать хорошую работу.

Фото: работа Дэвида Гарзы.

Я написал строчку: «Зло — это эстафета, когда тот, кого ты сжигаешь, поворачивается, чтобы передать факел», когда мне было 15 лет. Мне это всегда нравилось. [Если] вас обжигает кто-то, когда человек, который вас обжигает, не осознает этого — что редко случается с людьми, признавая, когда они вас обожгли, — это превращается в то, что вы не знаете, что с этим делать.Затем вы просто надеваете это на кого-нибудь еще. Нападение, когда мне было 12 лет, заставило меня задуматься о невиновности, вине и прощении. Это заставило меня задуматься о многих важных вещах. Потому что первое, что я сделал после того, как это случилось , — помолился за него. Но вы не можете перестать молиться за них. Вы должны привлечь их к ответственности.

Слушания по делу Кавано в 2018 году принесли много дерьма. Я не знаю, что это, этот парень. Их так много, но тот один парень — тот факт, что он в Верховном суде, действительно, вероятно, дело, но его чертова позиция такая же — это была экстернализованная версия того, что, как вы знаете, многие из них. чувство внутри.Просто возмущенное: «Как ты мог злиться на меня? Не заставляй меня страдать. Но я женат, но у меня есть дети, так что я не могу быть плохим парнем. Но я был просто молод, не будь со мной так злой, эта девушка зла со мной ». Боже мой. Спасибо тебе, гребаный Бретт Кавано, за то, что позволил моему гневу увидеть свет: Спасибо за то, что ты такой ужасный.

Это забавно, потому что 15-летний я написал более глубокую лирику, а затем 42-летний я написал «Да пошли вы на хуй» всем, ведя себя так, будто ваша жизнь идеальна.По сути, справляюсь со всеми видами обид пятнадцатилетней давности, которые у меня были бы. «Я обижаюсь на тебя за то, что ты правильно воспитан» — смешно для меня. «Я обижаюсь на тебя за то, что ты высокий» — это совершенно мелочно, но я начала писать это из-за произошедшего по-настоящему ужасного события и моих чувств по поводу вины и невиновности. [На строчку «Мне не нравится, что вы представляете свою жизнь как гребаную пропагандистскую брошюру»]: меня так бесит идея влиятельных лиц, потому что они, кажется, в конечном итоге оказываются именно теми людьми, которые не должны ни на кого влиять.Я знаю, что если бы я попал в социальные сети, я бы стал жертвой сравнения себя со всеми остальными. Причина, по которой я не вникаю в это, заключается в том, что я вижу, что происходит: все сравнивают себя со всеми остальными. Это действительно ужасный образ жизни. Люди просто пытаются трахаться с людьми через Интернет.

Фото: работа Дэвида Гарзы.

Эта песня как минимум о двух отношениях.Я почти никогда не пишу песню только об одном человеке, но однажды я написал песню, которая не была хорошей песней, и она была об одном человеке, и я чувствовал необходимость рассказать этому одному человеку и сыграть ему эту песню. до того, как он вышел, и все прошло нормально. Но это единственный раз, когда я кому-то рассказал. Однажды кто-то спросил, была ли песня о них, но не о них, так что ответ оказался худшим: «О, нет, я не думал о тебе. Извини за это.»

Я начал писать его много лет назад и сделал пару версий.Это было проблематично, потому что мне это просто не нравилось. И поэтому я разобрал его и собрал обратно. Это было очень управляемо на фортепиано, и я написал его на фортепиано, когда был очень молод. Это просто больше не соответствовало моим ощущениям. Это было слишком бодро. Возможно, это было хорошо, но, как сказала бы моя подруга Белла: «На нем было не то платье, в котором я хотела пойти на вечеринку». Так что мне нужно было исправить это.

Дэвид [Гарза, участник группы Apple] сказал что-то вроде: «О, я творил ужасные вещи с этой его стойкой», а мы подумали: «О, вот как эта песня будет называться« Я сделал ужасные вещи ». в эту его стойку.«Это меня так сильно рассмешило. Я пытался что-то сделать с ним более десяти лет — некоторые строчки выглядывали из записной книжки, и я такой: Ого, я знаю, что дальше делать, — внезапно, что я не знал десять лет назад. Я не думал об этом десять лет, но если сижу за пианино и думаю: «О, да, это была та вещь, на которой я играл. О, я так и не закончил. О, я знаю, какая черта может появиться после этого ». Иногда я начинаю что-то и просто знаю, что не знаю достаточно, чтобы что-то добавить, поэтому мне приходится ждать, пока я не узнаю достаточно.

Фото: работа Дэвида Гарзы.

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

Когда я говорю: «Я не думаю, что они это осознают», это не дает мне надежды. Я не жду от этого ничего. Я должен как-то это выразить. Не думаю, что они это услышат, но я все равно должен это сказать.Дерево должно упасть, даже если рядом никого нет.

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

Здесь звучит вокал моей сестры Мод, и во время вокала она кормила грудью.

Фото: работа Дэвида Гарзы.

Этот альбом во многом не позволяет мужчинам настраивать нас друг против друга или держать нас отдельно друг от друга, чтобы они могли контролировать сообщение. Я помню, как моя бабушка рассказывала о моем дедушке и его любовнице. А его любовница была его женой на всю оставшуюся жизнь. Они были женаты 50 лет. Но для нее она всегда злилась на эту любовницу. И всегда было так: «Чувак, она этого не делала. Наш дедушка это сделал. Ваш муж изменил вам. Она просто влюбилась в какого-то парня. Потом они навсегда остались вместе и создали семью. Злись на правильного человека, не злись не на того.«Позже я встречаюсь с парнем. Я узнал, что он встречается с другой женщиной. Я встречаю ту другую женщину — я хорошо отношусь к этой другой женщине. Она этого не делала. Она мне не изменяла.

Мод тоже есть в «Ladies». Она поет гармонии и написала одну из фоновых партий. Мне нравится слово «, дамы», «», а потом просто интересно было сказать его по-разному, например: «Дамы, дамы, дамы», а затем: «Дамы, дамы, дамы, дамы, дамы, дамы, дамы, дамы », просто все эти разные способы общения с девушками.Например: «Дамы, нам лучше заняться этим» или «Дамы такие милые».

Я люблю летучих мышей. Я думал о чем-то вроде: «О, эта леди летучих мышей », понимаете? «Она летучая мышь, она сумасшедшая». Когда Дэвид прислал мне написанные тексты песен, это выглядело так забавно, что появилось из ниоткуда: «Фруктовая летучая мышь!» Мне пришлось написать о себе милую строчку, и это была моя версия: летучая мышь.

Фото: работа Дэвида Гарзы.

Образы этого человека пришли ко мне много лет назад, потому что мой парень рассказывал мне о своем отце и его депрессии.То, как он описывал своего отца, передвигающегося по дому, отягощенного чем-то, заставило меня подумать: Мы просто всегда стараемся не отставать; Боже мой, это не задерживает меня достаточно долго, я просто не могу двигаться. Это препятствие, это обязательство, постоянная забота.

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

Фото: работа Дэвида Гарзы.

«Космонавтов» я написал для фильма Джадда Апатоу 2012 , This Is 40 .Я записал его с Джоном Брионом для фильма, но он не использовал его. Затем мы перезаписали его для этого альбома, и я добавил к нему несколько разных вокалов.

Это был вызов, потому что он хотел, чтобы я написал песню о двух людях, которые собирались быть вместе навсегда, и это не совсем та песня, которую я могу написать, потому что я не знаю, хочу ли я быть вместе с ней. никому навсегда. Думаю, именно поэтому я истолковал это так: «Мы с тобой будем в этом маленьком корабле в одиночестве в космосе, только он будет весить намного больше, и ты действительно действуешь мне на нервы.«Это должна была быть песня о том, чтобы быть вместе навсегда, и поэтому, конечно, моя первая фраза звучит так:« Твое лицо воспламеняет мое терпение ». Что бы вы ни делали, это будет неправильно.

Я не думаю, что долговременная моногамия невозможна только потому, что вы видите, как это происходит. Это просто зависит от обстоятельств. Некоторые люди созданы для этого, а некоторые нет, а некоторые люди думают, что они не созданы для этого, но тогда они встречают именно того человека. Это почти вопрос удачи: если ваша химия наткнется на химию кого-то другого, тогда это может просто сработать, потому что вы реагируете друг на друга по-разному.У меня была надежда, когда я писал эту песню, и, честно говоря, есть абсолютно надежда, что я смогу найти отношения. Но я действительно не хочу. Я правда просто не хочу. Мне нравится моя жизнь такой, какая она есть, и в эти дни я не чувствую себя очень романтичным.

Фото: работа Дэвида Гарзы.

«Для нее» было очень сложно сделать, потому что он претерпел так много изменений и содержит так много историй, которые даже не мои.Отчасти это навеяно разговорами, которые у меня были с женщиной, которую я знал много лет назад, когда она была стажером в кинокомпании, и она дала мне разрешение написать об этом песню. Это действительно песня для нее. Чтобы окольными путями рассказать ей историю, которую она не может рассказать. Уместно, что она начинала в качестве стажера, потому что именно поэтому в текстах говорится: «Это сезон прихода, сезон прихода». Она сказала, что он всегда говорил о ней, как будто она его «подопечная», как будто он был рядом, чтобы защитить ее от всех голливудских подонков.

Это одна из тех ситуаций, когда она не считала это изнасилованием из-за отношений, которые у нее были с этим человеком. Вдобавок ко всему, этот человек был настолько испорчен, что они не знали, кто она такая. И поэтому она предположила, что они не знали, что сделали это с ней. Она провела годы, защищая его от того, чтобы знать об этом, и тем самым действительно причинила себе вред. Она такая: «Это действительно случилось?» И я подумал: «Похоже, это действительно чертовски свершилось. Что вы описываете. Ага, это изнасилование.”

Эту песню было очень сложно исполнить, потому что вы не хотите быть слишком буквальным, но вы также хотите добавить кое-что для этой женщины, чтобы парень знал, что она знает. Несмотря на то, что в песне неловко сказать: «Ты меня изнасиловал», некоторым людям нужно сказать это вслух, чтобы понять, что с ними произошло. И я надеюсь, что, возможно, некоторые женщины и мужчины смогут подпевать этой строчке и позволить ей говорить за них правду. Потому что иногда очень сложно сказать, особенно если ты не хочешь обидеть человека, который сделал это с тобой.Трудно сказать что-то резкое об этом. Так что, хотя я чувствовал, что Вау, это просто неуклюжее для того, чтобы вставить в середину песни, я также чувствую, что это будет важно для людей, для которых это важно.

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

Фото: работа Дэвида Гарзы.

Джонатан расстался со мной, и я думаю, я ожидал, что все расстанутся со мной. Если он не хотел работать со мной, и я знаю, что он меня любит, то вы, ребята, тоже не собираетесь работать со мной. Потому что [группа и я] поссорились, а потом они забрали некоторые из своих инструментов.Я неверно истолковал это так, будто они злились на меня и больше не собирались возвращаться. Это я сидел и думал: «Ой, меня никто не любит». Эми на самом деле не брала барабаны из моего дома. Она их забрала, но это потому, что у нее был концерт. Я понял, что все злятся на меня.

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

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

Фиона Эппл, Эми Эйлин Вуд, Себастьян Стейнберг и Дэвид Гарза. Фото: любезно предоставлено Фионой Эппл.

Мне очень нравится, как звучит эта песня. Если бы я не слышал запись песни и просто смотрел на эти слова, я бы сказал: «О, я не собираюсь включать это в свою пластинку, это глупо», потому что это было в основном отрыжкой. вне.Это действительно было. Если бы я нашел голосовое сообщение, в которое пел, в тексте не было бы абсолютно никаких изменений. Возможно, я сразу же отправил группе голосовое сообщение. Я даже не знаю, обратились ли они к этому, потому что они меня знают, они вроде как: «Ага».

Фото: работа Дэвида Гарзы.

Это была моя версия пения Випассана, которую я пел в тюрьме.Я пела его ночью, чтобы успокоиться. Когда мы все были в зале ожидания, там была камера, и я тупо, вызывающе пел в камеру. Когда имеешь дело с полицейскими, не стоит проявлять сарказм или индивидуальность. Просто вежливость и: «Хорошо, сэр». Как бы ни было чертовски больно это делать, вот в чем урок.

Я не помню точно значения пения, но петь весело, и это означает, что чувства возникают и исчезают снова, и все это непостоянно.Примириться с этой концепцией — значит быть счастливым. Вот что означает эта песня, но я начинал просто петь ее во время похода. Когда я хожу, я хожу в ритме, и я должен поддерживать этот ритм все время, пока иду. Обычно это означает, что я в конечном итоге подпеваю, по крайней мере, в своей голове. Затем, когда я шел, я начал петь это пение, но потом… оно просто перестало так много значить для меня, и я начал сочинять свое собственное пение, чтобы сказать себе, во что я верил в отношении своей будущей жизни.

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

Нет прошлого, нет настоящего. Это не похоже на «О, оставайся в настоящем» — это просто, по сути, «Я собираюсь делать то, что собираюсь делать, и я собираюсь повеселиться, и я собираюсь решить, когда я я собираюсь прекратить это делать, и я собираюсь решить, когда я начну это делать ». Я просто собираюсь двигаться, чтобы двигаться, неважно, как это выглядит, неважно, как вы думаете, как это выглядит, не имеет значения, что вы думаете или что я думаю.Это просто происходит; это просто так. И все в порядке.

Это интервью отредактировано и сжато для ясности.

«Но я знаю, что звук по-прежнему остается звуком / никого не окружает». «И я знаю, что когда я уйду, все мои частицы распадаются и рассеиваются / и я снова буду в ритме». «Я бы хотел купить тебе пару походных ботинок на подушке / Чтобы помочь тебе в лазании / Вернее, чтобы помочь телам, через которые ты перешагиваешь на своем пути / Чтобы они не болели, как мои.” Фиону изнасиловал незнакомец в своем многоквартирном доме, когда ей было 12 лет. Фиона была арестована за хранение гашиша в 2012 году в Техасе, и, как утверждается, она хорошо пела во время ночевки там.

Поставщики железных дорог предоставляют способы предотвращения изгиба и скручивания пути

— Уолтер Уарт

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

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

Основной причиной коробления является чрезмерное сжатие в результате либо высоких температур, либо «проскальзывания рельсов», продольного движения рельсов, вызванного постоянным движением поездов, — говорит Джон Зуспан, президент компании Track Guy Consultants, которая обеспечивает осмотр путей, управление проектами и различные консалтинговые услуги.

«Нейтральная температура рельса» — или точка, в которой чистая продольная сила в рельсе равна нулю — не должна устанавливаться слишком низкой в ​​соответствии с фактическим диапазоном температуры воздуха в данной местности, — говорит он. При нейтральной температуре нет расширения или сжатия, сжатия или растяжения.

Так как нейтральная температура не может быть установлена ​​при укладке рельсов, «мы должны установить желаемую нейтральную температуру, которая определяется каждой железной дорогой на основе их критериев», — говорит Зуспан, добавляя, что Американская служба железнодорожного машиностроения и технического обслуживания путей Ассоциация (AREMA) предоставляет формулу для вычисления желаемой нейтральной температуры.

Например, хорошо построенная и обслуживаемая гусеница с балластом может не деформироваться, пока не зарегистрирует повышение температуры выше нейтральной от 50 до 70 F, а та же самая гусеница может не разорваться, пока не испытает снижение температуры ниже нейтральной с 105 до 130. F, подчеркивая необходимость правильной установки желаемой нейтральной температуры, — говорит Зуспан.

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

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

Укрепление обороны

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

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

Кроме того, эластичная застежка Амстеда может противостоять силе рельсов, которые смещают рельс в вертикальном направлении и поднимают рельс из зоны сиденья рельса вбок, что приводит к опрокидыванию рельсов большой колеи или опрокидыванию рельсов, говорит Mediavilla.Застежка также помогает предотвратить продольное смещение.

Линия эластичных застежек — довольно новое дополнение, которое Амстед унаследовал от приобретения AirBoss Railway Products Inc. в 2008 году, сообщает Mediavilla.

Со своим партнером по совместному предприятию edilon) (sedra, Амстед также предлагает Встраиваемая рельсовая система Edilon Corkelast®, которая используется в системах пригородных поездов и общественного транспорта для удержания рельсов на месте, предотвращения солнечных перегибов и защиты от ржавчины.Технология используется edilon) (sedra в Азии, Европе и на Ближнем Востоке более 20 лет).

«В [системе] используется полиуретановый эластомерный материал для полной и непрерывной поддержки и фиксации рельса», — говорит Медиавилла.

Система Edilon Corkelast спроектирована таким образом, чтобы противостоять продольному изгибу рельсов на уровне седла рельса за счет постоянного расширения и сжатия эластомерного материала для рассеивания энергии рельса, создаваемой тепловыми и тяговыми нагрузками.Как сообщает Mediavilla, первая установка системы Edilon Corkelast в Северной Америке началась в прошлом месяце в порту Ванкувера для 50-тонного крана встраиваемого рельса.

Меньше стресса

В L.B. По словам президента Salient Systems Джеймса Атена, подразделение Salient Systems Inc., подразделение Foster Co., устройство обнаружения следующего поколения может помочь предотвратить изгибы и изгибы, определяя фактическую температуру рельсов и напряжение рельсов.

RailStress Monitor ™ (RSM), который крепится непосредственно к рельсу, предназначен для вычисления продольного напряжения с использованием запатентованного оборудования и программного обеспечения.По словам Атена, RSM, разрабатываемый около 10 лет, также будет сообщать о температуре рельсов.

Устройство отправляет в режиме реального времени измерения стресса и температуры с частотой один раз в минуту на придорожный или портативный считыватель. Используя L.B. Фостера По словам Атен, с помощью программного обеспечения IntelliTrack® Navigator пользователь RSM может управлять большими участками пути на основе исключений, добавляя, что программное обеспечение выдает аварийные сигналы и предупреждения о потенциальных опасностях потери устойчивости, чтобы разрешить корректирующие действия.

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

Еще одно устройство, предназначенное для управления напряжением рельсов: VERSE®, система, предлагаемая VORTOK International, которая может механически измерять нейтральную температуру рельсов. VERSE был впервые использован в Соединенном Королевстве в 1998 году, представлен в Соединенных Штатах и ​​Канаде в 1999 году и использовался CN с 2002 года.

«VERSE требует, чтобы рельс находился в натянутом состоянии, а крепежные детали были удалены примерно с 100 футов рельса с обеих сторон, а оборудование VERSE было прикреплено к рельсу», — говорит Джеймс О’Келли, президент компании AET Rail Group, которая представляет VORTOK США и Канада.

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

«Это позволяет пользователю принимать решения по техническому обслуживанию, которые снижают риск коробления рельсов», — говорит О’Келли, добавляя, что фактическую температуру рельсов следует измерять в начале и в конце испытания.

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

Универсальный инструмент

Одним из новейших продуктов VORTOK является MultiSensor ™, устройство, установленное на рельсе, которое имеет датчик, который может непрерывно измерять температуру без напряжений / нейтральную температуру, температуру сердечника рельса и деформацию.

Устройство обеспечивает «высокоточные данные, [которые] могут быть переданы несколькими способами, включая сотовую связь или радио», — говорит О’Келли, добавляя, что MultiSensor может быть оснащен сигнализацией.

Устройство используется в удаленном месте в Австралии, где солнечные батареи используются для питания оборудования для мониторинга.

MultiSensor также используется в США. В 2009 году устройство первого поколения было установлено в тоннеле МТА Метро — Северная железная дорога.По словам О’Келли, сейчас VORTOK готовит предложение по модернизации датчиков, поскольку путевые системы в туннеле нуждаются в изменениях, а новая версия MultiSensor значительно расширила возможности связи.

Он добавляет, что MultiSensor вместе с системой сбора и передачи данных также был установлен на Class I и в настоящее время проходит испытания.

Еще один способ предотвратить изгибы и пряжки — поддерживать состояние балласта, в том числе плеч, — говорит Зуспан из Track Guy Consultants.По его словам, без достаточного балласта обочины или если балласт загрязнен или грязный, путевая структура будет относительно слабой.

Balfour Beatty Rail Inc. предлагает способ определения состояния балласта. По словам Стива Атертона, технического специалиста Balfour Beatty Rail, представленного около 18 месяцев назад, вагон сканирования железнодорожных активов (RASC) представляет собой мультисенсорную систему на базе высокорельсового транспортного средства, включающую лазерное сканирование, георадар (GPR) и системы видеонаблюдения. менеджер по услугам.

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

«RASC может смотреть на обочины и центр гусеницы, определяя толщину, если балласт чистый и в хорошем состоянии, есть ли грязные или мокрые пятна или карманы», — говорит Атертон.

Рельс также может быть снят с напряжений во время сварочных работ. Когда рельс сварен, его можно растянуть, чтобы уменьшить напряжение.Поставщик услуг по сварке рельсов Holland Co. L.P. предлагает 125 мобильных сварочных машин, оснащенных съемниками рельсов, которые можно использовать для регулировки желаемой нейтральной температуры рельсов.

«Мы используем Holland Puller-Lite, 160-тонный« суперсъемник », который наши бригады используют как часть своих задач по сварке рельсов», — говорит менеджер по инженерным вопросам Голландии Ричард Крал.

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

Образовательные усилия

Несмотря на то, что разработки продуктов и технологические достижения имеют жизненно важное значение для предотвращения изгибов и прогибов, также необходимо обучать команды хорошо подготовленным трассам и способам поиска и устранения проблем до их возникновения. Подразделение ZETA-TECH Harsco Rail предоставляет такие услуги по обучению техобслуживанию и проверке непрерывно сварных рельсов (CWR), — говорит Дон Холфельд, директор компании по обучению и инженерно-техническим работам. По его словам, ZETA-TECH предлагает услуги обучения с 1996 года и обеспечивает индивидуальное обучение для каждого клиента.

Федеральное управление железных дорог (FRA) имеет несколько правил. касательно CWR и добавил требование стандарта безопасности, обязывающее всех железных дорог иметь утвержденную FRA программу обучения.

Федеральное управление транзита (FTA) также опубликовало руководство «Сборник передовых практик отрасли железнодорожного транспорта для проверки и технического обслуживания путей», в котором транзитным агентствам рекомендуется иметь письменные процедуры для установка, проверка и обслуживание CWR, а также обучение всего персонала, ответственного за обслуживание рельса.

Двухдневный курс обучения CWR ZETA-TECH был подготовлен частично для соответствия требованиям FRA и FTA, а также для соответствия требованиям AREMA, — говорит Холфельд.

«Цель этого курса — предоставить учебную программу, которая будет обучена всем силам технического обслуживания путей, которые несут ответственность за инспекцию, техническое обслуживание и снятие напряжения с CWR», — говорит он.

Основные моменты, охватываемые программой, включают теорию теплового расширения, понимание причин коробления гусениц и частей оттяжек, методы проверки, а также ремонт и восстановление гусениц с термическими дефектами.

ZETA-TECH предоставила услуги обучения большинству Class Is, но в наши дни основными клиентами компании являются транзитные агентства, в том числе Управление транзита столичной зоны Вашингтона, Управление транзита Мэриленда, Управление транспорта Юго-Восточной Пенсильвании, Управление транзита Чикаго, Dallas Area Rapid Transit, Metrolink и Трен Урбано в Пуэрто-Рико, — говорит Холфельд.

Шарнирная гусеница также не свободна от перегибов и пряжек. Таким образом, смазка стыков рельсов, чтобы они не «замерзли» от ржавчины и могли слегка двигаться, — одна из лучших варианты, говорит он.

Укрепление

Проблема перегибов и прогибов, вызванных нагревом, обострилась после того, как железные дороги перешли с сочлененных рельсов на CWR, который стал более популярным в 1980-х и 1990-х годах и широко используется сегодня, говорит Зуспан из Track Guy Consultants.

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

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

По мере того, как CWR становился все более популярным, изгибы стали чаще образовываться и наносили большой ущерб из-за сходов с рельсов. Теперь отрасль понимает, как контролировать силы в CWR, и этот тип рельсов «никуда не годится», — говорит Зуспан.

«[Но] у нас все еще есть гусеница- связанных несчастных случаев, — говорит он. — Прошлой весной было пять крупных аварий ».

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

Уолтер Варт — свободный писатель из Денвера.

Работа с мастер-треком в GarageBand на Mac

У каждого проекта GarageBand есть мастер-трек. Когда вы показываете мастер-трек, он появляется под последним треком в области треков.

Вы можете управлять общей громкостью воспроизведения проекта с помощью ползунка Volume на панели управления или на мастер-треке. Оба ползунка действуют как общий регулятор громкости для всего проекта.

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

Вы можете легко добавить постепенное затухание в конце проекта, чтобы звук постепенно переходил в тишину. Когда вы добавляете затухание, к мастер-треку проекта добавляются четыре точки громкости. Первая точка громкости добавляется за 10 секунд до конца последней области в проекте, вторая — за 7 секунд, третья — за 4 секунды и четвертая — в конце последней области.

Показать мастер-трек

  • В GarageBand на Mac выберите «Дорожка»> «Показать мастер-трек».

    Мастер-трек отображается под последним треком в области треков.

Добавить автоматическое затухание

Отрегулируйте длину затухания

  1. В GarageBand на Mac выберите «Дорожка»> «Показать мастер-трек».

  2. Выберите «Громкость» в меню в заголовке мастер-трека.

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

Вручную добавьте плавное появление или затухание

  1. В GarageBand на Mac выберите «Дорожка»> «Показать мастер-трек».

  2. Выберите «Громкость» в меню в заголовке мастер-трека.

  3. Добавьте точки громкости в начало кривой громкости для плавного появления звука или в конец кривой для постепенного исчезновения.

  4. Перемещайте точки громкости, чтобы отрегулировать длину и глубину (интенсивность) нарастания или затухания.

Вы можете добавить другие изменения громкости к мастер-треку и использовать их для управления другими функциями, такими как настройки мастер-эффекта.Дополнительные сведения об автоматизации параметров дорожки см. В разделах Отображение кривых автоматизации дорожек в GarageBand на Mac и Добавление и редактирование точек автоматизации в GarageBand на Mac.

: элемент Embed Text Track — HTML: язык разметки гипертекста

Элемент HTML используется как дочерний для мультимедийных элементов, и . Он позволяет вам указывать синхронизированные текстовые дорожки (или временные данные), например, для автоматической обработки субтитров.Дорожки отформатированы в формате WebVTT (файлы .vtt, ) — текстовые дорожки веб-видео.

Этот элемент включает глобальные атрибуты.

по умолчанию
Этот атрибут указывает, что дорожка должна быть включена, если в предпочтениях пользователя не указано, что другая дорожка является более подходящей. Это может использоваться только на одном элементе дорожки на медиа-элемент.
вид
Как предполагается использовать текстовую дорожку.Если опущено, тип по умолчанию — субтитров . Если атрибут содержит недопустимое значение, он будет использовать метаданные (версии Chrome до 52 обрабатывали недопустимое значение как субтитров ). Разрешены следующие ключевые слова:
  • субтитры
    • Субтитры обеспечивают перевод контента, который не может быть понят зрителем. Например, речь или текст на английском языке в фильме на английском языке.
    • Субтитры могут содержать дополнительный контент, обычно дополнительную справочную информацию.Например, текст в начале фильмов «Звездные войны» или дата, время и место съемки.
  • подписи
    • Скрытые субтитры обеспечивают транскрипцию и, возможно, перевод аудио.
    • Он может включать важную невербальную информацию, такую ​​как музыкальные реплики или звуковые эффекты. Он может указывать на источник сигнала (например, музыка, текст, персонаж).
    • Подходит для глухих или с приглушенным звуком.
  • описания
    • Текстовое описание видеоконтента.
    • Подходит для слепых пользователей или пользователей, которым не видно видео.
  • главы
    • Заголовки глав предназначены для использования, когда пользователь перемещается по медиаресурсу.
  • метаданные
    • Дорожки, используемые скриптами. Не видно пользователю.
этикетка
Читаемый пользователем заголовок текстовой дорожки, который используется браузером при перечислении доступных текстовых дорожек.
SRC
Адрес трека (файл .vtt, ). Должен быть действующий URL. Этот атрибут должен быть указан, и его значение URL-адреса должно иметь то же происхождение, что и документ, за исключением случаев, когда родительский элемент или элемента track имеет атрибут crossorigin .
srclang
Язык текстовых данных дорожки. Это должен быть действительный языковой тег BCP 47.Если для атрибута kind установлено значение subtitles , то необходимо определить srclang .

Типы данных дорожки

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

Медиа-элемент не может иметь более одной дорожки с одним и тем же типом , srclang и label .

Обнаружение изменений cue

Базовый TextTrack , указанный свойством track , получает событие cuechange каждый раз, когда изменяется текущая реплика. Это происходит, даже если дорожка не связана с медиа-элементом.

Если дорожка связана с элементом мультимедиа , используя элемент в качестве дочернего элемента или , событие cuechange также отправляется на HTMLTrackElement .

  let textTrackElem = document.getElementById ("texttrack");

textTrackElem.addEventListener ("cuechange", (событие) => {
  let cues = event.target.track.activeCues;
});
  

Кроме того, вы можете использовать обработчик события oncuechange :

  let textTrackElem = document.getElementById ("texttrack");

textTrackElem.oncuechange = (событие) => {
  let cues = event.target.track.activeCues;
});  
  <постер управления видео = "/ images / sample.gif ">
   
   
   
   
   
   
   
   
   
   
   
   
   
   ...

  

Таблицы BCD загружаются только в браузере

Треков — документация Rally 2.2.0

Определение

Дорожка описывает один или несколько сценариев тестирования.Его структура подробно описана в справочнике треков.

Создание дорожки из данных в существующем кластере

Если у вас уже есть кластер с данными в нем, вы можете использовать подкоманду create-track Rally для создания базовой трассы Rally. Чтобы создать трек Rally с данными из индексов продуктов и компаний , которые размещены в локально работающем кластере Elasticsearch, введите следующую команду:

 esally create-track --track = acme --target-hosts = 127.0.0.1: 9200 --indices = "продукты, компании" --output-path = ~ / track
 

Если вы хотите подключиться к кластеру с TLS и включенной базовой аутентификацией, например, через Elastic Cloud, также укажите –client-options и измените basic_auth_user и basic_auth_password соответственно:

 esally create-track --track = acme --target-hosts = abcdef123.us-central-1.gcp.cloud.es.io: 9243 --client-options = "тайм-аут: 60, use_ssl: true, verify_certs: true, basic_auth_user: 'elastic', basic_auth_password: 'secret-password' "--indices =" продукты, компании "--output-path = ~ / track
 

Генератор трека создаст папку с названием трека в указанном выходном каталоге:

> найти треки / acme
треки / акме
треки / акме / компании-документы.json
треки / acme / companies-documents.json.bz2
треки / acme / companies-documents-1k.json
треки / acme / companies-documents-1k.json.bz2
треки / acme / companies.json
треки / acme / products-documents.json
треки / acme / products-documents.json.bz2
треки / acme / продукты-документы-1k.json
треки / acme / products-documents-1k.json.bz2
треки / acme / products.json
треки / acme / track.json
 

Файлы организованы следующим образом:

  • track.json содержит актуальную трассу Rally. Подробнее см. Ссылку на трек.
  • companies.json и products.json содержат сопоставление и настройки для извлеченных индексов.
  • * -documents.json (.bz2) содержит источники всех документов из извлеченных индексов. Файлы с суффиксом -1k содержат уменьшенную версию корпуса документов для поддержки тестового режима.

Создание трека с нуля

Трек «туториал» будем создавать поэтапно. Мы храним все в каталоге ~ / rally-track / tutorial , но вы можете выбрать любое другое место.

Во-первых, получите данные. Geonames предоставляет географические данные по лицензии Creative Commons. Загрузите allCountries.zip (около 300 МБ), распакуйте его и проверьте allCountries.txt .

Файл разделен табуляцией, но для массового индексирования данных с помощью Elasticsearch нам нужен JSON. Преобразуйте данные с помощью следующего скрипта:

 импорт json

cols = (("geonameid", "int", True),
        ("имя", "строка", Истина),
        ("asciiname", "строка", ложь),
        («альтернативные имена», «строка», ложь),
        ("широта", "двойная", True),
        ("долгота", "двойная", True),
        ("класс_класса", "строка", ложь),
        ("feature_code", "string", ложь),
        ("код страны", "строка", Истина),
        ("cc2", "строка", ложь),
        ("admin1_code", "строка", ложь),
        ("admin2_code", "строка", ложь),
        ("admin3_code", "строка", ложь),
        ("admin4_code", "строка", Ложь),
        («популяция», «длинный», Истина),
        ("высота", "интервал"; ложь),
        ("дем", "строка", ложь),
        ("часовой пояс", "строка", ложь))


def main ():
    с открытым ("allCountries.txt "," rt ", encoding =" UTF-8 ") как f:
        для строки в f:
            tup = line.strip (). split ("\ t")
            запись = {}
            для i в диапазоне (len (cols)):
                имя, тип, include = cols [i]
                если tup [i]! = "" и включить:
                    если ввести ("int", "long"):
                        запись [имя] = int (tup [i])
                    elif type == "double":
                        запись [имя] = число с плавающей запятой (туп [я])
                    elif type == "строка":
                        запись [имя] = туп [я]
            печать (json.дампы (запись, sure_ascii = False))


если __name__ == "__main__":
    основной()
 

Сохраните сценарий как toJSON.py в каталоге руководств ( ~ / rally-track / tutorial ). Вызовите его с помощью python3 toJSON.py> documents.json .

Затем сохраните следующий файл сопоставления как index.json в каталоге руководства:

 {
  "настройки": {
    "index.number_of_replicas": 0
  },
  "mappings": {
    "docs": {
      "динамический": "строгий",
      "характеристики": {
        "geonameid": {
          "тип": "длинный"
        },
        "название": {
          "тип": "текст"
        },
        "широта": {
          "тип": "двойной"
        },
        "долгота": {
          "тип": "двойной"
        },
        "код страны": {
          "тип": "текст"
        },
        "Население": {
          "тип": "длинный"
        }
      }
    }
  }
}
 

Примечание

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

Подробные сведения о допустимом синтаксисе см. В документации Elasticsearch по сопоставлениям и API создания индекса.

Наконец, сохраните трек как track.json в каталоге руководств:

 {
  «версия»: 2,
  "description": "Учебное пособие по тестированию Rally",
  "индексы": [
    {
      "name": "geonames",
      "body": "index.json",
      "типы": ["документы"]
    }
  ],
  "корпус": [
    {
      "name": "ралли-учебник",
      "документы": [
        {
          "исходный-файл": "документы.json ",
          "количество документов": 11658903,
          "байт без сжатия": 1544799789
        }
      ]
    }
  ],
  "расписание": [
    {
      "операция": {
        "тип-операции": "индекс-удаления"
      }
    },
    {
      "операция": {
        "тип-операции": "создать-индекс"
      }
    },
    {
      "операция": {
        "тип-операции": "состояние-кластера",
        "request-params": {
          "wait_for_status": "зеленый"
        },
        "повторять до успеха": истина
      }
    },
    {
      "операция": {
        "тип операции": "навалом",
        «оптом»: 5000
      },
      «период разминки»: 120,
      «клиентов»: 8
    },
    {
      "операция": {
        "тип-операции": "принудительное слияние"
      }
    },
    {
      "операция": {
        "имя": "совпадение-все",
        "тип операции": "поиск",
        "тело": {
          "запрос": {
            "match_all": {}
          }
        }
      },
      «клиенты»: 8,
      «разминка-итераций»: 1000,
      «итераций»: 1000,
      "target-throughput": 100
    }
  ]
}
 

Номера под свойством документов необходимы для проверки целостности и предоставления отчетов о проделанной работе.Определите правильное количество документов с помощью wc -l documents.json и размер в байтах с помощью stat -f "% z" documents.json .

Примечание

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

Примечание

Вы можете хранить любые вспомогательные скрипты вместе с вашим треком. Однако вам нужно поместить их в каталог, начинающийся с «_», e.грамм. «_служба поддержки». Rally загружает плагины треков (см. Ниже) из любого каталога, но игнорирует каталоги, начинающиеся с «_».

Примечание

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

Новый трек появляется, когда вы запускаете треков из списка esrally --track-path = ~ / rally-track / tutorial :

 dm @ io: ~ $ esrally список треков --track-path = ~ / rally-track / tutorial

    ____ ____
   / __ \ ____ _ / / / _ __
  / / _ / / __ `/ / / / / /
 / _, _ / / _ / / / / / _ / /
/ _ / | _ | \ __, _ / _ / _ / \ __, /
                / ____ /
Доступные треки:

Название Описание Документы Формат в сжатом виде Размер без сжатия
---------- ----------------------------- ----------- --------------- -----------------
учебное пособие Учебный тест для Rally 11658903 N / A 1.4ГБ
 

Вы также можете показать подробную информацию о своем треке с esrally info --track-path = ~ / rally-track / tutorial :

 dm @ io: ~ $ esrally info --track-path = ~ / rally-track / учебник

    ____ ____
   / __ \ ____ _ / / / _ __
  / / _ / / __ `/ / / / / /
 / _, _ / / _ / / / / / _ / /
/ _ / | _ | \ __, _ / _ / _ / \ __, /
                / ____ /

Подробная информация о треке [учебник]:

* Описание: Учебное пособие по тестированию Rally.
* Документы: 11,658,903
* Сжатый размер: N / A
* Размер без сжатия: 1.4ГБ


Расписание:
----------

1. удалить-индекс
2. создать индекс
3. кластер-здоровье
4. оптом (8 клиентов)
5. принудительное слияние
6. query-match-all (8 клиентов)
 

Поздравляю, вы создали свой первый трек! Вы можете протестировать его с esally race --distribution-version = 7.0.0 --track-path = ~ / rally-track / tutorial .

Добавление поддержки тестового режима

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

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

Rally также выполняет постобработку всех имен файлов данных. Вместо documents.json Rally ожидает documents-1k.json и предполагает, что файл содержит 1.000 документов. Однако вам необходимо подготовить эти файлы данных. Выберите 1.000 документов для каждого файла данных в вашем треке и сохраните их в файле с суффиксом -1k . Выбираем первые 1.000 с заголовком -n 1000 документов.json> документы-1k.json .

Вызовы

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

 {
  «версия»: 2,
  "description": "Учебное пособие по тестированию Rally",
  "индексы": [
    {
      "name": "geonames",
      "body": "index.json",
      "типы": ["документы"]
    }
  ],
  "корпус": [
    {
      "name": "ралли-учебник",
      "документы": [
        {
          "исходный-файл": "документы.json ",
          "количество документов": 11658903,
          "байт без сжатия": 1544799789
        }
      ]
    }
  ],
  "вызовы": [
    {
      "имя": "индекс-и-запрос",
      "по умолчанию": правда,
      "расписание": [
        {
          "операция": {
            "тип-операции": "индекс-удаления"
          }
        },
        {
          "операция": {
            "тип-операции": "создать-индекс"
          }
        },
        {
          "операция": {
            "тип-операции": "состояние-кластера",
            "request-params": {
              "wait_for_status": "зеленый"
            },
            "повторять до успеха": истина
          }
        },
        {
          "операция": {
            "тип операции": "навалом",
            «оптом»: 5000
          },
          «период разминки»: 120,
          «клиентов»: 8
        },
        {
          "операция": {
            "тип-операции": "принудительное слияние"
          }
        },
        {
          "операция": {
            "имя": "совпадение-все",
            "тип операции": "поиск",
            "тело": {
              "запрос": {
                "match_all": {}
              }
            }
          },
          «клиенты»: 8,
          «разминка-итераций»: 1000,
          «итераций»: 1000,
          "target-throughput": 100
        }
      ]
    }
  ]
}
 

Примечание

Если вы определяете несколько задач, Rally запускает задачу, где по умолчанию установлено на истинное .Если вы хотите выполнить другой вызов, укажите в командной строке параметр --challenge = YOUR_CHALLENGE_NAME .

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

  • Чтобы запускать только часть задач, вы можете использовать фильтрацию задач, например --include-tasks = "create-index, bulk" будет запускать только эти две задачи в дорожке выше или --exclude-tasks = "bulk" запустит все задачи, кроме bulk .
  • Для изменения параметров, например количество клиентов, можно использовать параметры трека

Структурирование дорожки

track.json — это точка входа в трек, но вы можете разделить трек по своему усмотрению. Предположим, вы хотите добавить на трек больше испытаний, но храните их в отдельных файлах. Создайте каталог Challenge и сохраните следующие данные в файле issues / index-and-query.json :

.
 {
  "имя": "индекс-и-запрос",
  "по умолчанию": правда,
  "расписание": [
    {
      "операция": {
        "тип-операции": "индекс-удаления"
      }
    },
    {
      "операция": {
        "тип-операции": "создать-индекс"
      }
    },
    {
      "операция": {
        "тип-операции": "состояние-кластера",
        "request-params": {
          "wait_for_status": "зеленый"
        },
        "повторять до успеха": истина
      }
    },
    {
      "операция": {
        "тип операции": "навалом",
        «оптом»: 5000
      },
      «период разминки»: 120,
      «клиентов»: 8
    },
    {
      "операция": {
        "тип-операции": "принудительное слияние"
      }
    },
    {
      "операция": {
        "имя": "совпадение-все",
        "тип операции": "поиск",
        "тело": {
          "запрос": {
            "match_all": {}
          }
        }
      },
      «клиенты»: 8,
      «разминка-итераций»: 1000,
      «итераций»: 1000,
      "target-throughput": 100
    }
  ]
}
 

Включить новый файл в дорожку .json :

 {
  «версия»: 2,
  "description": "Учебное пособие по тестированию Rally",
  "индексы": [
    {
      "name": "geonames",
      "body": "index.json",
      "типы": ["документы"]
    }
  ],
  "корпус": [
    {
      "name": "ралли-учебник",
      "документы": [
        {
          "исходный файл": "documents.json",
          "количество документов": 11658903,
          "байт без сжатия": 1544799789
        }
      ]
    }
  ],
  "вызовы": [
    {% include "задачи / index-and-query.json "%}
  ]
}
 

Мы заменили содержание задачи на {% include "issues / index-and-query.json"%} , которое сообщает Rally, что нужно включить задачу из предоставленного файла. Вы можете использовать , включая на произвольных участках вашего трека.

Чтобы повторно использовать определения операций в задачах, вы можете определить их в отдельном блоке операций и ссылаться на них по имени в соответствующей задаче:

 {
  «версия»: 2,
  "description": "Учебное пособие по тестированию Rally",
  "индексы": [
    {
      "name": "geonames",
      "тело": "индекс.json ",
      "типы": ["документы"]
    }
  ],
  "корпус": [
    {
      "name": "ралли-учебник",
      "документы": [
        {
          "исходный файл": "documents.json",
          "количество документов": 11658903,
          "байт без сжатия": 1544799789
        }
      ]
    }
  ],
  "операции": [
    {
      "имя": "удалить",
      "тип-операции": "индекс-удаления"
    },
    {
      "имя": "создать",
      "тип-операции": "создать-индекс"
    },
    {
      "name": "жду-зеленый",
      "тип-операции": "состояние-кластера",
      "request-params": {
        "wait_for_status": "зеленый"
      },
      "повторять до успеха": истина
    },
    {
      "имя": "объемный индекс",
      "тип операции": "навалом",
      «оптом»: 5000
    },
    {
      "имя": "принудительное слияние",
      "тип-операции": "принудительное слияние"
    },
    {
      "имя": "совпадение-все",
      "тип операции": "поиск",
      "тело": {
        "запрос": {
          "match_all": {}
        }
      }
    }
  ],
  "вызовы": [
    {% include "задачи / index-and-query.json "%}
  ]
}
 

задач / index-and-query.json тогда становится:

 {
  "имя": "индекс-и-запрос",
  "по умолчанию": правда,
  "расписание": [
    {
      "операция": "удалить"
    },
    {
      "операция": "создать"
    },
    {
      "операция": "ожидание зеленого"
    },
    {
      "операция": "объемный индекс",
      «период разминки»: 120,
      «клиентов»: 8
    },
    {
      "операция": "принудительное слияние"
    },
    {
      "операция": "поиск-соответствие-все",
      «клиенты»: 8,
      «разминка-итераций»: 1000,
      «итераций»: 1000,
      "target-throughput": 100
    }
  ]
}
 

Обратите внимание, как мы ссылаемся на операции по их имени (например,грамм. создать , bulk-index , force-merge или query-match-all ).

Вы также можете использовать помощника Rally по сбору, чтобы упростить выполнение нескольких задач:

 {% import "rally.helpers" как rally%}
{
  «версия»: 2,
  "description": "Учебное пособие по тестированию Rally",
  "индексы": [
    {
      "name": "geonames",
      "body": "index.json",
      "типы": ["документы"]
    }
  ],
  "корпус": [
    {
      "name": "ралли-учебник",
      "документы": [
        {
          "исходный-файл": "документы.json ",
          "количество документов": 11658903,
          "байт без сжатия": 1544799789
        }
      ]
    }
  ],
  "операции": [
    {
      "имя": "удалить",
      "тип-операции": "индекс-удаления"
    },
    {
      "имя": "создать",
      "тип-операции": "создать-индекс"
    },
    {
      "name": "жду-зеленый",
      "тип-операции": "состояние-кластера",
      "request-params": {
        "wait_for_status": "зеленый"
      },
      "повторять до успеха": истина
    },
    {
      "имя": "объемный индекс",
      "тип операции": "навалом",
      «оптом»: 5000
    },
    {
      "имя": "принудительное слияние",
      "тип-операции": "принудительное слияние"
    },
    {
      "имя": "совпадение-все",
      "тип операции": "поиск",
      "тело": {
        "запрос": {
          "match_all": {}
        }
      }
    }
  ],
  "вызовы": [
    {{ралли.collect (parts = "Challenge / *. json")}}
  ]
}
 

Изменения:

  1. Мы импортируем вспомогательные функции из Rally, добавляя {% import "rally.helpers" как rally%} в строке 1.
  2. Мы используем помощник Rally collect , чтобы найти и включить все файлы JSON в подкаталог Challenge с оператором {{rally.collect (parts = "issues / *. Json")}} .

Примечание

Файл журнала

Rally содержит полностью обработанный трек после его успешной загрузки.

Вы даже можете использовать переменные Jinja2, но тогда вам нужно импортировать помощников Rally немного иначе. Вам также необходимо объявить все переменные перед оператором import :

 {% набор клиентов = 16%}
{% import "rally.helpers" как митинг с контекстом%}
 

Если вы используете эту идиому, вы можете ссылаться на переменную clients внутри ваших сниппетов с помощью {{clients}} .

Поделиться своим треком с другими

Пока трек доступен только на вашем локальном компьютере.Чтобы поделиться своим треком, вы можете проверить его в системе контроля версий. Чтобы избежать фиксации потенциально огромного файла данных, вы можете открыть его через http (например, через корзину S3) и ссылаться на него в своем треке с помощью свойства base-url . Ралли ожидает, что URL-адрес указывает на родительский путь и автоматически добавит имя файла документа.

Также следует сжать корпус документов для экономии пропускной способности сети; pbzip2 работает хорошо, обратно совместим с bzip2 и использует все доступные ядра процессора для сжатия и распаковки.Вы можете создать сжатый архив с помощью следующей команды:

 pbzip2 -9 -k -m2000 -v documents.json
 

Если вы хотите поддерживать тестовый режим Rally, также сожмите корпус тестового режима с помощью:

 pbzip2 -9 -k -m2000 -v документы-1k.json
 

Затем загрузите сгенерированные архивы documents.json.bz2 и documents-1k.json.bz2 в удаленное место.

Наконец, укажите имя сжатого файла в свойстве source-file , а также добавьте свойство base-url :

 {
  «версия»: 2,
  "description": "Учебное пособие по тестированию Rally",
  "корпус": [
    {
      "name": "ралли-учебник",
      "документы": [
        {
          "base-url": "http: // benchmarks.elasticsearch.org.s3.amazonaws.com/corpora/geonames ",
          "исходный файл": "documents.json.bz2",
          "количество документов": 11658903,
          "сжатые байты": 197857614,
          "байт без сжатия": 1544799789
        }
      ]
    }
  ],
  ...
}
 

Указание сжатых байтов (размер файла documents.json.bz2 ) и несжатых байтов (размер файла documents.json ) необязательно, но помогает Rally отображать индикаторы прогресса, а также проверять целостность.

Вы освоили основы разработки трассы для Rally. Пришло время похлопать себя по плечу, прежде чем углубляться в более сложные темы!

Дополнительные темы

Язык шаблона

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

Elasticsearch использует форматирование Mustache в нескольких местах, особенно в шаблонах поиска и шаблонах Watcher. Если вы используете Усы на трассе ралли, вы должны как следует избегать их.См. Пример в put-pipeline.

Расширения

Rally также предоставляет несколько расширений для Jinja2:

  • сейчас : глобальная переменная, которая представляет текущую дату и время, когда шаблон оценивается Rally.
  • days_ago () : фильтр, который можно использовать для вычисления даты.

Пример можно найти в треке http_logs :

 {
  "имя": "диапазон",
    "index": "журналы- *",
    "тип": "тип",
    "тело": {
      "запрос": {
        "диапазон": {
          "@timestamp": {
            "gte": "сейчас - {{'15-05-1998' | days_ago (сейчас)}} д / д",
            "lt": "сейчас / д"
          }
        }
      }
    }
  }
}
 

Набор данных, который используется в треке http_logs , начинается 26-04-1998, но мы хотим игнорировать первые несколько дней для этого запроса, поэтому мы начнем с 15-05-1998.Выражение {{'15 -05-1998 '| days_ago (now)}} дает разницу в днях между текущим моментом и фиксированной датой начала и позволяет нам сравнивать запросы временного диапазона относительно текущего момента с заранее определенным набором данных.

  • rally.collect (parts) : макрос, который можно использовать для объединения фрагментов трека. См. Пример выше.
  • rally.exists_set_param (имя_установки, значение, значение по умолчанию = Нет, запятая = Истина) : макрос, который вы можете использовать для установки значения параметра трека, не проверяя, существует ли он.

Важно

Чтобы использовать макросы, вы должны объявить {% import "rally.helpers" как rally с контекстом%} в верхней части вашего трека; см. документацию для получения более подробной информации и трек geonames для примера.

Пример:

Предположим, вам нужна операция, которая задает временную настройку Elasticsearch indices.recovery.max_bytes_per_sec тогда и только тогда, когда она была предоставлена ​​в качестве параметра отслеживания.

Ваша операция может выглядеть так:

 {
  "операция": {
    "тип-операции": "необработанный-запрос",
    "method": "PUT",
    "путь": "/ _cluster / settings",
    "тело": {
      "transient": {
        "кластер.routing.allocation.node_initial_primaries_recoveries ": 8
        {{rally.exists_set_param ("indices.recovery.max_bytes_per_sec", es_snapshot_restore_recovery_max_bytes_per_sec)}}
      }
    }
  }
}
 

Обратите внимание на отсутствие запятой после первой настройки cluster.routing.allocation.node_initial_primaries_recoveries . Это сделано намеренно, поскольку помощник вставит его, если параметр существует (это поведение можно изменить, используя запятую = False ).

Предполагая, что мы передаем --track-params = "es_snapshot_restore_recovery_max_bytes_per_sec: -1" , помощник завершит рендеринг операции как:

 {
  "операция": {
    "тип-операции": "необработанный-запрос",
    "method": "PUT",
    "путь": "/ _cluster / settings",
    "тело": {
      "transient": {
        "кластер.routing.allocation.node_initial_primaries_recoveries ": 8," indices.recovery.max_bytes_per_sec ": -1
      }
    }
  }
}
 

Параметр default_value управляет значением, используемым для настройки, если оно не определено. Если параметр не определен и нет значения по умолчанию, ничего не будет добавлено.

Источники специальных параметров

Предупреждение

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

Рассмотрим следующее определение операции:

 {
  "имя": "термин",
  "тип операции": "поиск",
  "тело": {
    "запрос": {
      "срок": {
        "тело": "врач"
      }
    }
  }
}
 

Этот запрос определяется статически, но если вы хотите изменить параметры, например, чтобы искать также «механик» или «медсестра», вы можете написать свой собственный «источник параметров» на Python.

Сначала определите имя источника параметров в определении операции:

 {
  "имя": "термин",
  "тип операции": "поиск",
  "param-source": "my-custom-term-param-source"
  «профессии»: [«слесарь», «врач», «медсестра»]
}
 

Rally распознает источник параметра и ищет файл track.py рядом с track.json . Этот файл содержит реализацию источника параметра:

 случайный импорт


def random_profession (трек, параметры, ** kwargs):
    # выберите подходящий индекс: если для этого трека определен только один
    # выберите его, но пусть пользователь всегда переопределяет индекс и тип.
    если len (track.indices) == 1:
        default_index = track.indices [0] .name
        если len (track.indices [0] .types) == 1:
            default_type = track.indices [0] .types [0].название
        еще:
            default_type = Нет
    еще:
        default_index = "_all"
        default_type = Нет

    index_name = params.get ("индекс", default_index)
    type_name = params.get ("тип", default_type)

    # вы должны предоставить все параметры, которые ожидает бегун
    возвращаться {
        "тело": {
            "запрос": {
                "срок": {
                    "body": "% s"% random.choice (params ["профессии"])
                }
            }
        },
        "index": index_name,
        "тип": имя_типа,
        "кеш": параметры.get ("кеш"; Ложь)
    }

def регистр (реестр):
    registry.register_param_source ("мой-пользовательский-термин-параметр-источник", random_profession)
 

В приведенном выше примере показан простой случай, которого достаточно, если операция, к которой применяется ваш источник параметров, идемпотентна, и не имеет значения, выполняют ли два клиента одну и ту же операцию.

Функция random_profession является фактическим источником параметров. Rally свяжет имя «my-custom-term-param-source» с этой функцией, вызвав регистр .Регистр вызывается Rally перед выполнением трека.

Функция источника параметра должна объявить параметры track , params и ** kwargs . Дорожка содержит структурированное представление текущей дорожки, а params содержит все параметры, которые были определены в определении операции в track.json . Мы используем его в примере, чтобы читать профессии, которые нужно выбрать. Третий параметр необходим для обеспечения более стабильного API по мере развития Rally.

Мы также получаем соответствующий индекс и тип документа из определений индекса дорожки, но позволяем пользователю переопределить этот выбор с помощью параметров index или type :

 {
  "имя": "термин",
  "тип операции": "поиск",
  "param-source": "my-custom-term-param-source"
  «профессии»: [«слесарь», «врач», «медсестра»],
  "индекс": "сотрудник *",
  "тип": "документы"
}
 

Если вам нужно больше контроля, вам нужно реализовать класс. Ниже представлена ​​реализация того же источника параметров, что и класс:

 случайный импорт


класс TermParamSource:
    def __init __ (self, track, params, ** kwargs):
        # выберите подходящий индекс: если для этого трека определен только один
        # выберите его, но пусть пользователь всегда переопределяет индекс и тип.если len (track.indices) == 1:
            default_index = track.indices [0] .name
            если len (track.indices [0] .types) == 1:
                default_type = track.indices [0] .types [0] .name
            еще:
                default_type = Нет
        еще:
            default_index = "_all"
            default_type = Нет

        # мы можем быстро разрешить эти параметры уже в конструкторе ...
        self._index_name = params.get ("индекс", default_index)
        self._type_name = params.get ("тип", default_type)
        self._cache = params.get ("кеш", ложь)
        # ... но нам нужно лениво разрешать "профессию" при каждом вызове позже
        self._params = params
        # Определяет, будет ли этот источник параметра "исчерпан" в какой-то момент или
        # Rally может бесконечно извлекать из него ценности.
        self.infinite = Верно

    def раздел (self, partition_index, total_partitions):
        вернуть себя

    def params (self):
        # вы должны предоставить все параметры, которые ожидает бегун
        возвращаться {
            "тело": {
                "запрос": {
                    "срок": {
                        "body": "% s"% random.выбор (self._params ["профессии"])
                    }
                }
            },
            "index": self._index_name,
            "тип": self._type_name,
            "кеш": self._cache
        }


def регистр (реестр):
    registry.register_param_source ("мой-пользовательский-термин-параметр-источник", TermParamSource)
 

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

  • У конструктора должна быть подпись __init __ (self, track, params, ** kwargs) .
  • раздел (self, partition_index, total_partitions) вызывается Rally для «назначения» источника параметров нескольким клиентам. Обычно вы можете просто вернуть self . Если каждому клиенту нужно действовать по-разному, вы также можете указать здесь разные экземпляры источника параметров.
  • params (self) : этот метод возвращает словарь со всеми параметрами, которые ожидает соответствующий «бегун». Этот метод будет вызываться один раз для каждой итерации во время гонки.В этом примере мы параметризуем запрос, случайным образом выбирая профессию из списка.
  • бесконечный : это свойство помогает Rally определить, разрешить ли источнику параметров определять, когда задача должна быть завершена (когда бесконечный равен Ложь ) или свойства задачи (например, итераций или период времени ) определить, когда задача должна быть завершена. В первом случае источник параметра должен поднять StopIteration , чтобы указать, когда он закончен.

Для случаев, когда вы хотите предоставить индикатор выполнения (обычно это тот случай, когда infinite равно False ), вы можете реализовать свойство percent_completed , которое возвращает значение с плавающей запятой между 0,0 и 1,0 . Rally будет запрашивать это значение перед каждым вызовом params () и использовать его для индикации прогресса. Однако:

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

Примечание

Метод params (self) , а также свойство percent_completed вызываются на пути, критичном к производительности. Не делайте ничего, что отнимает много времени (избегайте операций ввода-вывода). При поиске вам обычно все равно следует ограничивать пропускную способность, и это не имеет особого значения, но если соответствующая операция выполняется без регулирования пропускной способности, дважды проверьте, что ваш источник настраиваемых параметров не создает узких мест.

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

Вы также можете реализовать свои источники параметров и бегунов в нескольких файлах Python, но основной точкой входа всегда является track.py . Имя корневого пакета вашего плагина — это имя вашего трека.

Индивидуальные направляющие

Предупреждение

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

Бегуны выполняют операцию против Elasticsearch. Rally уже «из коробки» поддерживает многие операции, полный список см. В справочнике по трассе. Если вы хотите вызвать любой другой API-интерфейс Elasticsearch, определите настраиваемого средства выполнения.

Предположим, мы хотим использовать API-интерфейс percolate со старой версией Elasticsearch, которая не поддерживается Rally. Для этого мы реализуем пользовательский бегун, выполнив следующие шаги.

В файле track.json установите для типа операции значение «перколат» (вы можете выбрать это имя по своему усмотрению):

 {
  "name": "percolator_with_content_google",
  "тип операции": "перколоть",
  "тело": {
    "doc": {
      "body": "google"
    },
    "track_scores": верно
  }
}
 

Затем создайте файл дорожки.py рядом с track.json и реализует следующие две функции:

 async def percolate (es, params):
    ждать es.percolate (
            index = "запросы",
            doc_type = "контент",
            body = params ["тело"]
          )

def регистр (реестр):
    Register.register_runner ("разрешить", "разрешить", async_runner = True)
 

Функция percolate является фактическим бегуном и принимает следующие параметры:

  • es , является экземпляром клиента Elasticsearch Python
  • params — это dict параметров, предоставленных соответствующим источником параметров.Считайте этот параметр доступным только для чтения.

Эта функция может вернуть:

  • Вообще ничего. Тогда Rally примет по умолчанию 1 и "ops" (см. Ниже).
  • Кортеж из веса и блока , который обычно равен 1 и «ops» . Если вы запускаете массовую операцию, вы можете вернуть здесь размер группы, например, в количестве документов или в МБ. Затем вы вернете, например, (5000, "docs"). Rally будет использовать эти значения для хранения показателей пропускной способности.
  • dict с произвольными клавишами. Если dict содержит вес ключа , предполагается, что он числовой и выбран в качестве веса, как определено выше. Аналогично обрабатывается ключ , блок . Все остальные ключи добавляются в раздел метаданных соответствующих записей метрик времени обслуживания и задержки.

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

Чтобы проиллюстрировать, как использовать настраиваемые возвращаемые значения, предположим, что мы хотим реализовать настраиваемый бегун, который вызывает API ожидающих задач и возвращает количество ожидающих задач в виде дополнительных метаданных:

 async def pending_tasks (es, params):
    response = ожидание es.cluster.pending_tasks ()
    возвращаться {
        «вес»: 1,
        "unit": "ops",
        "количество ожидающих задач": len (ответ ["задачи"])
    }

def регистр (реестр):
    registry.register_runner ("ожидающие-задачи", ожидающие_задачи, async_runner = True)
 

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

 класс PercolateRunner:
    async def __call __ (self, es, params):
        ждать es.percolate (
            index = "запросы",
            doc_type = "контент",
            body = params ["тело"]
        )

    def __repr __ (self, * args, ** kwargs):
        возврат "перколоть"

def регистр (реестр):
    registry.register_runner ("перколат", PercolateRunner (), async_runner = True)
 

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

Runners также поддерживают интерфейс асинхронного диспетчера контекста Python. Rally использует новый контекст для каждого запроса. Реализация интерфейса асинхронного диспетчера контекста может быть удобной для очистки ресурсов после выполнения операции. Ралли использует его, например, для очистки открытых свитков.

Если вы указали несколько кластеров Elasticsearch с использованием целевых хостов, вы можете заставить Rally передавать словарь клиентских подключений вместо одного для кластера по умолчанию в параметре es .

Для этого вам необходимо:

  • Используйте бегунка класса
  • Укажите multi_cluster = True как атрибут класса
  • Используйте любое из имен кластеров, указанных в target-hosts, в качестве ключа для es dict

Пример (при условии, что Rally был вызван с указанием по умолчанию и удаленного в целевых хостах ):

 класс CreateIndexInRemoteCluster:
    multi_cluster = Истина

    async def __call __ (self, es, params):
        await es ["удаленный"].index.create (index = "удаленный-индекс")

    def __repr __ (self, * args, ** kwargs):
        вернуть "создать-индекс-в-удаленном-кластере"

def регистр (реестр):
    registry.register_runner ("создать индекс в удаленном кластере", CreateIndexInRemoteCluster (), async_runner = True)
 

Примечание

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

Для случаев, когда вы хотите предоставить индикатор выполнения, вы можете реализовать два свойства percent_completed , которые возвращают значение с плавающей запятой между 0.0 и 1.0 и свойство завершено , которое должно вернуть True , если бегун завершил работу. Это может быть полезно в тех случаях, когда можно определить прогресс только путем вызова API, например, при ожидании завершения восстановления.

Предупреждение

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

Индивидуальные планировщики

Предупреждение

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

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

 {
  "операция": "срок",
  "target-throughput": 20
}
 

Это идентично:

 {
  "операция": "срок",
  "target-throughput": "20 операций / с"
}
 

По умолчанию Rally использует детерминированное распределение, чтобы определить, когда запланировать следующую операцию.Следовательно, он выполняет запрос термина на 0, 50 мс, 100 мс, 150 мс и так далее. Планировщик также знает количество клиентов. Рассмотрим этот пример:

 {
  "операция": "срок",
  "target-throughput": 20,
  «клиентов»: 4
}
 

Если Rally не будет принимать во внимание количество клиентов и по-прежнему будет выдавать запросы (от каждого из четырех клиентов) в одни и те же моменты времени (т. Е. 0, 50 мс, 100 мс, 150 мс,…), он будет работать в целевой пропускная способность 4 * 20 = 80 операций в секунду.Следовательно, Rally автоматически снизит скорость, с которой каждый клиент будет выполнять запросы. Каждый клиент будет отправлять запросы на 0, 200 мс, 400 мс, 600 мс, 800 мс, 1000 мс и так далее. Каждый клиент выдает пять запросов в секунду, но, поскольку их четыре, у нас все еще есть целевая пропускная способность 20 операций в секунду. Вы должны иметь это в виду, когда пишете свои собственные расписания.

Чтобы создать собственный планировщик, создайте файл track.py рядом с track.json и реализуйте класс планировщика:

 случайный импорт

класс RandomScheduler:
    def __init __ (self, task, target_throughput):
        себя.скорость = 1 / target_throughput
        # масштабируйтесь соответственно количеству клиентов
        self.variation = task.clients * params.get ("изменение-миллис", 10)

    def next (self, current):
        # примерно соответствует целевой пропускной способности с некоторым случайным отклонением
        вернуть текущий + self.rate + random.randint (-self.variation // 2, self.variation // 2) / 1000.0
 

Также необходимо зарегистрировать класс планировщика:

Реестр
 def (реестр):
    registry.register_scheduler ("мой-случайный", RandomScheduler)
 

Затем вы можете использовать свой настраиваемый планировщик следующим образом:

 {
  "операция": "срок",
  "расписание": "мое-случайное",
  «клиенты»: 10,
  "target-throughput": 100,
  «вариация-миллис»: 1
}
 
.

Добавить комментарий