🆙 Add more tuts more to come 🆙

This commit is contained in:
Remco
2025-09-20 21:12:16 +02:00
parent 6fd298a772
commit 54997b13ce
4 changed files with 210 additions and 0 deletions
@@ -0,0 +1,42 @@
Of course. For a VPS with **16 GB RAM**, you can significantly scale up your MySQL configuration to handle high traffic and demanding queries. The primary goal is to maximize the `innodb_buffer_pool_size` to reduce disk I/O.
Here are the recommended settings for a **16 GB RAM VPS**:
```ini
[mysqld]
# InnoDB settings
# Set to 50-70% of total RAM.
innodb_buffer_pool_size = 11G
# The number of threads writing data from the buffer pool to the disk.
# A good starting value is 8 for a server with this much RAM.
innodb_io_threads = 8
# Amount of memory for the log buffer.
# A larger value can improve write performance.
innodb_log_buffer_size = 64M
# Query Cache settings
# It's best to keep this disabled since MySQL 5.7+ and deprecated in 8.0.
query_cache_type = 0
query_cache_size = 0
# Connection settings
# Adjust based on your expected traffic.
max_connections = 500
# Other settings
# A temporary table size limit to prevent memory exhaustion.
tmp_table_size = 512M
max_heap_table_size = 512M
```
-----
### Key Changes Explained
* **`innodb_buffer_pool_size`**: Set to **11 GB**. This is the most crucial change. It allocates a large portion of your RAM to the database's data and index cache, which will drastically improve query performance.
* **`innodb_io_threads`**: Increased to **8**. With more available RAM and CPU power on a larger server, you can use more threads to write data to the disk, which can help with I/O-intensive workloads.
* **`innodb_log_buffer_size`**: Increased to **64 MB**. This helps improve the efficiency of large write transactions by providing a larger buffer for log data.
* **`max_connections`**: Increased to **500**. This allows your database to handle a larger number of concurrent users or application connections without queuing them.
* **`tmp_table_size`** / **`max_heap_table_size`**: Increased to **512 MB**. This provides more memory for temporary tables created by complex queries, reducing the need to write them to disk.
@@ -0,0 +1,48 @@
Optimizing MySQL for a 4 GB RAM VPS is crucial to ensure smooth performance, as the default settings are often too conservative. The most important setting to adjust is the **InnoDB Buffer Pool Size**, as it directly impacts how much data your database can cache in memory.
-----
### Key Settings to Optimize
Your primary goal is to allocate as much RAM as possible to the database's cache without causing the server to swap. A good starting point is to allocate **50% to 70% of your available RAM** to the InnoDB Buffer Pool. For a 4 GB VPS, this means dedicating roughly 2 GB to 2.5 GB.
Here are the key settings you should adjust in your `my.cnf` or `my.ini` file.
```ini
[mysqld]
# InnoDB settings
# The most important setting. Set to 50-70% of total RAM.
innodb_buffer_pool_size = 2G
# The number of threads writing data from the buffer pool to the disk.
# A good starting value is 4 for modern systems.
innodb_io_threads = 4
# Amount of memory for the log buffer.
# A larger value can improve write performance for big transactions.
innodb_log_buffer_size = 16M
# Query Cache settings
# Recommended to disable since MySQL 5.7+ and deprecated in 8.0.
query_cache_type = 0
query_cache_size = 0
# Connection settings
# Maximum number of concurrent client connections.
# Adjust based on your expected traffic. A value of 150-250 is often suitable.
max_connections = 200
# Other settings
# A temporary table size limit to prevent memory exhaustion.
tmp_table_size = 64M
max_heap_table_size = 64M
```
### Explanation of Settings
* **`innodb_buffer_pool_size`**: This is the main data cache. The larger this is, the less MySQL has to read from the slower disk. Setting this to **2 GB** is a solid choice for a 4 GB VPS, as it leaves enough RAM for the operating system and other services (like PHP-FPM and your web server).
* **`innodb_io_threads`**: This tells InnoDB how many threads to use for I/O operations. A higher number can improve performance on modern multi-core systems.
* **`query_cache_type` / `query_cache_size`**: The MySQL query cache is generally not recommended for most applications because it can often hurt performance due to the overhead of invalidating cached queries. It's best to disable it completely.
* **`max_connections`**: This setting controls how many users can connect to your database at the same time. Setting this too high can cause memory issues. You should monitor your database to see how many connections are typically active and set this value slightly higher than your peak usage.
After making these changes, **restart your MySQL/MariaDB service** for them to take effect.
@@ -0,0 +1,38 @@
Here are the recommended settings for an **8 GB RAM VPS**:
```ini
[mysqld]
# InnoDB settings
# Set to 50-70% of total RAM.
innodb_buffer_pool_size = 5G
# The number of threads writing data from the buffer pool to the disk.
# A good starting value is 4 for modern systems.
innodb_io_threads = 4
# Amount of memory for the log buffer.
# A larger value can improve write performance for big transactions.
innodb_log_buffer_size = 32M
# Query Cache settings
# Recommended to disable since MySQL 5.7+ and deprecated in 8.0.
query_cache_type = 0
query_cache_size = 0
# Connection settings
# Maximum number of concurrent client connections.
# Adjust based on your expected traffic.
max_connections = 300
# Other settings
# A temporary table size limit to prevent memory exhaustion.
tmp_table_size = 128M
max_heap_table_size = 128M
```
### Key Changes
* **`innodb_buffer_pool_size`**: Increased to **5 GB**. This gives the database significantly more room to cache data in RAM, which drastically improves the performance of both read and write operations.
* **`innodb_log_buffer_size`**: Increased to **32 MB**. This improves performance when processing large write transactions.
* **`max_connections`**: Increased to **300**. This allows your database to handle more concurrent connections, which is essential for a busy website or application.
* **`tmp_table_size` and `max_heap_table_size`**: Increased to **128 MB**. This can improve the performance of complex queries that use temporary tables.
@@ -0,0 +1,82 @@
Optimizing an Ubuntu server is a critical step for ensuring stability, security, and peak performance. Here is a general tutorial on how to best configure your server.
-----
### 1\. Update Your System
Always start by ensuring your system is up to date with the latest security patches and software versions.
```bash
sudo apt update
sudo apt upgrade -y
```
-----
### 2\. Security
Securing your server is a top priority to prevent unauthorized access.
* **Secure SSH:** Change the default SSH port (22) to a random, non-standard port. It's also highly recommended to disable root login and use key-based authentication instead of passwords.
```bash
sudo nano /etc/ssh/sshd_config
```
Modify these lines:
* `Port 22` to `Port <a different number>`
* `PermitRootLogin yes` to `PermitRootLogin no`
* `PasswordAuthentication yes` to `PasswordAuthentication no`
* **Set Up a Firewall (UFW):** Enable the firewall and only open the ports you need for your services.
```bash
sudo ufw allow ssh # or your new SSH port
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
```
-----
### 3\. Performance
Optimize your server's performance based on the services it will run.
#### For a Web Server (LAMP/LEMP Stack)
* **PHP OPcache:** This is one of the most important steps for PHP performance. Ensure it's enabled and configured to your site's needs.
* **Web Server Fine-Tuning:** Optimize your web server (Nginx or Apache). For Nginx, you can adjust the number of worker processes. For Apache, you can tune `MaxRequestWorkers` and other settings.
* **Database (MySQL/MariaDB):** Fine-tune database cache settings like `innodb_buffer_pool_size`. A good rule of thumb is to allocate 50-70% of your total RAM to this setting.
#### General Server Performance
* **Enable Zram:** Zram creates a compressed block device in RAM, which significantly improves the speed of swap space and reduces I/O load.
```bash
sudo apt install zram-tools
```
* **Optimize `sysctl`:** Adjust kernel parameters for better network performance. This can tune the TCP stack for higher throughput.
```bash
sudo nano /etc/sysctl.conf
```
Add the following lines for network optimization:
```ini
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.ipv4.tcp_max_syn_backlog = 65536
```
-----
### 4\. Monitoring
Monitor your server to identify bottlenecks. Tools like **`top`**, **`htop`**, **`nmon`**, or **Grafana** can help you keep an eye on CPU, memory, and I/O usage, allowing you to make further optimizations where needed.