По умолчанию PostgreSQL настроен таким образом, чтобы расходовать минимальное количество ресурсов для работы с небольшими базами до 4 Gb на не очень производительных серверах. То есть, если дело касается систем посерьезней, то вы столкнетесь с большими потерями производительности базы данных лишь потому, что дефолтные настройки могут в корне не соответствовать производительности вашего северного оборудования. Настройки выделения ресурсов оперативной памяти RAM для работы PostgreSQL хранятся в файле postgresql.conf.
Доступен как из папки, куда установлен PostgreSQL / Data, так и из pgAdmin:
В общем на начальном этапе при возникновении трудностей и замедления работы БД, заметной для глаз пользователей достаточно увеличить три параметра:
shared_buffers
Это размер памяти, разделяемой между процессами PostgreSQL, отвечающими за выполнения активных операций. Максимально-допустимое значение этого параметра – 25% всего количества RAM
Например, при 1-2 Gb RAM на сервере, достаточно указать в этом параметре значение 64-128 Mb (8192-16384).
temp_buffers
Это размер буфера под временные объекты (временные таблицы). Среднее значение 2-4% всего количества RAM
Например, при 1-2 Gb RAM на сервере, достаточно указать в этом параметре значение 32-64 Mb.
work_mem
Это размер памяти, используемый для сортировки и кэширования таблиц.
При 1-2 Gb RAM на сервере, рекомендуемое значение 32-64 Mb.
Для вступления новых значений в силу, потребуется перезапуск службы, поэтому лучше делать во вне рабочее время.
Еще два важных параметра это maintenance_work_mem (для операций VACUUM, CREATE INDEX и других) и max_stack_depth
Установить Autohotkey (http://www.autohotkey.com/)
Зарегистрировать библиотеки:
v8CfgAddsAhk\system\svcsvc.dll
v8CfgAddsAhk\system\WshExtra.dll
Запуск
v8CfgAddsAhk\v8CfgAdds.ahk (Основной набор скриптов)
v8CfgAddsAhk\continueRow.ahk (Операции по переносу комментариев, строк). Автор ADirks
Реализованные функции
Вызов списка процедур: {ctrl +1}
Поиск с регулярными выражениями: {Alt+f}
Поиск с регулярными выражениями (результат последнего поиска): {Alt+r}
Генератор кода для объектов метаданных (требуется предварительная генерация файла структуры обработкой v8CfgAddsAhk\ext\ПолучениеСтруктуры.epf): {Alt+g}
Добавление ссылки на основной реквизит в модуле (преобразование модуля формы из обычных форм в управляемые формы): {Alt+h}
Авторские комментарии:
блок добавлен: {alt+s}
блок изменен: {alt+e}
блок удален: {alt+d}
Закоментировать строку: {ctrl + / (ctrl + .)}
Развернуть модуль: {ctrl+i}
Удаление строки: {Ctrl+y}
Cимвол ‘<‘: {Ctrl-,} - Cимвол ‘>': {Ctrl-.}
Cимвол ‘|': {Ctrl-\}
Копирование текущей строки и вставка в следующей: {ctrl+shift+c}
Медитируя на тему почему нет нормальной “Консоли запросов в управляемом приложении” захотелось покопаться в этих внутренностях 1С.
Как ставить и настраивать вэб-сервис в 1С, я не буду расказывать. Вы это легко найдете.
Идея такая: почему бы нам не создать вэб-сервис, который на строку запроса 1С выдаст web таблицу(с тэгами…). Заморачиваться с XTDO не советую, капризный он. Выдаем ответ сервера в виде строки. Данные в таблице для простоты тоже сделаем текстовыми (html).
Сделаем конфигурацию в которой один вэб-сервис (Прикреплен к статье). И распишем функцию подробно,чтобы ее можно было подключить к любой конфигурации вручную.
Все парамеры в функции строковые
Request1C – текст запроса
TableData – html строка ответа.
Возвращаем истина или ложь;
Публикуем web-сервис c именем testws. Для тестирования уберем из базы всех пользователей, включаем анонимную идентификацию и смотрим чтобы ресурс htp://localhost/testws/ws/testws?wsdl был доступен из браузера. Если показывает в браузере описание вэб-сервиса, значит все нормально.
Это все хорошо, но как все это показать? Сделаем страницу входа для обработки в вашем любимом Web-сервере. Или просто бросьте папку test1C в папку C:\inetpub\wwwroot для MS IIS(Internet Information Server)
Вы не разбираетесь в Web программировании – не беда. Главное усвоить основы. Мы посылаем специально подготовленный post запрос в Web-сервер, он передает его 1С и возращает ответ. И нам в браузере необходимо обработать ответ сервера.
Запрос:
Вырезаем из ответа сервера необходимое и преобразуем назад спец символы < и > на < и >.
Спасибо авторам библиотек jquery.com и tablesorter.com и их лицензиям(GPL, MIT) за их открытость. С помощью jquery не надо писать разный код под разные браузеры(они к сожалению различаются). А tablesorter используем для просоты вывода…
Заходим в браузер http://localhost/test1C и пишем запрос… Правильно написать запрос у меня не получается, я всегда копирую его из консоли запросов.
Нажимаем кнопку. И приходит к нам счастье.
Дополнительно скажу, что для слишком больших результатов запросов данная схема может не работать. У меня где-то начинала не выводить или выводить неправильно к 10000-100000 записям. Скорее всего ответ сервера посто не залезает в один пакет soap. А если отключить сжатие пакетов я думаю будет еще хуже. Так, что будьте осторожны.
Для работы с текстовыми документами существуют три типа данных – ТекстовыйДокумент, ЗаписьТекста и ЧтениеТекста. Разница двух подходов состоит в способе загрузки документа: ТекстовыйДокумент загружает файл целиком и далее построчно обрабатывает его; ЗаписьТекста и ЧтениеТекста загружают файл построчно.
ПРИМЕР 1: Запись данных справочника в текстовый файл:
С помощью типа ЗаписьТекста этот код будет таким:
Чтение данных из текстового файла в справочник:
С помощью типа ЗаписьТекста этот код будет таким:
ПРИМЕР 2:
В строке текста значения реквизитов справочника разделяются символом кавычка. Его можно получить, например, используя функцию Символ(34).
В случае если символ разделителя (в данном случае – кавычка) может встречаться в выгружаемых данных,
перед помещением в строку меняем этот символ на заранее определенную комбинацию символов.
В нашем случае это %квч%.
После разнесение сервера 1С:Предприятия и SQL-сервера на разные машины при загрузке dt-файла в базу расположенную на SQL-сервере стали получать ошибку "Недостаточно свободной памяти на сервере 1С:Предприятия".
или (Ошибка СУБД: Microsoft OLE DB Provider for SQL Server: there is insufficient memory in resource pool ‘default’ to run this query. HRESULT=80040E14 )
Решение проблемы:
1. При возникновении ошибки перезапустить службу сервера 1С.
2. Использовать много процессов(В свойствах кластера поставить галочку "Много процессов"). Добавить рабочие процессы, оптимальное значение 4-5 процессов.
3. Использовать регламентный перезапуск рабочих процессов. Но это не снимет проблему. Просто сократит "утечку" памяти.
4. Для операций с базой данных, например копирование базы данных использовать средства ms sql, а не работу с файлами dt.
5. Включите запись событий DBMSSQL в Технологический журнал
(Смотрите текст файла "logcfg.xml" ниже или воспользуйтесь обработкой с ИТС НастройкаТехнологическогоЖурнала.epf) и определите, на загрузке какой таблицы происходит ошибка. Если config, то выполните загрузку в файловый вариант и очистку конфигурации поставщика:
5.1 Для этого надо проверить конфигурацию на наличие некорректной информации. Для этого следует выполнить команду меню Конфигурация - "Проверка конфигурации" (НЕ ТЕСТИРОВАНИЕ!) с ОДНИМ установленным флажком "Проверка логической целостности конфигурации". При выявлении проблем будет выдано сообщение. Некорректная информация при этом будет удалена автоматически
5.2 Если Ваша конфигурация находится на поддержке, следует подобным образом проверить конфигурацию поставщика. Для этого в настройке поддержки следует сохранить конфигурацию поставщика в cf файл, загрузить его в новую базу и выполнить описанную в пункте 1 процедуру. В случае, если было получено сообщение об исправлении ("Удалена некорректная информация о метаданных"), значит конфигурация поставщика содержит некорректную информацию. В этом случае следует снять Вашу конфигурацию с поддержки и заново поставить путем объединения со свежим релизом конфигурации поставщика.
Добавление рабочего процесса
Добавление рабочего процесса, в отличие от просмотра, возможно, только для конкретного сервера кластера.
Для добавления нового рабочего процесса сервера кластера следует выбрать в дереве центральных серверов требуемый сервер, выбрать требуемый кластер, выбрать требуемый сервер кластеров выбрать ветку «Процессы» и выполнить команду контекстного меню "Создать - Процесс", галочкой Включить процесс.
Если процесс НЕ добавляется, то проверьте и сделайте следующее:
1. В свойствах Кластера должна стоять галочка "Много процессов"
2. В свойствах Рабочего сервера Увеличьте Диапозон IP адресов
По поводу перезапуска рабочих процессов - с какого момента начинается отсчет указанный в настройке кластера?
С момента старта процесса. Например стартовал в 18:00:00. Период перезапуска 86400 секунд, т.е. 24 часа. Соответственно через сутки в 18:00:00 процесс остановится и будет создан новый процесс.
Оптимизация перезапуска рабочих процессов:
1. Интервал перезапуска: 86400 сек (24 часа). Момент перезапуска не регламентируется, видимо с момента установки параметров, либо запуска сервера приложений.
2. Также можно указать допустимый объем памяти: 3000000 Кб (3 Гб).
3. Интервал превышения допустимого объема памяти — это непрерывный интервал времени превышения допустимого объема памяти, после которого сервер перезапустит процесс. Если указано 0 сек — будет ждать вечно.