# Bitrix Performance

> Covers Bitrix performance — composite site, query optimization, replication/clustering, sharding, hot/cold sessions. Applied for high-load optimization beyond basic caching. Key terms — composite, NGINX, replication, sharding, query optimization.

- Skill: `bxmaximum/bitrix-performance` (Agent Skill)
- Install (CLI): `npx skillmds@latest add bxmaximum/bitrix-performance`
- Raw SKILL.md: https://api.skillmd.com/api/skills/bxmaximum/bitrix-performance/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: bxmaximum (https://skillmd.com/u/bxmaximum)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/bxmaximum/bitrix-performance

---


# Performance Optimization

Baseline: **main 23.0+**. Complements skills `bitrix-caching`, `bitrix-sessions`, and `bitrix-database`.

## Composite Site

Technology caching static HTML while loading dynamic blocks via AJAX. Kernel entry points: `\Bitrix\Main\Composite\Engine`, `\Bitrix\Main\Composite\Responder`.

1. Mark dynamic zones: `<div data-dynamic="true">...</div>` or frame mode APIs.
2. Enable in Admin → Settings → Composite Site (Autocomposite or Composite mode).
3. Configure NGINX to serve composite cache pool directly.
4. Clear component cache before enabling.

Modes:
- **Autocomposite** — kernel auto-detects static/dynamic.
- **Composite** — manual zone configuration.

NGINX: point `try_files` to the composite cache pool directory (BitrixVM: *Configure nginx to use composite cache*).

Do not put personalized data in static zone (cart, user name, permissions).

## Query Optimization

- Limit ORM `select` fields.
- Use indexes matching `filter`/`order` columns.
- Avoid N+1 — `fetchCollection()` with relations.
- Batch operations instead of per-row updates.
- Enable ORM query cache where appropriate.
- Use `SqlTracker` in dev to find slow queries (skill `bitrix-database`).

## Replication and Clustering

- MySQL master-slave for read scaling.
- Extra connections via `.settings.php` `connections` and `\Bitrix\Main\Data\ConnectionPool` (`Application::getConnectionPool()` / `Application::getConnection('name')`).
- Read-only analytics queries → separate connection.

## Sharding

Horizontal partitioning for very large tables (enterprise scenarios). Kernel support varies by edition.

## Hot/Cold Sessions

Related to separated session mode (`bitrix-sessions`):

- Hot data (kernel `$_SESSION['BX']`) → encrypted cookies.
- Cold data → Redis/DB backend.
- Reduces storage round-trips on every hit.

## Checklist

- [ ] Composite tested with all dynamic blocks (cart, auth, personal).
- [ ] NGINX composite cache configured in production.
- [ ] Slow queries identified and indexed.
- [ ] Session backend matches load (Redis for high-traffic).
- [ ] File cache replaced with Redis/Memcached in production.

