Битрикс ошибка при резервном копировании

Ошибка резервного копирования 1С-Битрикс

ID статьи: 193
, создана 10 янв 2017

При создании резервной копии выдается ошибка:

Ошибка


Закончилось свободное место или нет прав на сервере на создание резервной копии

При этом на сервере достаточно свободного места и проверка прав доступа не находит ошибок.


Решение

В файле /bitrix/modules/main/classes/general/backup.php 

замените строку: 


$data = file_get_contents($file);

на 


$data = "x1fx8bx08x00x00x00x00x00x00x03x00x00x00xffxffx03x00x00x00x00x00x00x00x00x00";


Через прямой запуск и с шифрованием (включён секретный ключь) и без шифрования всё рано пишет Secret key is incorrect.

Подскажите как с этим бороться?

Например во так:

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

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

Поддерживаю, такая же проблема.

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

А что в описании ошибки? Которая в админке в Журнале ошибок

Присоединюсь к вопросу
Ошибка автоматического создания резервной копии Secret key is incorrect
У меня тоже самое

«1С-Битрикс: Управление сайтом 14.9.3»
Последнее обновление: 22.09.2015 13:46:50

Ошибка включения «Ускорение сайта CDN»

Здравствуйте.
Я пытаюсь включить «Ускорение сайта CDN»(Рабочий стол>Настройки>Облако 1С-Битрикс>Ускорение сайта (CDN)).
Но у меня ошибка:
——————
Произошла ошибка включения ускорения сайта.
Ошибка получения настроек от сервера (код: INVALID_DOMAIN_SPECIFIED).
——————-
Редакция «Малый бизнес», все обновления установлены.

Что это за ошибка и как её можно исправить? Спасибо.

Рабочий стол > Настройки > Облако 1С-Битрикс > Ускорение сайта (CDN)

Вкладка «Дополнительно»: проверьте правильно ли указан URL сайта и отсутствует ли «https://»

(1С-Битрикс: Управление сайтом 15.5.1.)

Включение CDN — установил флаг: Включить ускорение сайта, Оптимизировать ресурсы

Цитата
Произошла ошибка включения ускорения сайта.
Ошибка получения настроек от сервера (код: 418).

P. S.:
Ошибка 418 (I’m a teapot) от компании Битрикс, как бы намекает: мы настолько умные, что наши ошибки — это фитчи.
Итог: отключил CDN, включу через год

Столкнулся с такой же проблемой, с Битрикс )

Надеюсь что поможет этот совет.

До этого вместо 418 кода показывал Ошибка получения настроек от сервера (код: NOT_POWERED_BY_BITRIX_CMS)

У меня такая же ошибка
«Произошла ошибка включения ускорения сайта.
Ошибка получения настроек от сервера (код: 418).»

Ошибка включения «Ускорение сайта CDN»

Здравствуйте.
Я пытаюсь включить «Ускорение сайта CDN»(Рабочий стол>Настройки>Облако 1С-Битрикс>Ускорение сайта (CDN)).
Но у меня ошибка:
——————
Произошла ошибка включения ускорения сайта.
Ошибка получения настроек от сервера (код: INVALID_DOMAIN_SPECIFIED).
——————-
Редакция «Малый бизнес», все обновления установлены.

Что это за ошибка и как её можно исправить? Спасибо.

Рабочий стол > Настройки > Облако 1С-Битрикс > Ускорение сайта (CDN)

Вкладка «Дополнительно»: проверьте правильно ли указан URL сайта и отсутствует ли «https://»

(1С-Битрикс: Управление сайтом 15.5.1.)

Включение CDN — установил флаг: Включить ускорение сайта, Оптимизировать ресурсы

Цитата
Произошла ошибка включения ускорения сайта.
Ошибка получения настроек от сервера (код: 418).

P. S.:
Ошибка 418 (I’m a teapot) от компании Битрикс, как бы намекает: мы настолько умные, что наши ошибки — это фитчи.
Итог: отключил CDN, включу через год

Столкнулся с такой же проблемой, с Битрикс )

Надеюсь что поможет этот совет.

До этого вместо 418 кода показывал Ошибка получения настроек от сервера (код: NOT_POWERED_BY_BITRIX_CMS)

Павел Пешков (Все сообщения пользователя)

Релиз Управление сайтом 15.5.1. — проблема осталась прежней.

Более чем похоже как на проплаченную багу

(1С-Битрикс: Управление сайтом 15.5.1.)

Включение CDN — установил флаг: Включить ускорение сайта, Оптимизировать ресурсы

Цитата
Произошла ошибка включения ускорения сайта.
Ошибка получения настроек от сервера (код: 418).

P. S.:
Ошибка 418 (I’m a teapot) от компании Битрикс, как бы намекает: мы настолько умные, что наши ошибки — это фитчи.
Итог: отключил CDN, включу через год

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

Пользователя зовут 1С и admin и это печаль
Процесс импорта и экспорта данных занимает в любом (моем) случае не менее 60 сек.
Будем игнорировать рекомендуемые настройки для безопасности — отключаем хранения сессий в БД.

Но если свойств более 100, не совсем то и удобно.

Можно сделать запрос в БД:

Или вызвать из Bitrix API два метода (удаление и добавление, так как Update — нет) при нужном Вам событие

Мануал Bitrix API по данным методам https://bxapi. ru/?search=CIBlockSectionPropertyLink

Проанализировав эту проблему, я обнаружил, что после сохранения настроек Sitemap, все корректно записывается в БД. Но во вкладке админ. панели Настройка sitemap не выводится список, даже тех настроек. которые ранее были сохранены и успешно запущены генерации.
После проверки системы и конфигурации, прав доступа, наличия необходимых включенных модулей — пришел к выводу, что это БАГ.

В марте все работало, а теперь нет.

Нет не баг. По умолчанию почтовое событие рассчитано на один активный почтовый шаблон.

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

Если есть надобность присвоить несколько (два и более) шаблонов к одному почтовому событию, необходимо зайти в раздел:

Настройки — Настройки продукта — Настройки модулей — Веб-формы

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

После этого перейдя в раздел Настройка форм ( Сервисы — Веб-формы ) выбираем нужную Вам форму (ранее созданную) и во вкладке Дополнительно увидим в поле Почтовый шаблон список всех почтовых шаблонов привязанных к почтовому событию данной веб-формы. Но активный будет только первый шаблон (собственно, в этом и была проблема).
Активировав остальные шаблоны (включив чек-бокс), почтовое событие будет отправлять по всем указанным почтовым шаблонам.

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

В курсе рассматриваются требования платформы Bitrix Framework к хостингу, вопросы установки, настройки продукта а также вопросы инструментов и методов оптимизации серверов и баз данных для работы с системой

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

Рекомендуется ознакомиться с опытом настройки и тестирования серверов в блогах Александра Демидова и Дениса Шаромова, а так же с отзывами клиентов о хостингах в группе Черный и белый список хостингов социальной сети компании «1С-Битрикс».

Если ваш хостинг на Windows, то вам может быть полезна группа 1С-Битрикс на платформе Windows Server 2008 в социальной сети сайта «1С-Битрикс». В ней пользователи делятся опытом работы системы на IIS 7.

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

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

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

Чтобы отключить подобное отношение к файлу необходимо:

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

Отсутствие кнопки Разблокировать возможно в двух случаях:

Типовые ошибки интеграции между 1С и 1С-Битрикс

Настроить обмен между «1С» и «1С-Битрикс» – не проблема. Эта функция присутствует «из коробки» начиная с ранних версий продуктов «1С:Предприятие», редакция Управление торговлей и «1С-Битрикс: Управление сайтом» в редакциях Малый бизнес и Бизнес.

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

Мы выделили несколько групп ошибок:

Далее мы детально рассмотрим сами ошибки и способы их исправления.

Ошибки на стороне веб-сервера

К этой группе относятся ошибки, возникающие в подсистемах веб-сервера, отвечающих за выполнение PHP-кода. Обычно это: Nginx, Apache и сам интерпретатор языка PHP.

Возможны 2 варианта:

А) Ошибка действительно вызвана неоптимальными настройками Nginx/Apache/PHP. Если Вы чувствуете неуверенность в своем веб-сервере или совсем недавно на него переехали — привлеките администратора для проверки и изменения настроек.

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

Ошибки при работе с файлами данных

Данные ошибки возникают при неверной настройке прав доступа к файлу.

Отображение ошибок звучит следующим образом: «Ошибка открытия файла» и «Ошибка записи файла».

Возможные причины и их решение:

Закончилось место на диске.

Удалить старые бэкапы или увеличить тариф на хостинге.

По ftp файлы загружаются, а через веб-интерфейс административного раздела сайта нет.

Обратиться в техническую поддержку хостинг-провайдера.

Не работает или некорректно работает сжатие данных при обмене.

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

Также можно проверить работу функции zip_open на сервере

Откройте в браузере страницу https:// //bitrix/admin/phpinfo. php (Либо выполните команду

If (exist_function (“zip_open”))

В браузере отобразится таблица:

Для строки ZIP должно стоять «enabled».

Проблемы авторизации

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

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

На сервере 1С установлено ПО, которое блокирует исходящие соединения, в этом случае при попытке обмена выдаётся ошибка. Исправляется добавлением адреса сайта в белый список ПО.

«Авторизация не выполнена.

Не удалось установить соединение с сервером. Проверьте имя пользователя и пароль».

Неверно указаны логин/пароль доступа к сайту.

Надо проверить, получается ли по указанному доступу зайти на сайт.

И проверить наличие редиректов при переходе по ссылке, например на https версию сайта.

https:// адрес сайта /bitrix/admin/1c_exchange. php

Появляется сообщение, значит с логином и паролем всё в порядке.

Ошибки MySQL

Ошибки возникают при соединении с базой данных MySQL, настроенной на сайте.

[Illegal mix of collations (russian_swedish_ci, IMPLICIT) and (cp1251_general_ci, COERCIBLE) for operation ‘=’]

Конфликт кодировок. Причина ошибки — таблицы базы данных в одной кодировке, а сам база в другой. В данном случае база в russian и новые таблицы создаются в не russian. При выгрузке из «1С» создается временная таблица b_xml_tree в «некорректной» кодировке russian.

Логические ошибки

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

Несовместимые версии модуля обмена и базовой конфигурации 1С.

Проверить на официальном сайте “1С-Битрикс” соответствие версий продуктов.

Если версии не совпадают, переустановить модуль обмена на стороне 1С

«Изменения товаров не зарегистрированы. Выгрузка товаров не произведена».

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

Также это сообщение выдаётся, если если в настройках Режима обмена данными с WEB-сайтом установлено: Выгружать только измененные объекты с момента последнего обмена. В этом случае это не ошибка, а выгрузки не произошло, потому что данные со стороны 1с не были изменены.

«Не удалось найти вид номенклатуры».

Ошибка появляется, если в «1С» нет видов номенклатуры «Услуга» и «Товар». Эти виды критичны для процесса обмена данными с сайтом. Решение – создать в «1С» указанные виды номенклатуры.

«Поле объекта не обнаружено».

Не указаны соответствия для полей заказа в «1С-Битрикс: Управление сайтом». Проверьте настройки, заданные в закладке Экспорт в «1С:Предприятие» страницы Настройки > Настройки продукта > Настройки модулей > Интернет-магазин. Два поля «Полное Название» и «Название» критичны для 1С. Если их не задать, экспорт выполняться не будет. Настройка соответствий для разных типов плательщиков производится отдельно.

Данные выгружаются на сайт, но не обновляются.

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

Диагностика отладки

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

Отладка обмена на стороне 1С-Битрикс

При настройке выгрузки необходимо проверить существование папки /upload/1c_catalog/. В эту папку будут загружаться файлы при обмене.

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

Включить «режим отладки» можно отредактировав файл dbconn. php.
А именно, создать константу такого вида:
Define(«BX_CATALOG_IMPORT_1C_PRESERVE», true);

На стороне 1С-Битрикс мы можем увидеть только конечные данные. Если данные приходят корректные, то они попадают в инфоблоки и это видно. Если данные приходят некорректные, то либо неверные данные были выгружены из 1С, либо выставлен неверный тип данных. Например вы пытаетесь передать многострочный список как строку.

Модуль отладки обмена от ИНТЕРВОЛГИ

Для упрощения диагностики мы создали модуль отладки обмена.

Он встраивается между 1С и 1С-Битрикс и пишет логи того, что происходит при обмене. По этим логам можно выяснить, где ошибка и исправить её. Отображение логов происходит в административной части сайта.

Модуль отладки обмена от ИНТЕРВОЛГИ лучше логов со стороны 1С-Битрикс, потому что он:

Следит за размером и в результате его работы не закончится место на сайте;

Логирует обмен справочников и заказов;

Логирует время обмена и время выполнения одного шага.

Выводы

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

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

Ошибки в десктопном приложении

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

Неверный логин или пароль

Не удалось установить соединение с сервером

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

Неправильный одноразовый код

Одноразовый код, который вы вводите для двухэтапной авторизации не подходит.

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

Домен вашего Битрикс24 изменен

Такая ошибка возникает, если у вашего Битрикс24 сменился домен.

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

Доступ к серверу невозможен

Данная ошибка может возникать, если ваш Битрикс24 был деактивирован, удален или просто перемещен, но редирект на новый адрес не был настроен. Также бывают сложности, если на вашем сервере отсутствует URL авторизации либо не включен модуль Веб-мессенджер.

Проверьте, правильно ли вы вводите адрес вашего Битрикс24, и в случае повторения ошибки обратитесь к администратору.

Сервер не готов к работе

Данная ошибка возникает, если на вашем сервере не установлено ПО Битрикс24 либо не включен модуль Веб-мессенджер.

Проверьте, верно ли введен адрес портала, и в случае повторения обратитесь к администратору.

SSL-сертификат сервера не прошел проверку

Данная ошибка возникает, если SSL-сертификат, предоставленный сервером при попытке безопасного подключения к нему, не проходит проверку. Почему это может произойти:

Проверьте, правильно ли вы ввели доменное имя, и обратитесь к администратору.

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

Установка SSL на BitrixVM 7

P. S. Номера пунктов могут отличаться в разных версиях Bitrix virtual appliance.

Мастер самостоятельно запросит и установит сертификат из сети.
Поддерживается ввод нескольких сайтов, через запятую (test1.bx, test2.bx, www. test2.bx).

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

Что делать, если сертификат не устанавливается и битрикс машина выдает ошибку?

Наше знакомство с данным новшеством прошло именно так: после настройки сертификата фоновая задача в машине завершалась с ошибкой:

Смотрим логи и выясняем подробности. Директория /opt/webdir/temp содержит логи задач, смотрим по нашей задаче site_certificate_1113161018.

Первый лог /opt/webdir/temp/site_certificate_1113161018/status, в нем есть строчка с прерыванием, а также видим и второй лог:

С этого места становиться понятно, что машина установила библиотеку dehydrated в папку /home/bitrix/dehydrated, а лог ее выполнения расположен в dehydrated_update. log

Смотрим второй лог /home/bitrix/dehydrated_update. log, в нем тоже есть ошибка:

Выходит, что для проверки требуется доступность сайта по http и https с самоподписанным сертификатом, дабы проверить права владения на оба сайта.

Поэтому настроим редирект и еще раз запустим получение ключа:

1) Отключаем редирект с http и https

2) Создаем вручную папку на сайте /.well-known/acme-challenge/ с текстовым файлом внутри:

Echo «thisisthecontentoffile» > /home/bitrix/www/site/.well-known/acme-challenge/dummychallengefile

3) Запускаем заново, и опять ошибка. Опять смотрим логи задачи. На этот раз сертификат получен, а ошибка в конфигурации сайта в nginx: /etc/nginx/bx/site_avaliable/bx_ext_ssl_www. goooodsite. ru. conf

4) ошибку устраняем (лишняя директива из-за авто-вставки настроек в файл) и видим что сертификат добавился в конфиг, а сами сертификаты хранятся тут /home/bitrix/dehydrated/certs/:

5) nginx перезапускаем, редирект из http в https возвращаем. Сертификат добавлен.

Установка платного сертификата

Загружаем файлы сертификата ( certificate. key, certificate. crt, certificate. ca-bundle ) на сервер.

При подключении укажите IP-адрес сервера, логин root, пароль и порт 22:

Система запросит подтвердить соединение — соглашаемся:

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

Переходим в созданный каталог:

Указываем, для какого сайта устанавливаем сертификат: для основного пишем default, для дополнительных — название сайта. Указываем пути* к сертификату, подтверждаем установку:

Система сообщает, что задание на установку запущено, и предлагает выйти, нажав Enter. Нажимаем Enter — нас возвращает в предыдущее окно. Возвращаемся в самое первое меню (два раза вводим 0: 0. Go to previous screen or exit).

Если установка сертификата прошла успешно, теперь сайт работает по http и https. Проверить это можно двумя способами:

1) В контекстном меню Битрикс выбираем вариант

5. Background tasks in the pool

Отобразятся выполняемые/завершенные процессы:

2) Переходим на наш сайт по ссылке https://

Если все в порядке, возвращаемся в контекстное меню Битрикс и отключаем HTTP. Выбираем пункты:

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

Проверяем сайт по https:// — открывается https:// :

Похожие статьи

Для установки SSL сертификата на наш хостинг или VPS / выделенный сервер с панель управления.

Для установки ssl сертификата на сайт, необходима панель управления ISPmanager 5 и немного.

Для установки SSL сертификата на наш хостинг или VPS / выделенный сервер с панель управления.

Рассмотрим установку сертификата на собственное окружение с помощью известного Certbot’а. Если.

Данные для установки SSL-сертификата отправляются во время активации сертификата (CSR и Private.

Источники:

Https://varebux. ru/oshibka-polucheniya-nastroyek-ot-servera-bitriks/

Https://helpdesk. bitrix24.ru/open/7297065/

Https://my. adminvps. ru/index. php/knowledgebase/136/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-SSL-%D0%BD%D0%B0-BitrixVM-7.html

<?php if (ini_get(‘short_open_tag’) == 0) die(«Error: short_open_tag parameter must be turned on in php.inin»); ?><? error_reporting(E_ALL & ~E_NOTICE & ~E_STRICT); define(‘START_TIME’, time()); define(‘CLI’, php_sapi_name() == ‘cli’); @define(‘LANGUAGE_ID’, ‘en’); @define(‘NOT_CHECK_PERMISSIONS’, true); $NS = array(); // NewState if (CLI && defined(‘BX_CRONTAB’)) // start from cron_events.php { IncludeModuleLangFile($_SERVER[‘DOCUMENT_ROOT’].‘/bitrix/modules/main/admin/dump.php’); if (IntOption(‘dump_auto_enable’) != 1) return; $l = COption::GetOptionInt(‘main’, ‘last_backup_start_time’, 0); if (time() — $l < IntOption(‘dump_auto_interval’) * 86400) return; $min_left = IntOption(‘dump_auto_time’) — date(‘H’)*60 — date(«i«); if ($min_left > 0 || $min_left < —60) return; define(‘LOCK_FILE’, $_SERVER[‘DOCUMENT_ROOT’].‘/bitrix/backup/auto_lock’); if (!file_exists($_SERVER[‘DOCUMENT_ROOT’].‘/bitrix/backup’)) mkdir($_SERVER[‘DOCUMENT_ROOT’].‘/bitrix/backup’); if (file_exists(LOCK_FILE)) { if (!($time = file_get_contents(LOCK_FILE))) RaiseErrorAndDie(‘Can’t read file: ‘.LOCK_FILE, 1); if ($time + 86400 > time()) { return; } else { ShowBackupStatus(‘Warning! Last backup has failed’); CEventLog::Add(array( «SEVERITY» => «WARNING«, «AUDIT_TYPE_ID» => «BACKUP_ERROR«, «MODULE_ID» => «main«, «ITEM_ID» => LOCK_FILE, «DESCRIPTION» => GetMessage(‘AUTO_LOCK_EXISTS_ERR’, array(‘#DATETIME#’ => ConvertTimeStamp($time))), )); unlink(LOCK_FILE) || RaiseErrorAndDie(‘Can’t delete file: ‘.LOCK_FILE, 2); } } if (!file_put_contents(LOCK_FILE, time())) RaiseErrorAndDie(‘Can’t create file: ‘.LOCK_FILE, 3); COption::SetOptionInt(‘main’, ‘last_backup_start_time’, time()); } else { define(‘NO_AGENT_CHECK’, true); define(«STATISTIC_SKIP_ACTIVITY_CHECK«, true); $DOCUMENT_ROOT = $_SERVER[‘DOCUMENT_ROOT’] = realpath(dirname(__FILE__).‘/../../../../’); require($_SERVER[‘DOCUMENT_ROOT’].‘/bitrix/modules/main/include/prolog_before.php’); IncludeModuleLangFile($_SERVER[‘DOCUMENT_ROOT’].‘/bitrix/modules/main/admin/dump.php’); } if (!defined(‘DOCUMENT_ROOT’)) define(‘DOCUMENT_ROOT’, rtrim(str_replace(‘’,‘/’,$_SERVER[‘DOCUMENT_ROOT’]),‘/’)); require_once($_SERVERDOCUMENT_ROOT«].»/bitrix/modules/main/classes/general/backup.php«); if (!CLI) // hit from bitrixcloud service { if ((!$backup_secret_key = CPasswordStorage::Get(‘backup_secret_key’)) || $backup_secret_key != $_REQUEST[‘secret_key’]) { RaiseErrorAndDie(‘Secret key is incorrect’, 10); } elseif ($_REQUEST[‘check_auth’]) { echo ‘SUCCESS’; exit(0); } if (IntOption(‘dump_auto_enable’) != 2) RaiseErrorAndDie(‘Backup is disabled’, 4); session_write_close(); session_id(md5($backup_secret_key)); session_start(); $NS =& $_SESSION[‘BX_DUMP_STATE’]; } if (!file_exists(DOCUMENT_ROOT.‘/bitrix/backup’)) mkdir(DOCUMENT_ROOT.‘/bitrix/backup’); if (!file_exists(DOCUMENT_ROOT/bitrix/backup/index.php«)) { $f = fopen(DOCUMENT_ROOT/bitrix/backup/index.php«,»w«); fwrite($f<head><meta http-equiv=«REFRESH« content=«0;URL=/bitrix/admin/index.php«></head>«); fclose($f); } while(ob_end_flush()); @set_time_limit(0); if (function_exists(‘mb_internal_encoding’)) mb_internal_encoding(‘ISO-8859-1’); $bGzip = function_exists(‘gzcompress’); $bMcrypt = function_exists(‘mcrypt_encrypt’); $bBitrixCloud = $bMcrypt && CModule::IncludeModule(‘bitrixcloud’) && CModule::IncludeModule(‘clouds’); $arParams = array( ‘disk_space’ => COption::GetOptionInt(‘main’,‘disk_space’, 0), ‘dump_archive_size_limit’ => IntOption(‘dump_archive_size_limit’), ‘dump_use_compression’ => $bGzip && IntOption(‘dump_use_compression’), ‘dump_integrity_check’ => IntOption(‘dump_integrity_check’), ‘dump_delete_old’ => IntOption(‘dump_delete_old’), ‘dump_old_time’ => IntOption(‘dump_old_time’), ‘dump_old_cnt’ => IntOption(‘dump_old_cnt’), ‘dump_old_size’ => IntOption(‘dump_old_size’), ); $arExpertBackupDefaultParams = array( ‘dump_base’ => IntOption(‘dump_base’, 1), ‘dump_base_skip_stat’ => IntOption(‘dump_base_skip_stat’, 0), ‘dump_base_skip_search’ => IntOption(‘dump_base_skip_search’, 0), ‘dump_base_skip_log’ => IntOption(‘dump_base_skip_log’, 0), ‘dump_file_public’ => IntOption(‘dump_file_public’, 1), ‘dump_file_kernel’ => IntOption(‘dump_file_kernel’, 1), ‘dump_do_clouds’ => IntOption(‘dump_do_clouds’, 1), ‘skip_mask’ => IntOption(‘skip_mask’, 0), ‘skip_mask_array’ => is_array($ar = unserialize(COption::GetOptionStringmain«,»skip_mask_array_auto«))) ? $ar : array(), ‘dump_max_file_size’ => IntOption(‘dump_max_file_size’, 0), ‘skip_symlinks’ => IntOption(‘skip_symlinks’, 0), ); if (!is_array($arExpertBackupParams)) $arExpertBackupParams = array(); $arParams = array_merge($arExpertBackupDefaultParams, $arExpertBackupParams, $arParams); $skip_mask_array = $arParams[‘skip_mask_array’]; if (strtolower($DB->type) != ‘mysql’) $arParams[‘dump_base’] = 0; if (!$NS[‘step’]) { $NS = array(‘step’ => 1); $NS[‘dump_encrypt_key’] = CPasswordStorage::Get(‘dump_temporary_cache’); $dump_bucket_id = IntOption(‘dump_bucket_id’); if ($dump_bucket_id == —1) { if (!$bBitrixCloud || !$NS[‘dump_encrypt_key’]) { $dump_bucket_id = 0; ShowBackupStatus(‘BitrixCloud is not available’); } } $NS[‘BUCKET_ID’] = $dump_bucket_id; if ($dump_bucket_id == —1) $arc_name = DOCUMENT_ROOT.BX_ROOT/backup/«.date(‘Ymd_His_’).rand(11111111,99999999); elseif(($arc_name = $argv[1]) && !is_dir($arc_name)) $arc_name = str_replace(array(‘.tar’,‘.gz’,‘.enc’),»,$arc_name); else { $prefix = str_replace(‘/’, », COption::GetOptionStringmain«, «server_name«, «»)); $arc_name = CBackup::GetArcName(preg_match(‘#^[a-z0-9.-]+$#i’, $prefix) ? substr($prefix, 0, 20).‘_’ : »); } $NS[‘arc_name’] = $arc_name.($NS[‘dump_encrypt_key’] ? «.enc» : «.tar«).($arParams[‘dump_use_compression’] ? «.gz» : »); $NS[‘dump_name’] = $arc_name.‘.sql’; ShowBackupStatus(‘Backup started to file: ‘.$NS[‘arc_name’]); } $after_file = str_replace(‘.sql’,‘_after_connect.sql’,$NS[‘dump_name’]); if ($NS[‘step’] <= 2) { // dump database if ($arParams[‘dump_base’]) { if ($NS[‘step’] == 1) { ShowBackupStatus(‘Dumping database’); if (!CBackup::MakeDump($NS[‘dump_name’], $NS[‘dump_state’])) RaiseErrorAndDie(GetMessage(‘DUMP_NO_PERMS’), 100, $NS[‘dump_name’]); if (!$NS[‘dump_state’][‘end’]) CheckPoint(); $rs = $DB->Query(‘SHOW VARIABLES LIKE «character_set_results»‘); if (($f = $rs->Fetch()) && array_key_exists (‘Value’, $f)) file_put_contents($after_file, «SET NAMES ‘«.$f[‘Value’].»‘;n»); $rs = $DB->Query(‘SHOW VARIABLES LIKE «collation_database»‘); if (($f = $rs->Fetch()) && array_key_exists (‘Value’, $f)) file_put_contents($after_file, «ALTER DATABASE `<DATABASE>` COLLATE «.$f[‘Value’].»;n»,8); $NS[‘step’] = 2; } ShowBackupStatus(‘Archiving database dump’); $tar = new CTar; $tar->EncryptKey = $NS[‘dump_encrypt_key’]; $tar->ArchiveSizeLimit = $arParams[‘dump_archive_size_limit’]; $tar->gzip = $arParams[‘dump_use_compression’]; $tar->path = DOCUMENT_ROOT; $tar->ReadBlockCurrent = intval($NS[‘ReadBlockCurrent’]); $tar->ReadFileSize = intval($NS[‘ReadFileSize’]); if (!$tar->openWrite($NSarc_name«])) RaiseErrorAndDie(GetMessage(‘DUMP_NO_PERMS’), 200, $NS[‘arc_name’]); if (!$tar->ReadBlockCurrent && file_exists($f = DOCUMENT_ROOT.BX_ROOT.‘/.config.php’)) $tar->addFile($f); $Block = $tar->Block; while(haveTime() && ($r = $tar->addFile($NS[‘dump_name’])) && $tar->ReadBlockCurrent > 0); $NSdata_size«] += 512 * ($tar->Block$Block); if ($r === false) RaiseErrorAndDie(implode(‘<br>’,$tar->err), 210, $NS[‘arc_name’]); $NSReadBlockCurrent«] = $tar->ReadBlockCurrent; $NSReadFileSize«] = $tar->ReadFileSize; if (!haveTime()) { $tar->close(); CheckPoint(); } $tar->addFile($after_file); unlink($NSdump_name«]) && (!file_exists($after_file) || unlink($after_file)); $NS[‘arc_size’] = 0; $name = $NSarc_name«]; while(file_exists($name)) { $size = filesize($name); $NS[‘arc_size’] += $size; if ($arParamsdisk_space«] > 0) CDiskQuota::updateDiskQuotafile«, $size, «add«); $name = CTar::getNextName($name); } $tar->close(); } $NS[‘step’] = 3; } if ($NS[‘step’] == 3) { // Download cloud files if ($arParams[‘dump_do_clouds’] && ($arDumpClouds = CBackup::GetBucketList())) { ShowBackupStatus(‘Downloading cloud files’); foreach($arDumpClouds as $arBucket) { $id = $arBucket[‘ID’]; if ($NS[‘bucket_finished_’.$id]) continue; $obCloud = new CloudDownload($arBucket[‘ID’]); $obCloud->last_bucket_path = $NS[‘last_bucket_path’]; if ($res = $obCloud->Scan(»)) { $NS[‘bucket_finished_’.$id] = true; } else { $NS[‘last_bucket_path’] = $obCloud->path; break; } } CheckPoint(); } $NS[‘step’] = 4; } $DB->Disconnect(); if ($NS[‘step’] == 4) { // Tar files if ($arParams[‘dump_file_public’] || $arParams[‘dump_file_kernel’]) { ShowBackupStatus(‘Archiving files’); $DOCUMENT_ROOT_SITE = DOCUMENT_ROOT; if (!defined(‘DOCUMENT_ROOT_SITE’)) define(‘DOCUMENT_ROOT_SITE’, $DOCUMENT_ROOT_SITE); $tar = new CTar; $tar->EncryptKey = $NS[‘dump_encrypt_key’]; $tar->ArchiveSizeLimit = $arParams[‘dump_archive_size_limit’]; $tar->gzip = $arParams[‘dump_use_compression’]; $tar->path = DOCUMENT_ROOT_SITE; $tar->ReadBlockCurrent = intval($NS[‘ReadBlockCurrent’]); $tar->ReadFileSize = intval($NS[‘ReadFileSize’]); if (!$tar->openWrite($NSarc_name«])) RaiseErrorAndDie(GetMessage(‘DUMP_NO_PERMS’), 400, $NS[‘arc_name’]); $Block = $tar->Block; $DirScan = new CDirRealScan; $DirScan->startPath = $NS[‘startPath’]; $r = $DirScan->Scan(DOCUMENT_ROOT_SITE); $NSdata_size«] += 512 * ($tar->Block$Block); $tar->close(); if ($r === false) RaiseErrorAndDie(implode(‘<br>’,array_merge($tar->err,$DirScan->err)), 410); $NSReadBlockCurrent«] = $tar->ReadBlockCurrent; $NSReadFileSize«] = $tar->ReadFileSize; $NSstartPath«] = $DirScan->nextPath; $NScnt«] += $DirScan->FileCount; CheckPoint(); $NS[‘arc_size’] = 0; $name = $NSarc_name«]; while(file_exists($name)) { $size = filesize($name); $NS[‘arc_size’] += $size; if ($arParamsdisk_space«] > 0) CDiskQuota::updateDiskQuotafile«, $size, «add«); $name = CTar::getNextName($name); } DeleteDirFilesEx(BX_ROOT.‘/backup/clouds’); } $NS[‘step’] = 5; } if ($NS[‘step’] == 5) { // Integrity check if ($arParams[‘dump_integrity_check’]) { ShowBackupStatus(‘Checking archive integrity’); $tar = new CTarCheck; $tar->EncryptKey = $NS[‘dump_encrypt_key’]; if (!$tar->openRead($NSarc_name«])) RaiseErrorAndDie(GetMessage(‘DUMP_NO_PERMS_READ’).‘<br>’.implode(‘<br>’,$tar->err), 510, $NS[‘arc_name’]); else { if(($Block = intval($NS[‘Block’])) && !$tar->SkipTo($Block)) RaiseErrorAndDie(implode(‘<br>’,$tar->err), 520); while(($r = $tar->extractFile()) && haveTime()); $NSBlock«] = $tar->Block; if ($r === false) RaiseErrorAndDie(implode(‘<br>’,$tar->err), 530, $NS[‘arc_name’]); } $tar->close(); CheckPoint(); } $NS[‘step’] = 6; } $DB->DoConnect(); if ($NS[‘step’] == 6) { // Send to the cloud if ($NS[‘BUCKET_ID’]) { ShowBackupStatus(‘Sending backup to the cloud’); if (!CModule::IncludeModule(‘clouds’)) RaiseErrorAndDie(GetMessageMAIN_DUMP_NO_CLOUDS_MODULE«), 600, $NS[‘arc_name’]); while(haveTime()) { $file_size = filesize($NSarc_name«]); $file_name = $NS[‘BUCKET_ID’] == —1 ? basename($NS[‘arc_name’]) : substr($NS[‘arc_name’],strlen(DOCUMENT_ROOT)); $obUpload = new CCloudStorageUpload($file_name); if ($NS[‘BUCKET_ID’] == —1) { if (!$bBitrixCloud) RaiseErrorAndDie(getMessage(‘DUMP_BXCLOUD_NA’), 610); $obBucket = null; if (!$NS[‘obBucket’]) { try { $backup = CBitrixCloudBackup::getInstance(); $q = $backup->getQuota(); if ($NS[‘arc_size’] > $q) RaiseErrorAndDie(GetMessage(‘DUMP_ERR_BIG_BACKUP’, array(‘#ARC_SIZE#’ => $NS[‘arc_size’], ‘#QUOTA#’ => $q)), 620); $obBucket = $backup->getBucketToWriteFile(CTar::getCheckword($NS[‘dump_encrypt_key’]), basename($NS[‘arc_name’])); $NS[‘obBucket’] = serialize($obBucket); } catch (Exception $e) { unset($NS[‘obBucket’]); RaiseErrorAndDie($e->getMessage(), 630); } } else $obBucket = unserialize($NS[‘obBucket’]); $obBucket->Init(); $obBucket->GetService()->setPublic(false); $bucket_id = $obBucket; } else { $obBucket = null; $bucket_id = $NS[‘BUCKET_ID’]; } if (!$obUpload->isStarted()) { if (is_object($obBucket)) $obBucket->setCheckWordHeader(); if (!$obUpload->Start($bucket_id, $file_size)) { if ($e = $APPLICATION->GetException()) $strError = $e->GetString(); else $strError = GetMessage(‘MAIN_DUMP_INT_CLOUD_ERR’); RaiseErrorAndDie($strError,640,$NS[‘arc_name’]); } if (is_object($obBucket)) $obBucket->unsetCheckWordHeader(); } if (!$fp = fopen($NS[‘arc_name’],‘rb’)) RaiseErrorAndDie(GetMessageMAIN_DUMP_ERR_OPEN_FILE«).‘ ‘.$NS[‘arc_name’], 650, $NS[‘arc_name’]); fseek($fp, $obUpload->getPos()); while($obUpload->getPos() < $file_size && haveTime()) { $part = fread($fp, $obUpload->getPartSize()); $fails = 0; $res = false; while($obUpload->hasRetries()) { if($res = $obUpload->Next($part, $obBucket)) break; elseif (++$fails >= 10) RaiseErrorAndDie(‘Internal Error: could not init upload for ‘.$fails.‘ times’, 660, $NS[‘arc_name’]); } if (!$res) { $obUpload->Delete(); RaiseErrorAndDie(GetMessageMAIN_DUMP_ERR_FILE_SEND«).‘ ‘.basename($NS[‘arc_name’]), 670, $NS[‘arc_name’]); } } fclose($fp); CheckPoint(); if($obUpload->Finish($obBucket)) { if ($NS[‘BUCKET_ID’] != —1) { $oBucket = new CCloudStorageBucket($NS[‘BUCKET_ID’]); $oBucket->IncFileCounter($file_size); } if (file_exists($arc_name = CTar::getNextName($NS[‘arc_name’]))) { unset($NS[‘obBucket’]); $NS[‘arc_name’] = $arc_name; } else { CBitrixCloudBackup::clearOptions(); if ($arParams[‘dump_delete_old’] == 1) { $name = CTar::getFirstName($NS[‘arc_name’]); while(file_exists($name)) { $size = filesize($name); if (unlink($name) && IntOptiondisk_space«) > 0) CDiskQuota::updateDiskQuotafile«,$size , «del«); $name = CTar::getNextName($name); } } break; } } else { $obUpload->Delete(); RaiseErrorAndDie(GetMessageMAIN_DUMP_ERR_FILE_SEND«).basename($NS[‘arc_name’]), 680, $NS[‘arc_name’]); } } CheckPoint(); } $NS[‘step’] = 7; } if ($NS[‘step’] == 7) { // Delete old backups if ($arParams[‘dump_delete_old’] > 1) { ShowBackupStatus(‘Deleting old backups’); $arFiles = array(); $TotalSize = $NS[‘arc_size’]; if (is_dir($p = DOCUMENT_ROOT.BX_ROOT.‘/backup’)) { if ($dir = opendir($p)) { $arc_name = CTar::getFirstName(basename($NS[‘arc_name’])); while(($item = readdir($dir)) !== false) { $f = $p.‘/’.$item; if (!is_file($f)) continue; if (!preg_match(‘#.(sql|tar|gz|enc|[0-9]+)$#’, $item)) continue; $name = CTar::getFirstName($item); if ($name == $arc_name) continue; $s = filesize($f); $m = filemtime($f); $arFiles[$name] = $m; $TotalSize += $s; } closedir($dir); } } asort($arFiles); $cnt = count($arFiles) + 1; foreach($arFiles as $name => $m) { switch ($arParams[‘dump_delete_old’]) { case 2: // time if ($m >= time() — 86400 * $arParams[‘dump_old_time’]) break 2; break; case 4: // cnt if ($cnt <= $arParams[‘dump_old_cnt’]) break 2; break; case 8: // size if ($TotalSize / 1024 / 1024 / 1024 <= $arParams[‘dump_old_size’]) break 2; break; default: break; } $cnt—; $f = $p.‘/’.$name; // echo «delete «.$f.»n»; $bDel = false; while(file_exists($f)) { $size = filesize($f); $TotalSize -= $size; if (($bDel = unlink($f)) && $arParamsdisk_space«] > 0) CDiskQuota::updateDiskQuotafile«, $size , «del«); $f = CTar::getNextName($f); } if (!$bDel) RaiseErrorAndDie(‘Could not delete file: ‘.$f, 700, $NS[‘arc_name’]); } } $NS[‘step’] = 8; } $info = «Finished.nnData size: «.round($NS[‘data_size’]/1024/1024, 2).» MnArchive size: «.round($NS[‘arc_size’]/1024/1024, 2).» MnTime: «.(time() — START_TIME).» secn»; ShowBackupStatus($info); CEventLog::Add(array( «SEVERITY» => «WARNING«, «AUDIT_TYPE_ID» => «BACKUP_SUCCESS«, «MODULE_ID» => «main«, «ITEM_ID» => $NS[‘arc_name’], «DESCRIPTION» => $info, )); $NS = array(); if (defined(‘LOCK_FILE’)) unlink(LOCK_FILE) || RaiseErrorAndDie(‘Can’t delete file: ‘.LOCK_FILE, 1000); if (!CLI) echo ‘FINISH’; COption::SetOptionInt(‘main’, ‘last_backup_end_time’, time()); ########################################## ########################### Functions #### function IntOption($name, $def = 0) { global $arParams; if (isset($arParams[$name])) return $arParams[$name]; static $CACHE; $name .= ‘_auto’; if (!$CACHE[$name]) $CACHE[$name] = COption::GetOptionIntmain«, $name, $def); return $CACHE[$name]; } function ShowBackupStatus($str) { if (!CLI && !$_REQUEST[‘show_status’]) return; static $time, $NS; if (!$time) $time = microtime(1) + $NS[‘WORK_TIME’]; echo round(microtime(1)-$time, 2).‘ sec ‘.$str.»n»; } function haveTime() { if (!CLI && time() — START_TIME > 30) return false; return true; } function RaiseErrorAndDie($strError, $errCode = 0, $ITEM_ID = ») { global $DB; if (CLI) echo ‘Error [‘.$errCode.‘]: ‘.str_replace(‘<br>’,»n»,$strError).»n»; else { echo «ERROR_«.$errCode.»n».htmlspecialcharsbx($strError).»n»; } if (is_object($DB)) { $DB->DoConnect(); CEventLog::Add(array( «SEVERITY» => «WARNING«, «AUDIT_TYPE_ID» => «BACKUP_ERROR«, «MODULE_ID» => «main«, «ITEM_ID» => $ITEM_ID, «DESCRIPTION» => «[«.$errCode] «.$strError, )); } die(); } function CheckPoint() { if (haveTime()) return; global $NS; $NS[‘WORK_TIME’] = microtime(1) — START_TIME; session_write_close(); echo «NEXT«; exit(0); }

При создании резервной копии через стандартную возможность Битрикса файлы создаются. Копирую на локаль, запускаю restore.php и на каком то шаге получаю archive is corrupted. Нажимаю «пропустить», дохожу до перехода на сайт и получаю отсутствующий в корне index.php и практически пустую папку bitrix (только db_conf и папка backup). Что сделать, чтобы создавалась нормальная резервная копия? Ну или в какую сторону копать? Место на сервере есть.


  • Вопрос задан

    более трёх лет назад

  • 3375 просмотров

TL;DR

Проблема решилась пересохранением настроек в админке на странице «Регулярное резервное копирование»

В админке стало периодически появляться сообщение вида:

По ссылке видны записи в логе:

Событие: Ошибка автоматического создания резервной копии

URL: /bitrix/tools/backup.php    

Описание: [10] Secret key is incorrect

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

И адрес в настройке «Метод запуска»  = «через облачный сервис «1С-Битрикс»»  был когда-то задан с указанием протокола HTTP

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

передаваемые им параметры авторизации (‘Secret key’) терялись из-за того, что был настроен редирект в .htaccess с http на https

Проблема решилась пересохранением настроек 

Появилась задача: «Разобраться с резервным копированием».

Сайт находится на shared хостинге spaceweb.

Что такое shared хостинг и с чем его едят?

Это самый дешевый вид хостинга для размещения простых вебсайтов. Загружаем по FTP исходные коды своего сайта и получаем доступ к общей СУБД MySQL. Никаких дополнительных функций обычно не предоставляется. Настройки сервера и ПО, наличие приложений и поддерживаемых языков программирования пользователь не контролирует. Один из недостатков – невозможность контролирования неполадок без обращения в техническую поддержку.

Альтернативой этому будут VPS (Virtual Private Server) и VDS (Virtual Dedicated Server). Это виртуальный выделенный сервер. Несколько виртуальных серверов работают на одной физической машине, но при этом пользователю выделяется гарантированное количество ресурсов, таких как объем постоянной и оперативной памяти, а также фиксированное количество ядер процессора. В этом случае пользователь имеет много возможностей по настройке и мониторингу, но он при этом должен обладать знаниями по настройке, либо нанимать сисадмина (мы, кстати, такое делаем).

Также есть Dedicated server (выделенный сервер, DS, дедик, dedic) – это целый компьютер – физическое устройство целиком от блока питания до сетевой карты. Пользователь является полноправным владельцем всей железяки и может делать с ней всё, что заблагорассудится.

Что-то пошло не так (ведь у нас же shared хостинг)

Напомню, что у нас, на сайте одного из клиентов возникла ошибка при создании резервной копии стандартными средствами CMS 1С-Битркис.

Автоматическое резервное копирование не может нормально завершиться и процесс переходит в состояние UNKNOWN буквально через 15-20 секунд.

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

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

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

В 1С-Битрикс есть только 3 параметра, позволяющие ограничивать нагрузку на CPU:

  • Отключить компрессию архива
  • Длительность шага
  • Интервал

С компрессией всё, вроде, очевидно: нет сжатия – нет нагрузки на процессор, но это не решало задачу. Длительность шага и интервал регулируют соотношение работы и простоя процессора при выполнении задачи. Настройка по умолчанию предлагает процессу 20 секунд работать, напрягая CPU, потом на 1 секунду приостанавливать всевозможную деятельность, чтоб процессор мог отдохнуть. Вроде всё вписывается, однако результат отрицательный – по-прежнему процесс переходит в UNKNOWN. А это означает, что он вдруг перестал отвечать и, скорее всего, перестал делать свою основную работу.

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

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

Результат стал положительным только при настройке 5/5 секунд и менее, что, наверное, можно считать оптимальными настройками для корректной работы бэкапов 1С-Битрикс на shared-хостингах.

Выяснилось, что у сервера есть еще одно ограничение, которое техподдержка «недоговорила» — при нагрузке более 50% время не должно превышать 10 секунд! Вот почему стандартный вариант 20/1 не работал. Справедливости ради, надо добавить, что резервное копирование, скорее всего, не совсем честно соблюдает установленные ограничения на потребление ресурсов, и нагрузка может быть несколько выше предполагаемой. Да и сервер, скорее всего, измеряет ее с какой-то погрешностью, и вряд ли он «ошибается» не в свою пользу. Поэтому варианты формата 9/1 тоже не заработали. 1 секунда оказалось слабой передышкой.

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

Вместо заключения

На сегодняшний день разница в стоимости shared хостинга и VDS/VPS не столь велика, и при совершении выбора стоит хорошо задуматься, нужна ли за столь малые деньги столь многая скорбь?


Есть вопросы? Записывайтесь на консультацию – 8 800 201-07-68.
Она бесплатная и ни к чему вас не обязывает :)

Понравилась статья? Поделить с друзьями:
  • Благодаря героизму людей катастрофа была предотвращена ошибка
  • Благодаря войне какая ошибка
  • Благодаря болезни ошибка
  • Бку 07м ошибки
  • Бк штат перечень ошибок