首页 > 系统服务 > 详细

linux系统优化

时间:2019-08-16 14:01:42      阅读:152      评论:0      收藏:0      [点我收藏+]

写在前面

  • 本文环境
[root@temp ~]# cat /etc/redhat-release 
CentOS Linux release 7.5.1804 (Core) 
[root@temp ~]# uname -r
3.10.0-862.el7.x86_64

?

基础优化

?1. 为rm命令修改别名,防止误操作。

[root@temp ~]# echo "alias rm='rm is not used'" >>/etc/bashrc
[root@temp ~]# source /etc/bashrc

?2. 个性化修改你命令提示符,可以把用户部分修改为刺眼的红色,时刻警醒。

[root@temp ~]# echo 'export PS1="\[\e[37;40m\][\[\e[31;40m\]\u\[\e[37;40m\]@\h \[\e[33;40m\]\w\[\e[0m\]]\\$ "' >>/etc/profile
[root@temp ~]# source /etc/profile

?3. 使用国内yum源,下载软件时会迅速些,当然也可以自建yum仓库。这里以阿里云为例。

[root@temp ~]# cd /etc/yum.repos.d/
[root@temp ~]# mv CentOS-Base.repo CentOS-Base.repo.bak &>/dev/null
[root@temp ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
[root@temp ~]# yum makecache fast

?4. 关闭selinux,现在阿里云安装的centos默认已经关闭了selinux。至于iptables,视情况而定。

[root@temp ~]# sed -i.bak 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config &>/dev/null
[root@temp ~]# setenforce 0

?5. 安装一些常用的软件。

[root@temp ~]# yum -y install epel-release
[root@temp ~]# yum -y install tree lrzsz nmap nc telnet vim wget lsof net-tools bash-completion bash-completion-extras psmisc bind-utils sysstat htop yum-utils

?6. 关闭用不到的服务。

# 工作环境我们一般都是手动配置网络,系统自带的网络工具直接禁用掉,防止混淆。postfix也禁用掉,不然定时任务会频繁发邮件(/var/spool/clientmquene),占用系统inode。
[root@temp ~]# systemctl stop NetworkManager postfix.service
[root@temp ~]# systemctl disable NetworkManager postfix.service

?7. 设置vim中Tab键两个空格,写脚本的时候排版看着更加舒服。(个人爱好,轻点喷)

[root@temp ~]# echo -e '\nset tabstop=2\nset softtabstop=2\nset shiftwidth=2\nset expandtab\nset autoindent' >>/etc/vimrc

?8. 定时任务设置时间同步,工作环境如有需要可以自行搭建NTP服务。生产环境中服务器的时间要求强一致,否则会导致应用运行异常,日志时间也是异常的。

[root@temp ~]# echo '# time sync' >/var/spool/cron/root
[root@temp ~]# echo '*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null' >>/var/spool/cron/root

?9. 禁止root用户登录

[root@temp ~]# sed -i.bak 's@#PermitRootLogin yes@PermitRootLogin yes@g' /etc/ssh/sshd_config

?10. 修改系统的限制。

??a) 限制文件描述符

# Linux下所有进程允许打开的文件描述符数量:
[root@temp ~]# cat /proc/sys/fs/file-max     # 查询
95474
[root@temp ~]# echo 65536 >/proc/sys/fs/file-max        # 临时修改
[root@temp ~]# echo 'fs.file-max = 65536' >>/etc/sysctl.conf    # 永久设置
# Linux下单个进程允许打开的最大文件描述符数量:
[root@temp ~]# ulimit -n         # 查看,默认查看的是soft limit,跟ulimit -Sn是一个意思;查看hard limit的命令是ulimit -Hn
1024
[root@temp ~]# ulimit -n 65535    # 临时修改。(同时修改soft limit和hard limit)
[root@temp ~]# vim /etc/security/limits.conf         # 永久修改
# * 表示针对所有用户。
# hard:严格设置 。必定不能超过这个设定值
# soft:警告设置。可以超过这个设定值,但是会有警告信息。
# soft limit不能大于hard limit
* soft nofile 65535    
* hard nofile 65535

??b) 限制打开进程数。

[root@temp ~]# ulimit -u            # 用法和上面的ulimit -n一致
3812
# 永久修改的设定也和上面的设置规则一样,只不过限制进程是nproc。
[root@temp ~]# vim /etc/security/limits.conf         # 永久修改
* soft nproc 65535    
* hard nproc 65535
# 这里有个坑就是20-nproc.conf也设置了nproc,如果limits.conf中设置了nproc,可以直接把这个配置文件删除掉。
[root@temp ~]# cat /etc/security/limits.d/20-nproc.conf 
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
*          soft    nproc     4096
root       soft    nproc     unlimited
# 注意1:nproc可以设置为unlimited,而nofile不可以。
# 注意2:limit修改后并非是必须重启系统才生效。修改后新启动的进程会使用新的limit限制,而旧进程还是会使用旧限制,只按需重启相应的进程就可以生效了。

?11.为系统的重要文件添加不能修改的权限。

[root@temp ~]# chattr +i /etc/passwd /etc/shadow

?

内核优化

?1. 开启SYN cookies,防止部分SYN攻击,默认为0关闭的状态。

# 临时修改。其它参数临时修改的方式也是一样。
[root@temp ~]# sysctl -w net.ipv4.tcp_syncookies = 1
# 永久修改。永久修改内核参数都需要写入到/etc/sysctl.conf文件中,并用-p参数生效。
[root@temp ~]# echo 'net.ipv4.tcp_syncookies = 1' >>/etc/sysctl.conf
[root@temp ~]# sysctl -p
# 如果是写入的子目录,比如下面,则需要指定文件路径进行加载
[root@temp ~]# echo 'net.ipv4.tcp_syncookies = 1' >>/etc/sysctl.d/lala.conf
[root@temp ~]# sysctl -p /etc/sysctl.d/lala.conf

?2. Time wait优化,就是四次挥手没断干净(需要2个MSL),还占用连接的资源,

# 开启TCP连接中TIME WAIT sockets的快速回收,默认为0,表示关闭。此参数对客户端和服务端同时起作用。
net.ipv4.tcp_tw_recycle = 1
# 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭。此参数支队客户端起作用。
net.ipv4.tcp_tw_reuse = 1
# 表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN WAIT 2状态的时间。
net.ipv4.tcp_fin_timeout = 30
# 注意1: tw_reuse,tw_recycle 必须在客户端和服务端 timestamps 开启时才管用(默认打开)
# 注意2:一般情况下只用开启tw_reuse就可以了。前提是资源不够的时候,才会重用TIME WAIT连接。

?3. 向外提供的端口范围。默认是范围是32768到61000,。

net.ipv4.ip_local_port_range = 1024 65000

?4. 修改SYN队列的长度,默认是1024。加大后可以容纳更多的SYN等待连接。

net.ipv4.tcp_max_syn_backlog = 8500

?5. 定义了系统中每一个端口最大的监听队列的长度, 对于一个经常处理新连接的高负载 web服务环境来说,默认的 128 太小了。

net.core.somaxconn = 262144

?6. 此参数指定了最大同时保持的Time_wait的数量,如果超过这个数字,Time_wait连接将立刻被清除并打印警告信息。

net.ipv4.tcp_max_tw_buckets = 36000

?7. 决定了二次握手时发送ack+syn的数量,就是发送几次ack+syn后没收到第三次握手的ack消息,就放弃这个连接。

net.ipv4.tcp_synack_retries = 2

?8. 用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致链接超时或者触发重传机制。

net.core.somaxconn = 16384

?9. 每个网络接口接收数据包的速率比内核处理这些包的速率快时,允许送到队列的数据包的最大数目。

net.core.netdev_max_backlog = 16384

?10. 这个值表示系统所能处理不属于任何进程的socket数量。系统内存充足的情况下,可以增加这个值。

net.ipv4.tcp_max_orphans = 16384

?11.接收套接字缓冲区大小的默认值(以字节为单位)。

net.core.rmem_default = 262144

?12. 接收套接字缓冲区大小的最大值(以字节为单位)。

net.core.rmem_max = 16777216

?13. 发送套接字缓冲区大小的默认值(以字节为单位)。

net.core.wmem_default = 262144

?14. 发送套接字缓冲区大小的最大值(以字节为单位)。

net.core.wmem_max = 16777216

?
?

未完待续......

?
?

写作不易,转载请注明出处,谢谢~~

linux系统优化

原文:https://www.cnblogs.com/ccbloom/p/11355014.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!