Optimizing Server Performance
- Optimizing Server Performance
This article details best practices for optimizing your MediaWiki 1.40 server for improved performance. It assumes you have a functioning MediaWiki installation. We will cover database optimization, PHP configuration, caching strategies, and server-level adjustments. This is geared towards newcomers, but will include details useful for experienced sysadmins.
1. Database Optimization
The database is often the biggest bottleneck in a MediaWiki installation. Proper configuration and maintenance are crucial. We will focus on MySQL/MariaDB, the most common database backend.
1.1. Configuration Variables
Several MySQL/MariaDB configuration variables significantly impact MediaWiki performance. Adjusting these requires root or administrative access to your database server.
Variable | Description | Recommended Value (Example) |
---|---|---|
`innodb_buffer_pool_size` | The size of the buffer pool used by InnoDB to cache data and indexes. | 50-80% of available RAM (e.g., 4G) |
`query_cache_size` | The size of the query cache. (Deprecated in MySQL 8.0, consider Performance Schema) | 64M - 256M (if using MySQL < 8.0) |
`max_connections` | The maximum number of simultaneous connections to the database. | 150-300 (adjust based on server load) |
`innodb_log_file_size` | The size of each InnoDB log file. Larger files can improve write performance but increase recovery time. | 256M - 1G |
These values are *examples* and should be tuned based on your server's resources and workload. Consult the MySQL/MariaDB documentation for detailed explanations. See also Manual:Configuration settings for MediaWiki-specific database settings.
1.2. Indexing
Ensure appropriate indexes are in place. MediaWiki’s maintenance scripts (see Manual:Maintenance scripts) can help identify missing indexes. Regularly run `update.php` to rebuild indexes after significant content changes. Pay particular attention to indexes on frequently queried tables like `page`, `revision`, and `category`. Avoid over-indexing, as it can slow down write operations.
1.3. Database Maintenance
Regularly optimize and analyze your database tables. Use the following SQL commands (executed as a user with sufficient privileges):
```sql OPTIMIZE TABLE page, revision, category, watchlist; ANALYZE TABLE page, revision, category, watchlist; ```
These commands should be run during off-peak hours. See Manual:Database lag for more information on database performance issues.
2. PHP Configuration
PHP is the engine that drives MediaWiki. Optimizing its configuration can yield significant performance gains.
2.1. `php.ini` Settings
Adjust the following settings in your `php.ini` file:
Setting | Description | Recommended Value |
---|---|---|
`memory_limit` | The maximum amount of memory a script can consume. | 256M - 512M (or higher, depending on complexity) |
`max_execution_time` | The maximum time a script can run. | 60-120 seconds |
`opcache.enable` | Enables the PHP opcode cache. | 1 (enabled) |
`opcache.memory_consumption` | The amount of memory allocated to the opcode cache. | 128M - 256M |
Restart your web server after making changes to `php.ini`. Refer to Manual:PHP for a complete list of recommended PHP settings.
2.2. Opcode Caching
Using an opcode cache (like OPcache, which is built-in since PHP 5.5) is *essential*. It significantly reduces CPU load by caching compiled PHP code. Ensure it is enabled and properly configured. See Manual:Opcode cache for detailed instructions.
3. Caching Strategies
Caching reduces the load on the database and PHP by serving frequently accessed content from memory.
3.1. Memcached/Redis
Implement a caching system like Memcached or Redis. MediaWiki supports both. These systems store frequently accessed data in memory, reducing database queries. Configuration is done through the `$wgMemCachedServers` variable in `LocalSettings.php`. See Manual:Memcached and Manual:Redis for detailed setup instructions. Redis generally offers better performance than Memcached.
3.2. Parser Cache
MediaWiki’s parser cache stores the output of parsed wikitext. Ensure it is enabled and has sufficient space. Adjust the `$wgParserCacheType` variable in `LocalSettings.php`.
3.3. Output Cache
The output cache stores the fully rendered HTML output of pages. This cache can significantly improve performance for anonymous users. Configure it through the `$wgMainCacheType` variable in `LocalSettings.php`.
4. Server-Level Adjustments
Optimizing your web server (Apache, Nginx, etc.) is also important.
4.1. Web Server Configuration
- **Keep-Alive:** Enable Keep-Alive to reduce connection overhead.
- **Compression:** Enable Gzip compression to reduce the size of transferred data.
- **Static File Caching:** Configure your web server to cache static files (images, CSS, JavaScript) aggressively.
- **HTTP/2:** Use HTTP/2 for improved performance, if your server and clients support it.
4.2. Operating System Tuning
- **File System Cache:** Ensure your operating system has sufficient memory allocated to the file system cache.
- **Network Configuration:** Optimize network settings for low latency and high bandwidth.
- **Resource Limits:** Adjust resource limits (e.g., open files) to accommodate the MediaWiki workload. See Manual:Server requirements for a comprehensive list of requirements.
5. Monitoring and Analysis
Regularly monitor your server's performance using tools like `top`, `vmstat`, and database monitoring tools. Analyze logs for errors and performance bottlenecks. Consider using a dedicated monitoring solution like Prometheus or Grafana. Manual:Performance monitoring provides guidance on tracking key metrics.
Manual:Configuration settings
Manual:PHP
Manual:Memcached
Manual:Redis
Manual:Opcode cache
Manual:Maintenance scripts
Manual:Database lag
Manual:Server requirements
Manual:Performance monitoring
Help:Contents
Special:MyPreferences
Special:Search
Help:Wiki markup
Manual:Upgrading
Manual:Short URL extension
Special:Statistics
Special:AllPages
Special:ListUsers
Manual:Extension installation
Manual:Admin guide
Intel-Based Server Configurations
Configuration | Specifications | Benchmark |
---|---|---|
Core i7-6700K/7700 Server | 64 GB DDR4, NVMe SSD 2 x 512 GB | CPU Benchmark: 8046 |
Core i7-8700 Server | 64 GB DDR4, NVMe SSD 2x1 TB | CPU Benchmark: 13124 |
Core i9-9900K Server | 128 GB DDR4, NVMe SSD 2 x 1 TB | CPU Benchmark: 49969 |
Core i9-13900 Server (64GB) | 64 GB RAM, 2x2 TB NVMe SSD | |
Core i9-13900 Server (128GB) | 128 GB RAM, 2x2 TB NVMe SSD | |
Core i5-13500 Server (64GB) | 64 GB RAM, 2x500 GB NVMe SSD | |
Core i5-13500 Server (128GB) | 128 GB RAM, 2x500 GB NVMe SSD | |
Core i5-13500 Workstation | 64 GB DDR5 RAM, 2 NVMe SSD, NVIDIA RTX 4000 |
AMD-Based Server Configurations
Configuration | Specifications | Benchmark |
---|---|---|
Ryzen 5 3600 Server | 64 GB RAM, 2x480 GB NVMe | CPU Benchmark: 17849 |
Ryzen 7 7700 Server | 64 GB DDR5 RAM, 2x1 TB NVMe | CPU Benchmark: 35224 |
Ryzen 9 5950X Server | 128 GB RAM, 2x4 TB NVMe | CPU Benchmark: 46045 |
Ryzen 9 7950X Server | 128 GB DDR5 ECC, 2x2 TB NVMe | CPU Benchmark: 63561 |
EPYC 7502P Server (128GB/1TB) | 128 GB RAM, 1 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (128GB/2TB) | 128 GB RAM, 2 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (128GB/4TB) | 128 GB RAM, 2x2 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (256GB/1TB) | 256 GB RAM, 1 TB NVMe | CPU Benchmark: 48021 |
EPYC 7502P Server (256GB/4TB) | 256 GB RAM, 2x2 TB NVMe | CPU Benchmark: 48021 |
EPYC 9454P Server | 256 GB RAM, 2x2 TB NVMe |
Order Your Dedicated Server
Configure and order your ideal server configuration
Need Assistance?
- Telegram: @powervps Servers at a discounted price
⚠️ *Note: All benchmark scores are approximate and may vary based on configuration. Server availability subject to stock.* ⚠️