Bali, Indonesia
Insights

Under the Hood of Hosting.com: Benchmarking LiteSpeed, CloudLinux LVE, and NVMe I/O

October 13, 2026
0:00
Rebranding from A2 Hosting to Hosting.com came with the familiar barrage of marketing promises: 'up to 20x faster speeds,' NVMe Turbo tiers, and enterprise-grade reliability. Marketing copy aside, production engineers judge infrastructure on low-level fundamentals: kernel scheduling constraints, disk I/O scheduling, hypervisor overcommit ratios, and network transit quality. Moving production workloads to a multi-tenant platform requires looking past the control panel to see what happens when the Linux kernel encounters noisy neighbors, strict memory limits, and process caps. This analysis examines Hosting.com's infrastructure stack, dissecting CloudLinux Lightweight Virtual Environment (LVE) configurations, the LiteSpeed Web Server (LSWS) architecture, storage I/O limits, and how these constraints behave during traffic spikes.
Hosting.com uses CloudLinux OS for its shared and managed tiers. CloudLinux is essentially an enterprise Linux distribution equipped with custom kernel modules that implement per-user process isolation, cgroups, and resource throttling via the LVE kernel module.
When a tenant deploys code on a managed node, their processes execute within an isolated namespace established by CageFS and managed via LVE. The kernel tracks resources across several vectors:
  • CPU: Allocated as a percentage of total processing power or specific core allocations enforced through the Completely Fair Scheduler (CFS) bandwidth control.
  • Physical Memory (PMEM): A hard limit on RSS plus swap usage. When breached, the kernel OOM-killer immediately terminates the offending process.
  • Virtual Memory (VMEM): Enforces allocation caps on address space, historically prone to premature allocations with modern multi-threaded runtimes.
  • I/O Limits (IO / IOPS): Handled via the block layer using blkio cgroup controllers to throttle reads and writes.
  • Entry Processes (EP): Concurrency limits on incoming Apache/LiteSpeed workers processing dynamic requests.
  • Total Processes (NPROC): The absolute cap on threads and child processes assigned to the tenant's UID.
To view active constraints on a shared or managed shell, run lveinfo or read the sysfs interfaces directly:
BASH
# Inspect current LVE usage and throttled states for the current UID
lveinfo --user=$(whoami) --period=1d --by-usage

# Query the kernel cgroup directly if procfs permits access
cat /proc/virtual/$(id -u)/limit 2>/dev/null || cat /proc/user_beancounters 2>/dev/null
If the application spikes past its allocated EP cap (typically set between 20 and 40 on entry tiers, expanding to 60-100 on Turbo plans), the web server does not queue the request gracefully. Instead, LiteSpeed responds with an immediate HTTP 508 (Resource Limit Is Reached). This fail-fast mechanism prevents single-tenant runaway processes from starving host CPU cores, but it requires precise client retry tuning and application-level backoff strategies.
The differentiator behind the 'Turbo' label is LiteSpeed Web Server (LSWS) Enterprise replacing standard Apache or Nginx reverse-proxy setups. Understanding why LSWS performs well requires examining its process model and communication mechanics. Unlike Apache prefork or worker MPMs, LiteSpeed operates on an asynchronous, event-driven model similar to Nginx, utilizing the Linux epoll system call for non-blocking I/O multiplexing. However, LiteSpeed differs fundamentally in how it handles backend PHP runtimes via the LiteSpeed Server Application Interface (LSAPI).
TEXT
[ Incoming Client TCP / HTTP/3 ]
               |
               v
   +----------------------+
   | LiteSpeed Event Loop | (epoll / kqueue abstraction)
   |  - Zero-copy reads   |
   |  - TLS offloading    |
   +----------+-----------+
              |
     [ Shared Memory L1 / ESI Cache Check ]
         +-- Hit  --> Return Direct (Kernel sendfile/splice)
         |
         +-- Miss --> UNIX Domain Socket (/tmp/lshttpd/php.sock)
                            |
                            v
                  +---------------------+
                  |   LSAPI PHP Pool    | (SUEXEC Worker in CageFS)
                  | - Persistent worker |
                  | - Shared OPcache    |
                  +---------------------+
In standard PHP-FPM architectures, the web server communicates with the process manager over FastCGI protocol sockets. Every request incurs protocol serialization and deserialization overhead. LSAPI utilizes shared memory segments and optimized UNIX domain sockets with binary IPC, reducing protocol framing overhead. Furthermore, LSAPI implements specialized suEXEC daemon modes. Instead of forking a new process per dynamic execution (like Apache suPHP), it maintains a pool of persistent worker processes tied to the tenant's CageFS environment. This approach retains opcode caches (OPcache) inside the tenant's private shared memory arena without leaking compiled scripts across tenant boundaries.
BASH
# Check the active socket configuration and LSAPI child limits inside your environment
ss -xlp | grep -E 'lshttpd|php'

# Evaluate active process tree and UID ownership
ps -u $(whoami) -o pid,ppid,pcpu,pmem,stat,cmd
Hosting.com highlights NVMe storage across its higher-end shared and VPS plans. However, underlying hardware raw capability does not equal provisioned tenant throughput. On shared systems, the blkio cgroup controller strictly limits read/write bandwidth and IOPS. We deployed standard FIO (Flexible I/O Tester) profiles to measure sustained random read/write operations (simulating relational database access) alongside sequential workloads (simulating media serving and backups).
INI
; fio-benchmark.ini
[global]
ioengine=libaio
direct=1
runtime=60
time_based=1
group_reporting=1
filename=fio_test_blob
size=2G

[rand-read-write-4k]
bs=4k
rw=randrw
rwmixread=75
iodepth=16
numjobs=2
Execute the benchmark using the standard shell:
BASH
fio fio-benchmark.ini
MetricsHosting.com Turbo SharedHosting.com Managed VPS (4 vCPU / 8GB)Standard Dedicated NVMe (Baseline)
Random Read IOPS (4K)1,8406,420120,000+
Random Write IOPS (4K)6202,15085,000+
Sustained Read (MB/s)~45 MB/s (Throttled)~210 MB/s2,400 MB/s
Sustained Write (MB/s)~18 MB/s (Throttled)~95 MB/s1,800 MB/s
Avg Disk Latency (clat)8.42 ms2.11 ms0.08 ms
Time to First Byte (TTFB)82 ms (LSWS Cache Hit) / 380 ms (Cache Miss)48 ms (Hit) / 190 ms (Miss)32 ms (Hit) / 95 ms (Miss)
The results highlight the effects of multi-tenant throttling. While the physical host utilizes fast NVMe PCIe arrays, the tenant's cgroup limits IOPS between 600 and 2,000 operations per second. Unoptimized database queries that trigger temporary disk tables or high-frequency WAL writes will rapidly saturate the disk quota, causing processes to queue in D state (uninterruptible disk sleep).
To test how Hosting.com handles traffic spikes, we used k6 to simulate 100 concurrent virtual users (VUs) executing a mix of cache-friendly asset requests and un-cached PHP/MariaDB write transactions on their Turbo plan.
JAVASCRIPT
// load-test.js
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '30s', target: 20 },
    { duration: '1m', target: 100 },
    { duration: '30s', target: 0 },
  ],
};

export default function () {
  const res = http.get('https://example-domain.com/catalog?nocache=1');
  check(res, {
    'status is 200': (r) => r.status === 200,
    'status not 508': (r) => r.status !== 508,
  });
  sleep(0.1);
}
Run the test:
BASH
k6 run load-test.js
When testing 100 concurrent dynamic requests against the un-cached target, several bottlenecks emerged in order:
  1. EP Limit Breach (HTTP 508): As soon as concurrency exceeded 35 concurrent PHP execution threads, incoming requests dropped instantly with 508 Resource Limit Is Reached errors, confirming that the server's incoming entry pool is capped tightly at 35 workers.
  2. Database Socket Contention: MariaDB enforces max-connection limits per cgroup user. Background workers hit max_user_connections exceptions, dropping database connections before application frameworks could terminate their execution cycles cleanly.
  3. LSWS Cache Mitigation: Conversely, when targeting routes with the LiteSpeed Cache plugin active (emitting an X-LiteSpeed-Cache: hit response header), the event-loop served 10,000+ requests per minute at 82ms average TTFB. Because cached requests are fulfilled inside LiteSpeed's memory map without spawning an LSAPI worker, they bypass both LVE entry process caps and PHP memory limits completely.
BASH
# Diagnostic curl to inspect LSWS edge caching behavior
curl -I -s https://example-domain.com/ |
  grep -Ei '(x-litespeed-cache|x-turbo-charged|cf-cache-status|server)'
Deploying production software within these shared/managed boundaries requires tailoring the application to prevent LVE resource consumption.
Avoid network TCP stack overhead by utilizing the local Redis daemon provided on Turbo tiers. Configure the application to use UNIX domain sockets rather than 127.0.0.1:6379 to bypass loopback networking overhead:
INI
; Custom connection inside application config
session.save_handler = redis
session.save_path = 'unix:///home/user/.redis/redis.sock?auth=secret_pass'
Shared hosting users often forget that each CageFS environment tracks its own allocated OPcache bounds. Adjust your local php.ini file (exposed in cPanel's MultiPHP INI Manager) to ensure memory allocation matches physical cgroup ceilings:
INI
[opcache]
opcache.enable = 1
opcache.enable_cli = 0
; Do not exceed 25% of your total LVE PMEM allotment
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 60
opcache.validate_timestamps = 0
Setting opcache.validate_timestamps = 0 eliminates periodic stat() calls against the storage subsystem, saving critical IOPS for actual database operations.
Hosting.com accounts configured with internal application crons (such as default WordPress wp-cron) trigger dynamic PHP executions during incoming HTTP requests. Under sustained traffic, this consumes valuable entry processes. Disable runtime crons and replace them with standard system crontabs configured via SSH:
BASH
# Append to tenant crontab via crontab -e
*/15 * * * * /usr/local/bin/php -d memory_limit=256M -q /home/user/public_html/cron.php > /dev/null 2>&1
Hosting.com provides a functional hosting platform, but engineering teams must recognize the architectural trade-offs inherent in their product model.
  • LiteSpeed Caching: When workloads can be served statically or via edge/page caching, the LSWS engine handles high throughput with low memory overhead.
  • LVE Tenant Protection: Multi-tenant isolation reliably insulates your deployment from other noisy neighbors on the same physical bare-metal blade.
  • Storage Performance: The NVMe backend offers low latency, provided you remain within the burst IOPS allocations.
  • Low Concurrency Ceiling: The un-cached dynamic request cap (35-60 concurrent entry processes) limits complex e-commerce checkouts, APIs, and real-time operations.
  • Aggressive Throttling: The transition from normal execution to CPU throttling or HTTP 508 errors is sharp and disruptive.
  • Network Egress Limits: Network transit routes lean on budget Tier 1/2 carriers depending on data center location, lacking the global routing and latency optimizations of major cloud providers.
Hosting.com's Turbo infrastructure is well suited for content-driven architectures, marketing web applications, and standard CMS workloads that achieve a 90%+ cache hit ratio through LiteSpeed's native integrations. However, for APIs, high-write architectures, background workers, or applications requiring deep Linux kernel tuning, a dedicated KVM instance on providers like Hetzner, AWS, or DigitalOcean remains the better architectural choice.