Web服务器内核参数优化

2023-10-30 19:05:29 浏览数 (1)

关注“希里安”,get更多有用干货!

## 近日见闻

1. 斯诺登揭露棱镜计划已过去10年了,时间过得真快啊!

2. IBM 宣布推出 50TB 企业级磁带机和磁带盒 --www.forbes.com

3. 开发人员Boris Kolpackov将Linux用于管理内核配置的“make xconfig”图形用户界面移植到Qt6。保留了Qt5工具包的兼容性 - 至少就Qt 5.15 LTS而言。--www.phoronix.com

4. 近期,由 Amber Group 主导、慢雾 SlowMist 作为内容贡献者之一参与的《数字资产安全、合规与风险管理》白皮书正式发布。

## 内核参数优化

当在CentOS 7.9上搭建Web服务器时,以下是一些可以优化内核参数的建议。可以使用`sysctl`命令来临时修改这些参数,或者将它们添加到系统的配置文件以在启动时应用。

1. **vm.swappiness:** 降低`vm.swappiness`以减少交换空间的使用。

代码语言:javascript复制
 sysctl vm.swappiness=10

2. **vm.dirty_background_ratio和vm.dirty_ratio:** 调整脏页刷写的阈值。

代码语言:javascript复制
   ```
   sysctl vm.dirty_background_ratio=5
   sysctl vm.dirty_ratio=10
   ```

3. **kernel.pid_max:** 增加最大进程ID的数量。

代码语言:javascript复制
```
   sysctl kernel.pid_max=65536
```

4. **net.core.somaxconn和net.core.netdev_max_backlog:** 增加连接队列长度。

代码语言:javascript复制
   ```
   sysctl net.core.somaxconn=65535
   sysctl net.core.netdev_max_backlog=65535
   ```

5. **fs.file-max和fs.nr_open:** 增加文件句柄数量。

代码语言:javascript复制
   ```
   sysctl fs.file-max=65535
   sysctl fs.nr_open=65535
   ```

6. **kernel.shmmax和kernel.shmall:** 增加共享内存大小。

代码语言:javascript复制
   ```
   sysctl kernel.shmmax=536870912
   sysctl kernel.shmall=131072
   ```

7. **net.ipv4.tcp_fin_timeout:** 降低TCP连接的TIME_WAIT时间。

代码语言:javascript复制
   ```
   sysctl net.ipv4.tcp_fin_timeout=15
   ```

8. **net.ipv4.tcp_keepalive_time:** 减少TCP Keepalive时间。

代码语言:javascript复制
   ```
   sysctl net.ipv4.tcp_keepalive_time=300
   ```

9. **net.ipv4.tcp_max_syn_backlog:** 增加TCP SYN队列的长度。

代码语言:javascript复制
   ```
   sysctl net.ipv4.tcp_max_syn_backlog=65535
   ```

10. **net.ipv4.tcp_max_tw_buckets:** 增加TIME_WAIT套接字的数量。

代码语言:javascript复制
    ```
    sysctl net.ipv4.tcp_max_tw_buckets=1440000
    ```

11. **net.ipv4.tcp_tw_reuse:** 启用TIME_WAIT套接字重用。

代码语言:javascript复制
    ```
    sysctl net.ipv4.tcp_tw_reuse=1
    ```

12. **net.ipv4.ip_local_port_range:** 增加本地端口范围。

代码语言:javascript复制
    ```
    sysctl net.ipv4.ip_local_port_range="1024 65535"
    ```

13. **net.ipv4.tcp_window_scaling:** 启用TCP窗口缩放。

代码语言:javascript复制
    ```
    sysctl net.ipv4.tcp_window_scaling=1
    ```

14. **net.ipv4.tcp_rmem和net.ipv4.tcp_wmem:** 调整TCP接收和发送缓冲区大小。

代码语言:javascript复制
    ```
    sysctl net.ipv4.tcp_rmem="4096 87380 16777216"
    sysctl net.ipv4.tcp_wmem="4096 87380 16777216"
    ```

15. **net.ipv4.tcp_no_metrics_save:** 禁用TCP连接状态的保存。

代码语言:javascript复制
    ```
    sysctl net.ipv4.tcp_no_metrics_save=1
    ```

16. **net.ipv4.tcp_congestion_control:** 选择适当的TCP拥塞控制算法,如BBR。

代码语言:javascript复制
    ```
    sysctl net.ipv4.tcp_congestion_control=bbr
    ```

17. **kernel.sem:** 增加系统的信号量设置。

代码语言:javascript复制
    ```
    sysctl kernel.sem="250 256000 32 8192"
    ```

18. **kernel.msgmni:** 增加系统消息队列标识符的数量。

代码语言:javascript复制
    ```
    sysctl kernel.msgmni=1024
    ```

19. **kernel.msgmax和kernel.msgmnb:** 增加系统消息队列大小。

代码语言:javascript复制
    ```
    sysctl kernel.msgmax=65536
    sysctl kernel.msgmnb=65536
    ```

20. **kernel.core_pattern:** 配置核心转储文件的位置和命名方式。

代码语言:javascript复制
    ```
    sysctl kernel.core_pattern=/var/core/core.%e.%p
    ```

在更改这些参数之前,请确保备份配置文件,并确保它们适用于您的特定服务器工作负载和硬件配置。

0 人点赞