正常使用环境下的Linux服务器有精准、稳定、高效、安全等需求,其优化也是有着好多的绝招。本文分享了九条平常进行Linux服务器优化的经验,内容涉及短信服务器、Web服务器、网络配置、内存管理等方面。
PART.01
时间同步
正常使用环境下的服务器对时间的要求是精准的,我的短信服务器的dovecot服务,曾经常常由于时间问题手动停止服务,建议编辑
vim /etc/crontab
至今每晚跟ntp时间服务器手动对时一次:
14 04 * * * root /usr/sbin/ntpdate ntp.api.bz > /dev/null 2>&1
PART.02
启用内核中的SYNcookie保护
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
执行以下命令使内核配置立刻生效:
/sbin/sysctl -p
PART.03
网路联接状态剖析
假如自己的生产服务器是squid缓存服务器,当发觉系统变慢或打开网页变慢时可输入下述命令:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
这条命令可以把当前系统的网路联接状态分类汇总linux操作系统培训,由此剖析出系统变慢的诱因。
Linux下高并发的Squid服务器,TCPTIME_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-WAITsockets重新用于新的TCP联接,默认为0,表示关掉;
net.ipv4.tcp_tw_recycle=1表示开启TCP联接中TIME-WAITsockets的快速回收,默认为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=102465000表示用于向外联接的端口范围。缺省情况下很小,改为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
PART.04
Nginx服务器的情况
假如服务器是Nginx负载均衡器或用于Nginx+PHP5的web服务器,此二项也必须打开:
net.ipv4.tcp_tw_reuse=1#准许将TIME-WAITsockets重新用于新的TCP联接
net.ipv4.tcp_tw_recycle=1#开启TCP联接中TIME-WAITsockets的快速回收
执行以下命令使内核配置立刻生效:
/sbin/sysctl -p
PART.05
调整Linux的最大文件打开数
Linux最大文件打开数的默认值很低,必须更改的高一些,否则squid服务器在高负载时执行性能将很低。
vim /etc/security/limit.conf
在最后一行添加
* soft nofile 60000 * hard nofile 65535
值得注意的是,通过命令ulimit-SHn是改变不了linux系统的最大文件打开数的,写进/etc/rc.d/rc.local也是不行的。
PART.06
只开启必须的服务
只开启必须的服务,其它均可关掉。以下列举的服务可开启:
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级别的服务。
PART.07
停止IPv6
线上跑的Linux服务器linux crontab 重启服务,绝大多数是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
PART.08
开启RHEL的网卡激活模式
假如服务器的系统是RHEL,就须要开启RHEL默认的网卡激活模式为ONBOOT。
vim /etc/sysconfig/network-scripts/ifcfg-eth0,eth1
eth1为第二网卡,其它依这种推。
ONBOOT=YES
之后重启网路服务生效
service network restart
PART.09
Linux显存管理
Linux显存管理模式跟windows不一样,它的原则是有多少就用多少。好多Linux菜鸟喜欢用命令free-m观察,发觉free所剩无余后想办法去优化显存;
虽然就走入了一个误区,linux本身的显存模式就挺好了,为了提升c盘存取效率,Linux做了一些悉心的设计,不仅对dentry进行缓存(用于VFS红旗linux6.0教程,加速文件路径名到inode的转换),还采取了两种主要Cache形式:BufferCache和PageCache。
后者针对c盘块的读写,前者针对文件inode的读写。这种Cache有效减短了I/O系统调用(例如readlinux crontab 重启服务,write,getdents)的时间。所以建议,显存管理这块顺其自然吧。
文章评论