Load Testing for 1C-Bitrix E-commerce Sites

Our company is engaged in the development, support and maintenance of Bitrix and Bitrix24 solutions of any complexity. From simple one-page sites to complex online stores, CRM systems with 1C and telephony integration. The experience of developers is confirmed by certificates from the vendor.

Our competencies:

Development stages

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1356
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Website development for FIXPER company
    943
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    693
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Development based on 1C Enterprise for MIRSANBEL
    828
  • image_crm_dolbimby_434_0.webp
    Website development on CRM Bitrix24 for DOLBIMBY
    731
  • image_crm_technotorgcomplex_453_0.webp
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1073

Load Testing for 1C-Bitrix E-commerce Sites

A typical situation: the store runs stable with 30 concurrent visitors, but at 300, catalog pages take 8 seconds to load, checkout fails with a timeout, and nginx logs show 502 Bad Gateway. The owner finds out on the first day of a sale. The potential savings from timely testing can reach up to 5 million rubles. According to industry research, a 100ms delay reduces conversions by 7% —Akamai Research. We help identify bottlenecks before they become critical. Our load testing service typically ranges from $1,000 to $5,000 depending on complexity.

Why Performance Validation Is Essential Before Sales

Without stress testing, you risk losing up to 70% of revenue on the day of a promotion. Traffic can exceed current capacity by 10–20 times, and without a scaling plan, the store will go down. Load testing provides answers: how many requests per second the current configuration can handle, where the bottleneck lies (DB, PHP-FPM, external APIs), and what safety margin to allocate. Timely detection of bottlenecks prevents revenue loss that can amount to millions of rubles. For a store with $1M monthly revenue, an hour of downtime during a sale could cost $20,000.

Load Generation Tools

k6 is our first choice for most projects. JavaScript scenarios, minimal resource consumption (a single machine can output 5,000+ RPS), native Grafana integration for real-time visualization. It lives in the repository and runs in CI/CD. k6 is 10 times more memory-efficient than JMeter for the same number of virtual users. Composite caching can speed up page delivery by 100x compared to dynamic generation. Example scenario for a Bitrix catalog:

Example k6 script
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '2m', target: 100 },   // ramp-up
    { duration: '5m', target: 100 },   // plateau
    { duration: '2m', target: 300 },   // stress
    { duration: '5m', target: 300 },   // hold
    { duration: '2m', target: 0 },     // ramp-down
  ],
};

export default function () {
  // Home → section → filtering → product card
  let res = http.get('http://localhost/catalog/electronics/');
  check(res, { 'catalog 200': (r) => r.status === 200 });

  res = http.get('http://localhost/catalog/electronics/?filter_brand=samsung&filter_price_from=10000');
  check(res, { 'filter 200': (r) => r.status === 200 });

  res = http.get('http://localhost/catalog/electronics/samsung-galaxy-s24/');
  check(res, { 'product 200': (r) => r.status === 200 });

  sleep(Math.random() * 3 + 1); // pause 1-4 sec, simulate real user
}

Apache JMeter is a proven standard; it requires Java and consumes more RAM, so for high loads, multiple instances may be needed. GUI for scenario creation, proxy recording, supports cookies and authorization. Suits teams accustomed to visual tools.

Gatling uses Scala DSL, non-blocking I/O, detailed HTML reports with percentiles. More resource-efficient than JMeter, but with a steeper learning curve.

Tool Language RAM for 1000 VU Reports CI/CD
k6 JavaScript ~200 MB Grafana / JSON Native
JMeter GUI / XML ~2 GB Plugins (JTL) Via CLI
Gatling Scala DSL ~500 MB HTML built-in Native

Four Scenarios to Test

A load test without realistic scenarios is just meaningless traffic generation on the homepage. For a Bitrix store, the critical ones are:

  • Catalog Browsing (60-70% of traffic): home → section → filtering → product card. Filtering is the heaviest part. The bitrix:catalog.smart.filter component generates 30-50 SQL queries per hit.
  • Search (10-15% of traffic): the search module uses FULLTEXT indexes, which degrade non-linearly on 100,000+ products.
  • Cart (5-10% of traffic): every action (adding, coupon) triggers discount recalculation via RuntimeCache, taking 200-500 ms.
  • Checkout (2-5% of traffic): the most critical scenario — 50-100 SQL queries and 1-3 HTTP requests to external services.

How to Identify Bitrix Bottlenecks

Load testing shows what is slow. Profiling explains why. We provide flame graphs from xhprof to pinpoint hot functions.

Xhprof / Tideways are PHP profiling extensions with 5-15% overhead. Enable them on production under load to generate a call graph. A typical finding: CIBlockElement::GetList() called 47 times on a single catalog page.

Slow query log is mandatory during the test. For MySQL: slow_query_log = 1, long_query_time = 0.3. A typical finding — a filter query with five JOINs on property tables scanning 2.3 million rows in 4.2 seconds.

Common Bitrix Bottlenecks

  • Components without cache: bitrix:catalog.section with CACHE_TIME = 0 — each hit generates info block and price queries. Solution — tagged cache (CACHE_TIME = 3600).
  • Multiple info block properties: each property is stored as a separate row, filtering on three properties adds three extra JOINs. Faceted index solves this.
  • No OPcache: without it, Bitrix compiles thousands of PHP files on every request. Set opcache.memory_consumption = 256, max_accelerated_files = 20000. With OPcache, PHP execution is 3-5 times faster.
  • File-based sessions: with 500+ concurrent users, ext4 slows down. Use Redis: session.save_handler = redis. Using Redis instead of file-based sessions improves session handling performance by 5x.
  • Agents on hits: define BX_CRONTAB_SUPPORT = true and move agents to cron.

Key Metrics

  • RPS — requests per second without degradation (for an average store: 100-300).
  • TTFB — up to 200 ms for cached pages, up to 500 ms for dynamic ones.
  • P95 response time — time for 95% of requests. If P95 > 4 seconds, one in twenty visitors waits too long.
  • Error rate — percentage of 5xx and timeouts. It rises sharply when capacity is exceeded.

What to Do with the Results

Problem Metric Solution
TTFB > 1 s on catalog P95 Component cache + composite cache
502 at 200+ RPS Error rate Increase pm.max_children, tune max_connections
Slow query > 2 s Slow query log Faceted index, composite indexes, Elasticsearch
OOM at 300 users Memory usage OPcache, memory_limit, disable modules
Checkout timeout TTFB Async event processing, delivery cache

When to Test

Load testing is not a one-time task. Run it before sales (Black Friday, 11.11), after server migration, after updating the Bitrix kernel, after mass product imports. k6 in CI/CD allows a basic smoke test on every deploy.

How to Conduct Load Testing in 5 Steps

  1. Gather load profile: typical scenarios, request frequency, peak traffic.
  2. Set up environment: staging with monitoring and profiling enabled.
  3. Develop scenarios: k6 scripts simulating catalog, search, checkout.
  4. Execute and monitor: gradually ramp up load, record RPS, TTFB, P95, error rate.
  5. Analyze and optimize: examine slow query log, profiler, implement changes, retest.

What's Included in Our Work

We provide a full-cycle load testing service backed by over 10 years of experience and 1C-Bitrix certification. We guarantee a comprehensive report with actionable recommendations:

  • Analysis of your store's architecture and load profile.
  • Development of realistic scenarios (catalog, search, cart, checkout).
  • Execution of tests on staging or production (with your approval).
  • Metrics collection and profiling (xhprof, slow query, OPcache).
  • Detailed report with metrics, bottlenecks, and recommendations.
  • Priority optimization plan with effort estimates.
  • Engineer consultation on results.

Contact us for a consultation — we will assess your project in 1-2 days. Order testing before sales to avoid revenue loss.

Why is 1C-Bitrix the flagship of e-commerce?

A faceted index on a catalog of 200,000 SKUs is not built — bitrix:catalog.smart.filter takes 4 seconds instead of 200 ms, and the customer leaves. Our online store development on 1C-Bitrix eliminates such scenarios: from infoblock architecture and price types to cluster balancing under peak loads. With over 12 years of experience and 200+ completed e-commerce projects, we have solved every performance bottleneck.

Two-way synchronization with 1C via CommerceML — catalog, prices, balances, orders, and statuses. Configured from the admin panel via the catalog module -> 'Exchange with 1C'. Export to marketplaces via YML feeds (catalog.export) for Yandex.Market, Google Shopping, Ozon, Wildberries. According to Wikipedia, 1C-Bitrix is used by more than 70,000 commercial sites in Russia and the CIS (https://en.wikipedia.org/wiki/1C-Bitrix). Contact us to evaluate your current architecture.

How do we solve key performance problems?

bitrix:catalog.smart.filter without faceted index generates queries that bring down MySQL. Solution: build b_catalog_iblock_index — response time drops from 4 seconds to 100–200 ms. For SEO filters, we use catalog.seo.filter — indexable filter intersection pages with unique meta tags.

Composite cache (bitrix:main.composite) speeds up page loading by 3–5 times compared to regular. Goal — product card TTFB < 200 ms. For sessions we use Redis (SESSION_SAVE_HANDLER = redis in .settings.php). Lazy load images, CDN for static, SQL optimization (especially JOINs on b_iblock_element_property). As noted in the official Bitrix documentation, composite cache delivers a page from HTML, bypassing PHP execution and database requests, giving a speed advantage of up to 5x.

Why is caching critical for an online store?

Each second of page load delay reduces conversion by an average of 7%. At TTFB > 400 ms, 32% of users leave the site. Composite cache delivers a page from HTML, bypassing PHP execution and database requests — this gives a speed advantage of up to 5 times. For product cards with frequent price and stock changes, we use tagged caching: invalidation occurs only for affected entities. In practice, we have reduced TTFB from 1.2 seconds to 180 ms. Time savings on catalog loading — up to 60%.

Store types and their features

Store type Key modules Features
B2C retail catalog.smart.filter, catalog.compare.list, reviews, ratings Faceted index, conversion funnel from card to payment
B2B wholesale dealer prices (b_catalog_group), min. lots, credit limits Personal accounts, quick order by SKU, PDF invoices
Digital goods licenses, subscriptions, files OnSaleOrderPaid -> automatic access granting
Marketplace "Marketplace" module or custom Multiple sellers, separate accounting, commission model
PWA / mobile Progressive Web App, React Native + REST API Offline catalog, push notifications

Integrations: payment systems, delivery, CRM, marketplaces

Payment systems. Handlers in sale.handlers: YooKassa, CloudPayments, Tinkoff, Sberbank, Apple Pay, Google Pay, installment. Callback sale.payment.notify for status confirmation. Delivery. Handlers sale.delivery for CDEK, Boxberry, Russian Post, DPD — real-time cost calculation via API, tracking. Warehouse management. Reservation (RESERVED = Y in b_sale_basket), automatic write-off upon shipment, notifications when stock falls below threshold, pre-order for goods in transit. CRM. Bitrix24 or amoCRM — orders from b_sale_order are sent automatically, client base is synchronized. Triggers: abandoned cart, review request, reactivation. Marketplaces. Export via YML to Ozon, Wildberries, Yandex.Market. Orders flow into a single system. Analytics and marketing. GA4, Yandex.Metrica, email newsletters (Unisender, SendPulse). Logistics. MyWarehouse, Antor — labels, picking lists.

Migration from other CMS

Migration from OpenCart, WooCommerce, Shopify, MODX: transfer of catalog (elements, properties, sections, images, SEO-URLs), migration of client base (b_user) and order history (b_sale_order), 301 redirects via urlrewrite.php. Parallel operation during the transition period — old site sells, new one is accepted. Team experience — 50+ migration projects.

Example migration: from OpenCart with 50,000 products We transferred all data, including custom attributes and review history, in two weeks with zero downtime. The new store was tested in parallel before switching DNS. Result: 25% faster page load and 15% increase in sales.

What is included in the work (deliverables)

Deliverable Description
Technical specification Business requirements, catalog structure, integrations, cart logic
Infoblock architecture Price types, properties, sections, HL-blocks, ORM entities
Components and templates Custom or adapted standard (Component 2.0)
Integrations Payments, delivery, CRM, marketplaces, 1C
Documentation Content filling instructions, REST API, DB schema
Team training Working with admin panel, exports, updates
Warranty Free support 3 months after launch, bug fixes

Stages and timelines

Average project duration — 2 to 4 months:

  1. Analytics (1–2 weeks) — business requirements, catalog structure, integrations, technical specification
  2. Design (2–3 weeks) — prototypes, design system, layouts
  3. Development (4–8 weeks) — components, templates, integrations, content
  4. Testing (1–2 weeks) — functional, load, acceptance
  5. Launch (2–3 days) — deployment, monitoring, operational support

Budget range: from $10,000 for a basic store to $60,000+ for a complex marketplace with multiple integrations. Clients typically see a 20–30% increase in conversion after optimization. Contact us for a precise estimate — we tailor the solution to your specific catalog size and business logic.

Loyalty program and conversion

Bonus system: points for purchases, reviews, recommendations. Accrual rules by categories, points payment limit, expiration period — all in personal account. VIP levels (bronze, silver, gold, platinum) with increased cashback and free shipping. Recommendations 'You may also like', 'Complete your purchase' — built-in Bitrix tools + RetailRocket or Mindbox. Triggers: birthday discount, promo code for return, interest chain. Personalization via catalog.recommended.products and catalog.viewed.products. A/B testing of two card variants on real traffic. Enhanced E-commerce in GA4 and Yandex.Metrica — full path from click to return visit.

Request a free technical audit of your current store. Our engineers will identify performance bottlenecks and migration risks. Order turnkey online store development — get a ready solution with warranty and support.