Linux:系统初始化,内核优化,性能优化(3)

优化系统的文件句柄数(全局)

也就是系统的最大文件数量

查看最大数量

复制代码
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

生效一下


锁定重要配置文件

直接不让配置某些文件

Linux:锁定文件chattr_linux文件加锁+i-CSDN博客https://blog.csdn.net/w14768855/article/details/135118897?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171068649916800188557769%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=171068649916800188557769&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-135118897-null-null.nonecase&utm_term=char&spm=1018.2226.3001.4450这篇文章可以看到如果上锁,可以把重要文件进行上锁处理

相关推荐
靡樊6 分钟前
网络基础概念
linux·服务器·网络·c++·学习
Kusunoki_D43 分钟前
速查 Linux 常用指令 II
linux·运维·服务器
xmweisi021 小时前
Ansible内置模块之 group
linux·运维·ansible·rhce·rhca·红帽认证
小猪写代码1 小时前
Ubuntu 系统默认已安装 python,此处只需添加一个超链接即可
linux·python·ubuntu
孤寂大仙v2 小时前
【Linux笔记】——Linux线程理解与分页存储的奥秘
linux·运维·笔记
有谁看见我的剑了?3 小时前
ubuntu 22.04 wifi网卡配置地址上网
linux·运维·ubuntu
码农新猿类3 小时前
Ubuntu摄像头打开失败
linux·运维·ubuntu
jstart千语3 小时前
【消息队列】RabbitMQ基本认识
java·服务器·分布式·rabbitmq
PWRJOY3 小时前
Ubuntu磁盘空间分析:du命令及常用组合
linux·运维·ubuntu
ASDyushui3 小时前
Shell 编程之正则表达式与文本处理器
linux·正则表达式