Preparing for Horizontal Scaling
"We need scaling" — a request that usually means one of three things: the site slows down under peak loads, a multiple increase in traffic is planned, or high availability is required. These are different tasks with different solutions. Horizontal scaling of Bitrix is not just adding another server; it's a re-architecture with separation of component responsibilities. Over 10+ years, we have implemented more than 30 scaling projects — from small online stores to corporate portals with millions of visits. We specialize in 1C-Bitrix scalability and Bitrix24 setup for enterprise clients.
Without proper preparation, horizontal scaling brings more problems than benefits: sessions drift apart, cache is not synchronized, 1C import files block the database. Let's break down how to avoid this.
Database is often not the first bottleneck
Clients often believe the bottleneck is the database. In 60% of cases, the real problem is PHP code or caching. We profile: if MySQL CPU usage is below 30% while PHP-FPM hits 90%, we need to grow web nodes, not the database. Only after fixing "soft" issues do we move to infrastructure.
Code changes for stateless architecture
The main issues to fix before adding nodes:
- Bitrix file cache: migrate to Memcached or Redis.
- Local temporary files: find via
grep -r "file_put_contents\|fopen\|tempnam" /var/www/bitrix/local/. - Sessions: store in Memcached/Redis.
Why local file writes break horizontal scaling
Every local file write from custom modules is a potential problem in a cluster because it creates inconsistent state across nodes. We help rewrite custom code to use shared storage or external services.
Scaling Strategies
Decomposition: What scales separately
| Component | Scaling Method | Complexity |
|---|---|---|
| PHP application | Horizontal (multiple nodes) | Medium |
| MySQL | Vertical + read replicas | Medium |
| Elasticsearch | Horizontal (shards/nodes) | High |
| Memcached/Redis | Horizontal (pool) | Low |
| File storage | NFS / S3-compatible | Medium |
| Static content (CDN) | CDN offload | Low |
Start with the component that is the actual bottleneck — not the one that "seems right". For example, if a CDN can offload 60% of traffic, that's the quickest win.
Vertical vs. Horizontal: What to choose?
Vertical (more CPU/RAM) — fast, no code changes required, but has a ceiling and cost. Up to 32 GB RAM on the DB server, vertical scaling is often more cost-effective than horizontal. However, at equal peak load, vertical can be 30% more expensive due to premium cloud provider pricing. For instance, a 16 vCPU vertical solution may cost $500/month, while 3 horizontal nodes might run $600/month but provide redundancy. Horizontal scaling can be up to 3x more cost-effective than vertical when running 5+ web nodes.
Horizontal — more complex (requires stateless architecture, shared storage, cache coordination), but has no upper limit and provides fault tolerance. Experience shows horizontal scaling pays off starting at 3+ web nodes. Since implementing horizontal scaling, a client's monthly hosting costs decreased by 25% while handling 3x more traffic.
Cost comparison at a glance
| Criteria | Vertical | Horizontal |
|---|---|---|
| Implementation complexity | Low | High |
| Growth limit | Limited (max 64 vCPU) | Unlimited |
| Fault tolerance | No (single point) | Yes |
| Code changes required | No | Yes (stateless) |
| Typical cost at peak load | ~30% more | Cheaper with 3+ nodes |
| Example monthly cost (16 vCPU equivalent) | $500 | $600 (3 nodes) |
Specific Scaling Scenarios
Scaling via CDN
The fastest way to offload the application is to serve static files and images via a CDN. For Bitrix, configure through the cdn module or via nginx:
# Static files with long TTL — cached by CDN
location ~* ^/upload/.*\.(jpg|webp|png|css|js)$ {
add_header Cache-Control "public, max-age=2592000";
add_header Vary Accept-Encoding;
# CDN picks up from Cache-Control
}
Set the CDN provider's origin to your server. The CDN caches static files on its edge nodes worldwide. Result: requests for images and CSS/JS never reach your server — the CDN serves them from the node closest to the user.
Learn more about CDN principles on Wikipedia.
Scaling 1C Import
Importing large catalogs (100,000+ SKUs) is resource-intensive and should not run on production nodes. Set up a dedicated worker node:
[1C] ---> [Import Worker Node] ---> [DB Master] ---> [Web Nodes] (read-only during import)
On the worker: PHP memory_limit = 1G, max_execution_time = 600, a separate PHP-FPM pool with 2–3 workers. Web nodes switch to read from a replica during import.
Auto-Scaling in the Cloud
For projects on Yandex Cloud, VK Cloud, or AWS, auto-scaling of web nodes is possible:
Instance Group / Auto Scaling Group:
- min_instances: 2
- max_instances: 10
- scale_up: CPU > 70% for 3 minutes
- scale_down: CPU < 30% for 10 minutes
- cooldown: 300s
Load balancing via Application Load Balancer. Requirements: a pre-built Bitrix server image, configuration pulled from storage on instance start, the load balancer automatically registers new nodes.
Auto-scaling prerequisites
- Pre-built Bitrix server image with all dependencies
- Configuration managed externally (e.g., in S3 or Config Server)
- Stateless application code
- Shared session/cache storage (Memcached/Redis)
- Monitoring for scale triggers
Our Scaling Process
What stages does 1C-Bitrix scaling setup include?
- Performance audit — profiling PHP, MySQL, cache, identifying bottlenecks.
- Defining scaling strategy: vertical, horizontal, or hybrid.
- Configuring Memcached/Redis cache and sessions.
- Deploying cluster infrastructure — nginx, PHP-FPM, load balancer.
- Connecting CDN for static content and images.
- Setting up monitoring (Zabbix/Prometheus) and auto-scaling.
After scaling, our client's site handles 10,000 requests per minute without downtime.
What's Included in the Scaling Work
Each project includes:
- Audit of current architecture and bottleneck profiling
- Design of a scaling scheme (vertical/horizontal/hybrid)
- Cache setup (Memcached/Redis) and sessions
- Web server configuration (nginx, PHP-FPM)
- Load balancer and node group deployment
- CDN integration
- Monitoring setup (Zabbix/Prometheus)
- Load balancing and high availability
- Documentation and training for your engineers
- 30-day warranty support after delivery
A typical scaling project for a mid-size online store costs between $3,000 and $8,000, depending on complexity.
How long does it take?
Realistic timelines for planning:
- CDN offload of static content: 1–2 days, offloads 40–60% of server load
- Move cache to Memcached + 2 web nodes: 3–5 days, horizontal PHP scaling
- Full cluster (3 web + DB master/replica + shared storage): 8–15 days
- Cloud auto-scaling: 10–20 days (including DevOps infrastructure)
For 1C-Bitrix scalability, horizontal scaling with load balancing and CDN offload ensures optimal performance under high traffic. Order a scaling audit — our engineers are certified for 1C-Bitrix, use proven patterns, and provide written guarantees on all work.
Common Questions
When is scaling needed for 1C-Bitrix?
Scaling is required when the site slows down under peak loads, traffic is expected to grow several times, or high availability is needed. We start with a performance audit to identify the bottleneck.
How long does cluster setup take?
Timelines depend on complexity: CDN offload — 1-2 days, moving cache to Memcached plus two web nodes — 3-5 days, a full cluster with replicas — 8-15 days.
What are the code requirements for horizontal scaling?
The code must be stateless: no local file cache or temporary files. All sessions and cache must be stored in Memcached or Redis. We help adapt custom modules.
What is included in a scaling project?
Includes performance audit, architectural blueprint, cache setup, nginx and web server configuration, cluster infrastructure deployment, CDN integration, monitoring setup, documentation, and team training. After delivery, a 30-day warranty support.
How is the budget for scaling calculated?
Cost depends on the scope. We conduct an audit and provide an accurate estimate. Contact us for a free consultation.
Get a consultation for your project — we will help you choose the optimal solution.







