Linux生产服务器如何优化

62次阅读
没有评论

共计 3236 个字符,预计需要花费 9 分钟才能阅读完成。

这篇文章主要介绍“Linux 生产服务器如何优化”,在日常操作中,相信很多人在 Linux 生产服务器如何优化问题上存在疑惑,丸趣 TV 小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linux 生产服务器如何优化”的疑惑有所帮助!接下来,请跟着丸趣 TV 小编一起来学习吧!

一、时间同步

生产环境下的服务器对时间的要求是精准的,我的邮件服务器的 dovecot 服务,以前经常因为时间问题自动停止服务,建议编辑

vim /etc/crontab

至今每天跟 ntp 时间服务器自动对时一次:

14 04 * * * root /usr/sbin/ntpdate ntp.api.bz   /dev/null 2 1

二、启用内核中的 SYN cookie 保护:

echo  1    /proc/sys/net/ipv4/tcp_syncookies

执行以下命令使内核配置立马生效:

/sbin/sysctl -p

三、Squid 服务器变慢的解决方法

如果自己的生产服务器是 squid 缓存服务器,当发现系统变慢或打开网页变慢时可输入下列命令:

netstat -n | awk  /^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}

这条命令可以把当前系统的网络连接状态分类汇总,由此分析出系统变慢的原因。

Linux 下高并发的 Squid 服务器,TCP TIME_WAIT 套接字数量经常达到两、三万,服务器很容易被拖死。通过修改 Linux 内核参数,可以减少 Squid 服务器的 TIME_WAIT 套接字数量。

vim /etc/sysctl.conf

增加以下几行:

net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 5000

说明:

net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将 TIME-WAIT sockets 重新用于新的 TCP 连接,默认为 0,表示关闭;

net.ipv4.tcp_tw_recycle = 1 表示开启 TCP 连接中 TIME-WAIT sockets 的快速回收,默认为 0,表示关闭。

net.ipv4.tcp_fin_timeout = 30 表示如果套接字由本端要求关闭,这个参数决定了它保持在 FIN-WAIT- 2 状态的时间。

net.ipv4.tcp_keepalive_time = 1200 表示当 keepalive 起用的时候,TCP 发送 keepalive 消息的频度。缺省是 2 小时,改为 20 分钟。

net.ipv4.ip_local_port_range = 1024 65000 表示用于向外连接的端口范围。缺省情况下很小,改为 1024 到 65000。

net.ipv4.tcp_max_syn_backlog = 8192 表示 SYN 队列的长度,默认为 1024,加大队列长度为 8192,可以容纳更多等待连接的网络连接数。

net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持 TIME_WAIT 套接字的 *** 数量,如果超过这个数字,TIME_WAIT 套接字将立刻被清除并打印警告信息。默认为 180000,改为 5000。对于 Apache、Nginx 等服务器,上几行的参数可以很好地减少 TIME_WAIT 套接字数量,但是对于 Squid,效果却不大。此项参数可以控制 TIME_WAIT 套接字的 *** 数量,避免 Squid 服务器被大量的 TIME_WAIT 套接字拖死。

执行以下命令使内核配置立马生效:

/sbin/sysctl -p

四、Nginx 服务器的情况

如果服务器是 Nginx 负载均衡器或用于 Nginx+PHP5 的 web 服务器,此二项也必须打开:

net.ipv4.tcp_tw_reuse = 1 #允许将 TIME-WAIT sockets 重新用于新的 TCP 连接

net.ipv4.tcp_tw_recycle = 1 #开启 TCP 连接中 TIME-WAIT sockets 的快速回收

执行以下命令使内核配置立马生效:

/sbin/sysctl -p

五、调整 Linux 的 *** 文件打开数

Linux*** 文件打开数的默认值很低,必须修改的高一些,否则 squid 服务器在高负载时执行性能将很低。

vim /etc/security/limit.conf,在 *** 一行添加

* soft nofile 60000 * hard nofile 65535

值得注意的是,通过命令 ulimit -SHn 是改变不了 linux 系统的 *** 文件打开数的,写进 /etc/rc.d/rc.local 也是不行的。

六、只开启必须的服务

只开启必须的服务,其它均可关闭。以下列出的服务可开启:

crond irqbalance microcode_ctl network random sshd syslog

iptables 这个待定。如果前端有硬件防火墙;这个也可以关闭,反之不行。

下面的命令可检查运行在 5 级别的服务,3 级以此类推

chkconfig -- list | awk  {print $1     $7}  | grep 5:on

检查下打印服务,此服务经常成漏网之鱼,关掉它。

service cups stop chkconfig cups off

chkconfig 这条命令会关掉 3 和 5 级别的服务。

七、停止 ipv6

线上跑的 Linux 服务器,绝大多数是 64 位的 CentOS。CentOS 默认的状态下,ipv6 是被启用的状态。因为我们不使用 ipv6,所以,停止 ipv6 能够以 *** 限度保证安全和快速。

vim /etc/modprobe.conf

修改此配置文件,添加如下行到文尾:

alias net-pf-10 off alias ipv6 off echo  IPV6INIT=no    /etc/sysconfig/network-scripts/ifcfg-eth0

八、开启 RHEL 的网卡激活模式

如果服务器的系统是 RHEL,就需要开启 RHEL 默认的网卡激活模式为 ONBOOT。感觉这也算是 RHEL 的一个小 bug 吧:笔者替客户维护的某台 RHEL 应用服务器,居然六块网卡,在 ONBOOT 关闭的时候,有的启动,有的不启动,汗噢。我还特的向客户咨询了这个问题,客户答曰:买多了 hellip; hellip;

vim /etc/sysconfig/network-scripts/ifcfg-eth0,eth2

eth2 为第二网卡,其它依此内推。

ONBOOT=YES

然后重启网络服务生效

service network restart

九、Linux 内存管理

Linux 内存管理模式跟 windows 不一样,它的原则是有多少就用多少。很多 Linux 新手喜欢用命令 free - m 观察,发现 free 所剩无余后想办法去优化内存;其实就走进了一个误区,linux 本身的内存模式就很好了,为了提高磁盘存取效率,Linux 做了一些精心的设计,除了对 dentry 进行缓存(用于 VFS,加速文件路径名到 inode 的转换),还采取了两种主要 Cache 方式:Buffer Cache 和 Page Cache。前者针对磁盘块的读写,后者针对文件 inode 的读写。这些 Cache 有效缩短了 I/ O 系统调用(比如 read,write,getdents)的时间。

到此,关于“Linux 生产服务器如何优化”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注丸趣 TV 网站,丸趣 TV 小编会继续努力为大家带来更多实用的文章!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计3236字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)