Документ.РезервыПоОплатеТруда.Форма.ФормаДокумента.Форма : 2403 : Результат = ДлительныеОперации.ЗапуститьВыполнениеВФоне(
ОбщийМодуль.ДлительныеОперации.Модуль : 989 : ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяЭкспортнойПроцедуры, ПараметрыЭкспортнойПроцедуры);
...
ОбщийМодуль.ОтражениеЗарплатыВБухучетеРасширенный.Модуль : 91 : ПолучитьБухучетНачисленийБезДоговоровСоздатьВТ(ИсходныеДанные, "ВТБухучетНачисленияБезДоговоровГПХ");
ОбщийМодуль.ОтражениеЗарплатыВБухучетеРасширенный.Модуль : 11217 : СоздатьВТБухучетНачисленийПоБазовымРасчетам(Запрос, ИмяВТНачисленияИсходная,
ОбщийМодуль.ОтражениеЗарплатыВБухучетеРасширенный.Модуль : 721 : Запрос.Выполнить();'
ВЫБРАТЬ
ТЗ.Поле1 КАК Поле1
ПОМЕСТИТЬ ВТ
ИЗ
&ТЗ КАК ТЗ
1. Создание временной таблицы tt1
Sql='drop table if exists tt1 cascade;create temporary table tt1 (_Q_000_F_000 numeric(12, 2) ) without oids ',RowsAffected=0
// 2. Заполнение временной таблицы tt1 данными, переданными в запрос как таблица значений
Sql=COPY pg_temp.tt1 FROM STDIN BINARY,RowsAffected=4
ВЫБРАТЬ
ТЗ.Поле1 КАК Поле1
ПОМЕСТИТЬ ВТ
ИЗ
&ТЗ КАК ТЗ
ИНДЕКСИРОВАТЬ ПО
Поле1
// 1. Создание временной таблицы tt1
Sql='drop table if exists tt1 cascade;create temporary table tt1 (_Q_000_F_000 numeric(12, 2) ) without oids ',RowsAffected=0
// 2. Заполнение ВТ tt1 данными, переданными в запрос как таблица значений
Sql=COPY pg_temp.tt1 FROM STDIN BINARY,RowsAffected=4
// 3. Создание временной таблицы tt2 с такой же структурой колонок как и у tt1
Sql='drop table if exists tt2 cascade;create temporary table tt2 (_Q_000_F_000 numeric(12, 2) ) without oids ',RowsAffected=0
// 4. Если существует индекс tmpind_0, удалим его и создадим новый индекс tmpind_0 на временной таблице tt2
Sql=drop index if exists tmpind_0,RowsAffected=0
Sql=create index tmpind_0 on pg_temp.tt2(_Q_000_F_000),RowsAffected=0
// 5. Вставляем во временную таблицу tt2 все записи из tt1
Sql='INSERT INTO pg_temp.tt2 (_Q_000_F_000) SELECT
T1._Q_000_F_000
FROM pg_temp.tt1 T1',RowsAffected=4
// 6. Вызываем расчет статистики на временной таблице tt2
Sql=ANALYZE pg_temp.tt2,RowsAffected=0
// 7. Очищаем временную таблицу tt1
Sql="SELECT FASTTRUNCATE ('pg_temp.tt1')",RowsAffected=1
online_analyze.scale_factor = '0.1'
online_analyze.table_type = 'temporary'
online_analyze.threshold = '50'
online_analyze.enable = 'on'
online_analyze.min_interval = '10000'
cat Sql/rphost_*/*.log |
grep -E 'DBPOSTGRS' |
awk -F\- '{print $2}' | awk -F\, '{sum[$2]+=$1; clients[$7]+=$1;} END {for (event in sum) print event" - "sum[event];} END {for (client in clients) print client" - "clients[client];}' > QuerySearchResult.txt
DBPOSTGRS - 14736293002
t:clientID=213 - 1253903
t:clientID=1760 - 46007
t:clientID=1761 - 29848
t:clientID=1753 - 9047605
t:clientID=1764 - 46940
t:clientID=212 - 14725868699
SELECT
T1._IDRRef,
T1._Description
FROM _Reference559 T1
WHERE ((T1._Fld2931 = CAST(0 AS NUMERIC))) AND (T1._IDRRef = '\\201\\255\\000PV\\221\\375\\027\\021\\356R\\347#[\\253\\262'::bytea)
while (1 -eq 1) {$IP = "localhost"; $FullStat = 1; $Fname = "D:\Bases\Ping_"+$IP.Replace(".","_")+".txt"; $Expr = "ping "+$IP+" -n 1 -l 65500"; $S = invoke-expression $Expr; $S = [String]$S; $P = $S.IndexOf("=65500 "); if ($FullStat -ne 1 -and $P -ne -1) {$S = $S.Substring($P+7)}; $P = $S.IndexOf("Статистика Ping"); if ($P -eq -1) {$P = $S.IndexOf("Ping statistics")}; if ($P -ne -1) {$S = $S.Substring(0,$P)}; $timestamp = "{0:yyyy-MM-dd HH:mm:ss}" -f (get-date); $Res = $timestamp+" "+$S; Add-Content -Path $FName -Value $Res -Force; Start-Sleep -s 1}
1. Запускаем команду ping до нужного хоста (вместо localhost указать адрес сервера "1С") с размером пакета 64000 байт и количеством повторений 16000, что занимает 266 минут (немного больше, чем длительность теста).
Результат команды ping пишем в файл ping.txt
ping localhost -v -s 64000 -c 16000 | while read pong; do echo "$(date): $pong"; done > ping.txt
2. После запуска нажимаем Сtrl+z и прерываем выполнение команды.
3. Далее выполняем команду bg "%ping", чтобы запустить выполнение прерванной команды ping в фоновом режиме.
4. Проверить, запустилась ли задача в фоновом режиме, можно выполнив команду jobs. Должно появиться следующее сообщение:
[1]+ Запущен ping localhost -v -s 64000 -c 16000 | while read pong; do
echo "$(date): $pong";
done > ping.txt &
5. Дожидаемся ее выполнения и смотрим результаты в файле ping.txt
1. Устанавливаем atop:
apt-get install atop
2. Настраиваем ее конфигурацию: sudo vi /etc/default/atop.
3. Добавляем параметры:
LOGOPTS="-R" – анализ активности процессов на сервере;
LOGINTERVAL=5 – новые данные будут добавляться в журнал каждые 5 секунд;
LOGGENERATIONS=28 – система будет сохранять 28 поколений журналов, что обеспечит достаточно много данных для анализа ее активности;
LOGPATH=/var/log/atop – путь к каталогу с логами atop.
4. Перезапускаем службу: sudo systemctl restart atop.service.
5. Проверяем работоспособность командой atopsar -d (должна отобразиться статистика по диску) с интервалом снятия в 5 сек.
6. После проведения теста сохраняем данные atop в файл, выполнив команду sudo atopsar -d > disk.txt.
27:38.382000-779995,DBPOSTGRS,5,Sql='INSERT INTO _InfoRg38221 (_Fld38222RRef,_Fld38223,_Fld38224,_Fld38225,_Fld38226,_Fld38227,_Fld38228,_Fld38229,_Fld38230,_Fld38231,_Fld38232,_Fld38233) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12)',RowsAffected=1,Context='Форма.Вызов : ВнешняяОбработка.КонсольЗапросовСОбработкойРезультата.Форма.Форма.Модуль.ВыполнитьАлгоритмНаСервере
ВнешняяОбработка.КонсольЗапросовСОбработкойРезультата.Форма.Форма.Форма : 2698 : ОбъектОбработки.ИнициализироватьАлгоритм(ИДНастройки, РезультатТаблица, РезультатДерево);
ВнешняяОбработка.КонсольЗапросовСОбработкойРезультата.МодульОбъекта : 67 : ВыполнитьАлгоритм(Запрос, РезультатТаблица, РезультатДерево);
ВнешняяОбработка.КонсольЗапросовСОбработкойРезультата.МодульОбъекта : 87 : Выполнить(мТекстПрограммногоКодаДляВыполнения);
: 5 : ОценкаПроизводительности.ЗакончитьЗамерВремени(КлючеваяОперация, НачалоЗамера);
ОбщийМодуль.ОценкаПроизводительности.Модуль : 59 : ЗафиксироватьДлительностьКлючевойОперации(ПараметрыЗамера);
ОбщийМодуль.ОценкаПроизводительности.Модуль : 746 : Запись.Записать();'
2024-06-09 22:28:25.936 MSK [45145:4/111579] [erp_v] 192.168.5.210(37428) [н/д] СООБЩЕНИЕ: продолжительность: 779.114 мс выполнение <unnamed>: INSERT INTO _InfoRg38221 (_Fld38222RRef,_Fld38223,_Fld38224,_Fld38225,_Fld38226,_Fld38227,_Fld38228,_Fld38229,_Fld38230,_Fld38231,_Fld38232,_Fld38233) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12)
2024-06-09 22:28:25.935 MSK [45145:4/111579] [erp_v] 192.168.5.210(37428) [н/д] СООБЩЕНИЕ: duration: 0.135 ms plan:
Query Text: INSERT INTO _InfoRg38221 (_Fld38222RRef,_Fld38223,_Fld38224,_Fld38225,_Fld38226,_Fld38227,_Fld38228,_Fld38229,_Fld38230,_Fld38231,_Fld38232,_Fld38233) VALUES($1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12)
Insert on _inforg38221 (cost=0.00..0.01 rows=0 width=0)
-> Result (cost=0.00..0.01 rows=1 width=209)
<?xml version="1.0" encoding="UTF-8"?>
<config xmlns="http://v8.1c.ru/v8/tech-log">
<log location="D:\Logs\mini" history="48">
<event>
<ne property="name" value=""/>
</event>
</log>
</config>
$ cat rphost_*/*.log | awk -F\- '{print $2}' | awk -F\, '{sum[$2]+=$1;} END {for (event in sum) print event" - "sum[event];}'
РегистрНакопления.СкладскойУчет.ОстаткиИОбороты(, &тДата, Авто, , РазделУчета <> ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.НезавершенноеПроизводство)) КАК СкладскойУчетОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ втТоварыГруп КАК втТовары
ПО СкладскойУчетОстатки.Номенклатура = втТовары.Номенклатура
И СкладскойУчетОстатки.Организация = втТовары.Организация
И СкладскойУчетОстатки.Серия = втТовары.Серия
И СкладскойУчетОстатки.Заказ = втТовары.Заказ
И СкладскойУчетОстатки.Склад = втТовары.Склад
РегистрНакопления.СкладскойУчет.ОстаткиИОбороты(
,
&тДата,
Авто,
,
(Номенклатура, Организация, Серия, Заказ, Склад) В
(ВЫБРАТЬ
втТовары.Номенклатура,
втТовары.Организация,
втТовары.Серия,
втТовары.Заказ,
втТовары.Склад
ИЗ
втТовары)
ИЗ
втТовары)
ВЫБРАТЬ
СкладскойУчетОстатки.Организация КАК Организация,
СкладскойУчетОстатки.Номенклатура КАК Номенклатура,
СкладскойУчетОстатки.КоличествоКонечныйОстаток КАК КоличествоОстаток,
СкладскойУчетОстатки.СтоимостьКонечныйОстаток КАК СтоимостьОстаток
ИЗ
РегистрНакопления.СкладскойУчет.ОстаткиИОбороты(, &тДата, Авто, , ) КАК СкладскойУчетОстатки
ГДЕ
СкладскойУчетОстатки.Номенклатура = &Номенклатура
И СкладскойУчетОстатки.Организация = &Организация
ВЫБРАТЬ
&Номенклатура КАК Номенклатура,
&Организация КАК Организация
ПОМЕСТИТЬ ВТ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СкладскойУчетОстатки.Организация КАК Организация,
СкладскойУчетОстатки.Номенклатура КАК Номенклатура,
СкладскойУчетОстатки.КоличествоКонечныйОстаток КАК КоличествоОстаток,
СкладскойУчетОстатки.СтоимостьКонечныйОстаток КАК СтоимостьОстаток
ИЗ
РегистрНакопления.СкладскойУчет.ОстаткиИОбороты(, &тДата, Авто, , ) КАК СкладскойУчетОстатки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ
ПО СкладскойУчетОстатки.Номенклатура = ВТ.Номенклатура
И СкладскойУчетОстатки.Организация = ВТ.Организация