优化系统的文件句柄数(全局)
也就是系统的最大文件数量
查看最大数量
cat /proc/sys/fs/file-max
当我们的服务器有非常大的一个数据并发的时候十几二十万的文件需要去配置,可能这个是远远不够的,我们就要去修改
vim /etc/sysctl.conf
# 末尾追加
fs.file-max = 102400
意思就是最大文件数是102400
再去让其生效
sysctl -p
再去查看一下最大文件数
或者使用命令
echo "fs.file-max = 102400" >> /etc/sysctl.conf
这个是全局生效的,对所有用户都生效,我们也可以对某个用户有不同的
优化系统的文件句柄数(用户)
某个账户的最大句柄数
查看大小
ulimit -u
可以看到用户的才7183(root是随意的不受限制的)
现在去进行修改
vim /etc/security/limits.conf
#末尾追加
* soft nofile 65535
* hard nofile 65535
意为最大就是65535和文件
或者使用命令
echo "* soft nofile 65535" >> /etc/security/limits.conf
echo "* hard nofile 65535" >> /etc/security/limits.conf
配置生效,重新登录即可
优化系统的文件句柄数(单个进程)
单个进程可以操控的句柄数
vim /etc/security/limits.d/20-nproc.conf
默认4096
也是重新登录生效
优化系统的文件句柄数(全局进程)
echo "* soft nproc 65535" >> /etc/security/limits.conf
echo "* hard nproc 65535" >> /etc/security/limits.conf
设置别名命令
通过alias设置别名命令
开启的服务进行精简
如果开机自动开启没用的服务就一堆这非常占用系统的开机时间一类的
systemctl list-unit-files | grep enabled
看一下
发现有很多
systemctl list-unit-files | grep en | wc -l
看一下有多少个可以看到有62个
postfix.service这个服务一般不开
NetworkManager.service 一般也不开
其他的根据自己的情况去禁用
systemctl disable postfix.service
systemctl disable NetworkManager.service
其他没有用的话可以具体的去网上查一下,根据官方的推荐去禁掉一些
优化内核参数
tcp/ip协议的优化,允许更多的tcp会话,增加吞吐量,缓解相关攻击
cat >>/etc/sysctl.conf<<EOF
#保持在FIN-WAIT-2状态的时间,使系统可以处理更多连接。此参数值为整数,单位为秒。
net.ipv4.tcp_fin_timeout = 2
#开启重用,允许将TIME_WAIT socket用于新的TCP连接。默认为0,表示关闭。
net.ipv4.tcp_tw_reuse = 1
#开启TCP连接中TIME_WAIT socket的快速回收。默认值为0,表示关闭。
net.ipv4.tcp_tw_recycle = 1
#新建TCP连接请求,需要发送一个SYN包,该值决定内核需要尝试发送多少次syn连接请求才决定放弃建立连接。默认值是5. 对于高负责且通信良好的物理网络而言,调整为2
net.ipv4.tcp_syn_retries = 2
#对于远端SYN连接请求,内核会发送SYN+ACK数据包来确认收到了上一个SYN连接请求包,然后等待远端的确认(ack数据包)。该值则指定了内核会向远端发送tcp_synack_retires次SYN+ACK数据包。默认设定值是5,可以调整为2
net.ipv4.tcp_synack_retries = 2
#开启SYN cookie,出现SYN等待队列溢出时启用cookie处理,防范少量的SYN攻击。默认为0,表示关闭。
net.ipv4.tcp_syncookies = 1
#表示SYN队列的长度,预设为1024,这里设置队列长度为262144,以容纳更多等待连接。
net.ipv4.tcp_max_syn_backlog = 262144
#系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数值将立刻被清除并输出警告信息。默认值为180000。控制TIME_WAIT套接字最大值,避免服务器被拖死。可以抵御简单的DoS攻击。
net.ipv4.tcp_max_tw_buckets = 6000
#表示系统中最多有多少TCP套接字不被关联到任何一个用户文件句柄上。如果超过这里设置的数字,连接就会复位并输出警告信息。这个限制仅仅是为了防止简单的DoS攻击。此值不能太小。
net.ipv4.tcp_max_orphans = 16384
# 增加TCP最大缓冲区大小
net.ipv4.tcp_rmem=4096 87380 4194304
net.ipv4.tcp_wmem=4096 16384 4194304
#keepalived启用时TCP发送keepalived消息的频度。默认2小时。
net.ipv4.tcp_keepalive_time = 600
#TCP发送keepalive探测以确定该连接已经断开的次数。根据情形也可以适当地缩短此值
net.ipv4.tcp_keepalive_probes = 5
#探测消息发送的频率,乘以tcp_keepalive_probes就得到对于从开始探测以来没有响应的连接杀除的时间。默认值为75秒,也就是没有活动的连接将在大约11分钟以后将被丢弃。对于普通应用来说,这个值有一些偏大,可以根据需要改小.特别是web类服务器需要改小该值。
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.route.gc_timeout = 100
#指定外部连接的端口范围。默认值为32768 61000
net.ipv4.ip_local_port_range = 1024 65000
#定义了系统中每一个端口最大的监听队列的长度, 对于一个经常处理新连接的高负载 web服务环境来说,默认值为128,偏小
net.core.somaxconn = 16384
#表示当在每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许发送到队列的数据包的最大数量。
net.core.netdev_max_backlog = 16384
#避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts=1
EOF
sysctl -p
生效一下
锁定重要配置文件
直接不让配置某些文件