Monthly Archives: Июнь 2021

Исправление поврежденной базы данных MsSQL

Сегодня столкнулся с проблемой запуска базы данных MsSQL. После выключения электричества к ней нельзя подключаться и выдавался статус Suspect.

Решение вопроса:

  1. Перевести базу в статус EMERGENCY:
    EXEC sp_resetstatus ‘yourDBname’;
    ALTER DATABASE yourDBname SET EMERGENCY
  2. Проводим тестирование базы:
    DBCC checkdb(‘yourDBname’)
    ALTER DATABASE yourDBname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    DBCC CheckDB (‘yourDBname’, REPAIR_ALLOW_DATA_LOSS)
    ALTER DATABASE yourDBname SET MULTI_USER

Источник: https://infostart.ru/1c/articles/59520/

 

 

Включение отладки на серверной стороне в 1С

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

Для включения режима отладки 1С в режиме клиент-сервер достаточно последовать простым инструкциям для каждой версии 1С:

Отладка на сервере для платформы 1С 8.1

  1. Остановить службу 1C Enterprise Server Agent.
  2. Запустить редактор системного реестра. Чтобы открыть редактор реестра, необходимо нажать Windows + R (или Пуск-Выполнить) и ввести в командную строку regedit.
  3. Найти ветку реестра [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.1 Server Agent].
  4. Скорректировать атрибут «ImagePath»= , добавив «-debug».
  5. Запустить службу 1C Enterprise Server Agent.

Пример:
До включения:
«C:\Program Files\1cv81\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files\1cv81\server»
После включения отладки:
«C:\Program Files\1cv81\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -debug -d «C:\Program Files\1cv81\server»

Если не работает отладка в 1С 8.2 и 8.3

  1. Остановить службу 1C:Enterprise 8.2 Server Agent.
  2. Запустить редактор системного реестра. Чтобы открыть редактор реестра, необходимо нажать Windows + R (или Пуск-Выполнить) и ввести в командную строку regedit.
  3. Найти ветку реестра [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\1C:Enterprise 8.2 Server Agent\].
  4. Находим свойство «ImagePath»= , добавляем в строку «-debug».
  5. Записываем и запускаем службу.

Пример:
До включения:
«»C:\Program Files (x86)\1cv82\8.2.18.109\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files (x86)\1cv82\srvinfo»»
После включения отладки:
«»C:\Program Files (x86)\1cv82\8.2.18.109\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files (x86)\1cv82\srvinfo» -debug»

Источник: https://programmist1s.ru/vklyuchenie-otladki-na-servere-1s/

Удаление огромного количества файлов в Linux без завешивания сервера

Удаление большого количества файлов

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

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

В интернет много различных решений удаления файлов. Большинство из которых «вешает сервер».

Для того, чтоб Ваши службы оставались работающими Вы можете воспользоваться perl-скриптом размером в 1 строчку ))).

perl -e ‘$dir=»/mnt/k2bigdata/_old/sessions2_old/«;opendir(D,$dir)||die(«Err\n»);while($f=readdir(D)){print $dir.$f.»\n»;unlink($dir.$f);select(undef, undef, undef, 0.1);}’

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

/mnt/k2bigdata/_old/sessions2_old/ — это путь откуда удаляются файлы.

0.1 — это время в секундах, которое ожидает скрипт после удаления каждого файла. В данном случае, 0,1 = 100 миллисекунд или 0,1 секунды. Выставляется эта пауза экспериментальным путем. Запускаете скрипт в терминале, если службы продолжают нормально работать — можете понижать время, если нет, тогда прерываете выполнение скрипта и выставляете паузу побольше.

Расчет скорости удаления файлов

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

Так, например, если пауза 0,1, то Вы удалите 10 файлов в секунду.

10*60*60*24=864 000 файлов в сутки.

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

Пример: Нужно удалить 12 млн. файлов.
Если выставить время 0,05, то получим:

(1000/050)*60*60*24=1 728 000 удаленных файлов в сутки.

Таким образом, 12 млн файлов при такой паузе удалится за 6,9 суток )))

Если же Вы выставите паузу в 0,005 с, тогда скорость увеличится в 10 раз и вы удалите файлы в течении суток, что более приемлемо. Но, выдержит ли Ваш сервер такую скорость — тестируйте ;).

Автор: Рудюк С.А.