📑 文章章节大纲 (点击平滑直达)
系统基础优化
-
关闭不需要的 TTY
```
# vim /etc/init/start-ttys.conf文件
env ACTIVE_CONSOLES=/dev/tty[1-6]修改为[1-2],然后重启机器即可。
# vim /etc/sysconfig/init
ACTIVE_CONSOLES=/dev/tty[1-6]修改为[1-2]
```
-
对 TCP/IP 网络参数进行调整
```
# echo \"net.ipv4.tcp_syncookies = 1\"\>\>/etc/sysctl.conf
# sysctl -p
# 增强对抗SYN Flood的能力。
```
-
修改 history 记录数
```
# vim /etc/profile
# 修改HISTSIZE值
# source /etc/profile
# 刷新环境变量
```
-
每当系统加载 IPv6 模块是强制执行/bin/true 来代替实际加载的模块
```
# echo "install ipv6 /bin/true">/etc/modprobe.d/disable-ipv6.conf
```
-
禁用基于 ipv6 网络
```
echo "IPV6INIT=no">>/etc/sysconfig/network-scripts/ifcfg-eth0
```
-
调整 Linux 最大文件打开数,否则允许 squid 服务的机器在高负载时执行性能将会很差;有时在部署应用时,会遇到“Too many open files”这样的问题,这个值也会影响服务器的最大并发数。
```
# vim /etc/security/limit.conf
# 在文件尾部添加
soft nofile 65535 hard nofile 65535
# vim /etc/rc.local
# 在开机时执行命令
ulimit -SHn 65535
```
-
在 web 服务器的页面上有很多小图片,通常是没有必要记录的,这样就可以减少写磁盘的 I/O 值。
```
# 修改/etc/fstab,然后,在包含大量小文件的分区中使用noatime,和nodiratime命令
# /dev/sda5 /data/pics ext3 noatime,nodiratime 0 0
```
-
配置 SSH 登录
```
# 不允许root用户通过远程登录
将 PermitRootLogin yes 修改为 PermitRootLogin no
# 禁止空密码登录
取消掉 PermitEmptyPasswords no 的注释
# 关闭SSH反向查询,加快SSH的访问速度
将 UseDNS yes修改 UseDNS no
```
-
增加具有 sudo 权限的用户
```
# visudo
# 给admin用户所有root权限
添加 admin ALL=(ALL) ALL
```
优化 Linux 下的内核 TCP 参数提高系统性能
-
内核的优化和服务器优化一样,在 Linux 下高并发的 Squid 服务器中,TCP TIME_WAIT 套接字的数量经常可达到两三万,服务器很容易被拖死。可以通过修改 Linux 内核参数来减少 Squid 服务器的 TIME_WAIT 数量,命令如下:
```
# vim /etc/sysctl.conf 添加以下参数:
net.ipv4.tcp_syncookies = 1 # 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用Cookie来处理,可防范少量的SYN攻击。该参数默认为 0。
net.ipv4.tcp_fin_timeout = 30 # 表示如果套接字由本端要求关闭,那么这个参数将决定它保持在FIN-WAIT-2状态的时间
net.ipv4.tcp_keepalive_time = 1200 # 表示当keepalived启用时,TCP发送Keepalived消息的频度改为20分钟
net.ipv4.tcp_tw_reuse = 1 # 表示开启重用,即允许将TIME-WAIT套接字重新用于新的TCP连接。该参数默认为0,表示关闭。
net.ipv4.tcp_tw_recycle = 1 # 表示开启TCP连接中TIME-WAIT套接字的快速回收,该参数默认为0,表示关闭。
net.ipv4.tcp_local_port_range = 10000 65000 表示向外连接的接口范围。
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认值为1024,此处修改为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,TIME_WAIT套接字将立即清除并打印警告信息,默认值为180000,此处修改为5000(此参数对Squid来说,效果较为理想)
```
对于 Apache 或 Nginx 等 Web 服务器,则只需要修改以下几项即可:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_local_port_range = 10000 65000
对于 postfix 邮件服务器,则建议内核优化方案如下:
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_local_port_range = 10000 65000
kernel.shmmax = 134217728
Linux 下 CPU 使用率与机器负载的关系与区别
CPU 负载和 CPU 利用率虽然是两个不同的概念,但它们的信息可以显示在同一个 top 命令中。 > CPU 利用率显示的是在运行期间实时占用的 CPU 百分比 CPU 负载显示的则是一段时间内正在使用和等待使用 CPU 的平均任务数。CPU 利用率高,并不意味着负载就一定大。