Memory Configuration Guide
- Memory Configuration Guide
This guide details best practices for configuring memory for a MediaWiki 1.40 installation. Proper memory configuration is critical for performance, especially as your wiki grows in size and traffic. This article assumes you have a basic understanding of server administration.
Understanding Memory Usage
MediaWiki's memory usage is dynamic and depends on several factors:
- Number of Users: More concurrent users require more memory.
- Wiki Size: A larger wiki with more pages and history consumes more memory.
- Extensions: Installed extensions significantly impact memory usage.
- Caching: Effective caching can reduce memory pressure.
- Traffic: Higher traffic volumes necessitate more memory.
Without sufficient memory, MediaWiki will slow down, potentially leading to errors like "Out of Memory" errors. Regular monitoring of server memory is essential using tools like `top`, `htop`, or your server provider's monitoring dashboard. You’ll want to monitor both total memory usage and swap usage. Excessive swap usage indicates a memory bottleneck.
Minimum and Recommended Memory Requirements
The following table outlines minimum and recommended memory requirements for various wiki sizes. These are *estimates* and may vary based on your specific configuration.
Wiki Size | Minimum Memory (RAM) | Recommended Memory (RAM) | Notes |
---|---|---|---|
Small (Under 10,000 pages) | 512 MB | 1 GB | Suitable for low-traffic wikis with few extensions. |
Medium (10,000 - 100,000 pages) | 1 GB | 2-4 GB | Requires adequate caching for good performance. |
Large (100,000 - 500,000 pages) | 4 GB | 8-16 GB | Essential to optimize database queries and caching. |
Very Large (500,000+ pages) | 8 GB | 16 GB+ | Requires careful monitoring and optimization of all components. Consider a dedicated server. |
PHP Memory Limits
PHP, the language MediaWiki is written in, has several memory-related settings that need to be configured. The most important is `memory_limit`.
- `memory_limit` in `php.ini` : This setting defines the maximum amount of memory a PHP script can allocate. It’s *crucial* to set this high enough to prevent MediaWiki from crashing during complex operations like large edits or report generation. A value of 256M is a good starting point for small wikis, but 512M or 1GB may be necessary for larger wikis. You'll need to edit your `php.ini` file (location varies by server) and restart your web server (e.g., Apache or Nginx).
- `max_execution_time` in `php.ini` : This setting controls the maximum time a PHP script can run. Long-running scripts can consume significant memory. Adjust this setting cautiously.
To check your current PHP memory limit, you can create a PHP file (e.g., `phpinfo.php`) containing the following code:
```php <?php phpinfo(); ?> ```
Access this file through your web browser. Search for "memory_limit" on the page.
Configuring the Web Server (Apache/Nginx)
The web server also plays a role in memory management.
- Apache: Apache uses the `mod_php` module. Memory limits are primarily controlled through the `php.ini` file as described above. However, the `MaxRequestWorkers` directive in your Apache configuration can indirectly affect memory usage by controlling the number of concurrent requests. Increasing this value can consume more memory.
- Nginx: Nginx typically uses PHP-FPM (FastCGI Process Manager). PHP-FPM allows for more granular control over memory usage. You can configure the following directives in your PHP-FPM pool configuration file (e.g., `www.conf`):
* `pm`: Specifies the process manager type (`static`, `dynamic`, or `ondemand`). * `pm.max_children`: The maximum number of child processes that can be created. * `pm.start_servers`: The number of child processes created on startup. * `pm.min_spare_servers`: The minimum number of idle child processes. * `pm.max_spare_servers`: The maximum number of idle child processes. * `request_terminate_timeout`: The maximum execution time for a request.
Properly configuring PHP-FPM is essential for optimal performance and memory management. Refer to the PHP-FPM documentation for detailed information.
Caching Strategies
Caching is key to reducing memory pressure. MediaWiki offers several caching mechanisms:
Caching Method | Description | Configuration |
---|---|---|
Parser Cache: | Caches the output of the parser, reducing the need to re-parse pages frequently. | Configure in `LocalSettings.php` using `$wgParserCacheType`. Options include `REDIS`, `memcached`, and `Null`. |
Object Cache: | Caches database query results, reducing the load on the database server. | Configure in `LocalSettings.php` using `$wgObjectCacheType`. Options include `REDIS`, `memcached`, and `Null`. |
Output Cache: | Caches entire pages, serving them directly from the cache. | Enabled by default. Configuration options available in `LocalSettings.php`. |
Using a dedicated caching server like Redis or Memcached is *highly recommended* for medium to large wikis. These provide significantly better performance than the default Null cache. See the Caching documentation for more details.
Monitoring and Tuning
Regularly monitor your server's memory usage and MediaWiki's performance. Adjust the PHP memory limit, web server settings, and caching configuration as needed. Consider using a performance monitoring tool to identify bottlenecks. Don't be afraid to experiment with different settings to find the optimal configuration for your specific wiki.
Related Pages
- Installation guide
- Configuration settings
- Database configuration
- Extension management
- Server requirements
- Troubleshooting
- Performance optimization
- PHP
- Apache
- Nginx
- Redis
- Memcached
- Database server
- Caching documentation
- PHP-FPM documentation
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.* ⚠️