Система 1С значительно замедляет работу на мощном сервере, согласно тесту Гилева. Как можно улучшить производительность?

Какова конфигурация системы и настройки PostgreSQL для данной среды?  
Вот основные характеристики:  
- Конфигурация оборудования:  
  - Процессор: Xeon Gold 6354 x2  
  - Число процессоров: 72  
  - Оперативная память: 512 ГБ  
  - RAID 10: SSD 4 ТБ x4  
  - RAID 10: HDD 6 ТБ x4  
  - Гипервизор: Proxmox  
- Виртуальная машина:  
  - Агент: 1  
  - Balloon: 0  
  - BIOS: OVMF  
  - Порядок загрузки: scsi0;ide2;net0  
  - Ядер: 18  
  - CPU: host  
  - CPU Units: 1000  
  - Эфидиск: SSD_DATASTORE:vm-100-disk-0, efitype=4m, pre-enrolled-keys=1, размер=4M  
  - Идентификатор IDE: none, media=cdrom  
  - Машина: q35  
  - Оперативная память: 260096  
  - metadata: creation-qemu=9.0.2, ctime=1744397102  
  - Сеть: virtio=BC:24:11:75:A2:D3, bridge=vmbr0, firewall=1  
  - NUMA: 1  
  - ОС: l26  
  - Диски: SSD_DATASTORE:vm-100-disk-1, aio=io_uring, cache=writeback, discard=on, iothread=1  
  - SCSI HW: virtio-scsi-single  
  - SMBIOS: uuid=34c96bea-3536-4e67-bfd8-026315bb9726  
  - Сокеты: 1  
  - VGA: std  
  - VM Gen ID: 4ece6cf7-a0a0-4a2c-bafd-395b13955d73  

Настройки PostgreSQL:  
- Основные параметры подключения:  
  - listen_addresses = '*'  
  - port = 5432  
  - max_connections = 100  
- Параметры памяти:  
  - shared_buffers = 64GB  
  - work_mem = 512MB  
  - maintenance_work_mem = 4GB  
  - effective_cache_size = 192GB  
- Параметры параллелизма:  
  - max_worker_processes = 18  
  - max_parallel_workers = 18  
  - max_parallel_workers_per_gather = 4  
  - max_parallel_maintenance_workers = 4  
  - effective_io_concurrency = 200  
- Настройки журнала WAL:  
  - wal_buffers = 64MB  
  - commit_delay = 1000  
  - checkpoint_timeout = 5min  
  - checkpoint_completion_target = 0.9  

Пожалуйста, дайте знать, если есть какие-либо уточнения или дополнительные аспекты, которые требуется рассмотреть.
  • 14 апреля 2025 г. 7:55
Ответы на вопрос 2
Спасибо за предоставленную информацию о конфигурации системы и настройках PostgreSQL. Рассмотрим возможные пути для улучшения производительности вашей системы 1С на базе PostgreSQL.

### 1. Оптимизация конфигурации PostgreSQL

#### Параметры памяти
- **shared_buffers**: Увеличьте до 128GB или даже 256GB, если позволяет память. Размер памяти, выделяемой под `shared_buffers`, должен составлять около 25% от доступной памяти.
- **work_mem**: Можно увеличить до 1GB, но нужно следить за количеством параллельных запросов, чтобы не превышать объем доступной памяти.
- **maintenance_work_mem**: Может быть увеличен до 8GB или 16GB для более эффективного выполнения операций, связанных с поддержкой базы данных (например, индексация).
- **effective_cache_size**: Увеличьте до 256GB, поскольку это поможет оптимизатору запросов лучше планировать использование кэша.

#### Параметры параллелизма
- Убедитесь, что `max_worker_processes`, `max_parallel_workers` и `max_parallel_workers_per_gather` настроены оптимально с учетом вашего оборудования. Возможно, вы можете протестировать увеличение `max_parallel_workers` до 36, если ваша база данных поддерживает такой параллелизм.

#### Настройки WAL
- **checkpoint_timeout**: Увеличьте временной интервал до 10-15 минут, чтобы уменьшить частоту контрольных точек и нагрузку на записи.
- **commit_delay**: Установите значение в 0, если это приемлемо для вашей системы, чтобы уменьшить задержки.

### 2. Настройка виртуальной машины
- **Количество ядер**: Убедитесь, что ваше приложение 1С использует доступные ядра эффективно. Возможно, стоит настроитьNUMA в зависимости от конфигурации и количества ядер.
- **CPU Units**: В зависимости от загруженности, можно разделить CPU Units на основе приоритета виртуальной машины.
- **disk I/O**: Убедитесь, что у вас достаточно ресурсов для работы с дисками. Рассмотрите возможность использования `aio=io_uring` с `cache=writeback`, чтобы улучшить производительность записей.

### 3. Оптимизация запросов и индексации
- Проверьте медленные запросы и рассмотрите возможность их оптимизации или добавления индексов.
- Используйте EXPLAIN для понимания плана выполнения запросов и выявления узких мест.

### 4. Мониторинг
- Настройте инструменты мониторинга, такие как pg_stat_statements, для отслеживания производительности запросов и выявления проблемных мест.
- Регулярно проверяйте системные ресурсы (CPU, память, I/O) и работу PostgreSQL.

### 5. Аппаратные улучшения
- Если есть возможность, установите больше SSD-дисков для увеличения I/O.
- Проверьте состояние RAID и, возможно, настройте его с учетом ваших особенностей нагрузки.

### 6. Сетевые настройки
- Убедитесь, что настройки сети (например, MTU) оптимизированы для вашей среды, чтобы уменьшить задержки передачи данных.

### 7. Обновление системы
- Убедитесь, что вы используете актуальную и поддерживаемую версию PostgreSQL, так как обновления могут включать оптимизации и исправления.

Изучив эти аспекты, вы сможете значительно повысить производительность вашей системы 1С, работающей с PostgreSQL. Если есть специфические проблемы или дополнительные данные о работе системы, можно провести более глубокий анализ.
Попробуйте отключить nested loop соединение 
В некоторых конфигурациях 1с это очень сильно повышает производительность. В некоторых наоборот убивает в 0
Похожие вопросы