之前一直有博主要求整理下VPS主机优化方法,那么如果你是VPS主机(Linux),可以尝试一下了,尤其是linux系统的内核参数优化。
一、增加SWAP分区
VPS(Virtual Private Server 虚拟专用服务器)技术,将一部服务器分割成多个虚拟专享服务器的优质服务。每个VPS都可分配独立公网IP地址、独立操作系统、独立超大空间、独立内存、独立执行程序和独立系统配置等。
下面是配置过程中的一些笔记:
VPS只有一个根分区,没有swap交换分区。VPS内存不大,于是,我为其增加了一个swap交换文件。
1、进入一个目录
cd /var/
2、获取256M的文件块:
dd if=/dev/zero of=swapfile bs=1024 count=262144
3、创建swap文件
/sbin/mkswap swapfile
4、激活swap文件
/sbin/swapon swapfile
5、查看一下swap是否正确:
/sbin/swapon -s
6、加到fstab文件中让系统引导时自动启动
vi /etc/fstab
在末尾增加以下内容:
/var/swapfile swap swap defaults 0 0
Ps:这个方法在玛思阁以前的文章同样整理过,详见:给已安装的Linux新增Swap交换分区。
--------------------------------------------------------------------------------
二、修改Linux系统时区
系统默认为美国东部时间,修改Linux时区为东八区
cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
以上摘自:http://www.jb51.net/article/16732.htm
三、Linux内核参数优化
Linux内核参数优化可以使用 sysctl 命令完成,但是命令只能临时生效,若要永久保留配置,我们就得编辑sysctl.conf这个文件了。先附上sysctl.conf详细参数说明
sysctl.conf 文件中参数设置及参考推荐值
proc/sys/net/core/wmem_max 最大socket写buffer,可参考的优化值:873200 /proc/sys/net/core/rmem_max 最大socket读buffer,可参考的优化值:873200 /proc/sys/net/ipv4/tcp_wmem TCP写buffer,可参考的优化值: 8192 436600 873200 /proc/sys/net/ipv4/tcp_rmem TCP读buffer,可参考的优化值: 32768 436600 873200 /proc/sys/net/ipv4/tcp_mem 同样有3个值,意思是: net.ipv4.tcp_mem[0]:低于此值,TCP没有内存压力. net.ipv4.tcp_mem[1]:在此值下,进入内存压力阶段. net.ipv4.tcp_mem[2]:高于此值,TCP拒绝分配socket. 上述内存单位是页,而不是字节.可参考的优化值是:786432 1048576 1572864 /proc/sys/net/core/netdev_max_backlog 进入包的最大设备队列.默认是300,对重负载服务器而言,该值太低,可调整到1000 /proc/sys/net/core/somaxconn listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.可调整到256. /proc/sys/net/core/optmem_max socket buffer的最大初始化值,默认10K /proc/sys/net/ipv4/tcp_max_syn_backlog 进入SYN包的最大请求队列.默认1024.对重负载服务器,可调整到2048 /proc/sys/net/ipv4/tcp_retries2 TCP失败重传次数,默认值15,意味着重传15次才彻底放弃.可减少到5,尽早释放内核资源. /proc/sys/net/ipv4/tcp_keepalive_time /proc/sys/net/ipv4/tcp_keepalive_intvl /proc/sys/net/ipv4/tcp_keepalive_probes 这3个参数与TCP KeepAlive有关.默认值是: tcp_keepalive_time = 7200 seconds (2 hours) tcp_keepalive_probes = 9 tcp_keepalive_intvl = 75 seconds 意思是如果某个TCP连接在idle 2个小时后,内核才发起probe.如果probe 9次(每次75秒)不成功,内核才彻底放弃,认为该连接已失效.对服务器而言,显然上述值太大. 可调整到: /proc/sys/net/ipv4/tcp_keepalive_time 1800 /proc/sys/net/ipv4/tcp_keepalive_intvl 30 /proc/sys/net/ipv4/tcp_keepalive_probes 3 /proc/sys/net/ipv4/ip_local_port_range 指定端口范围的一个配置,默认是32768 61000,已够大. net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭; 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 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为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套接字拖死。
需要优化的朋友,可以参考上面的参数说明,并根据服务器实际负载来定制你的sysctl.conf文件,下面贴上一个针对nginx内核参数优化的例子,仅供参考(待补充):
net.ipv4.ip_forward = 0 net.ipv4.conf.default.rp_filter = 1 net.ipv4.conf.default.accept_source_route = 0 kernel.sysrq = 0 kernel.core_uses_pid = 1 net.ipv4.tcp_syncookies = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.shmmax = 68719476736 kernel.shmall = 4294967296 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.tcp_sack = 1 net.ipv4.tcp_window_scaling = 1 net.ipv4.tcp_rmem = 4096 87380 4194304 net.ipv4.tcp_wmem = 4096 16384 4194304 net.core.wmem_default = 8388608 net.core.rmem_default = 8388608 net.core.rmem_max = 16777216 net.core.wmem_max = 16777216 net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.tcp_max_orphans = 3276800 net.ipv4.tcp_max_syn_backlog = 262144 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_synack_retries = 1 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_mem = 94500000 915000000 927000000 net.ipv4.tcp_fin_timeout = 1 net.ipv4.tcp_keepalive_time = 30 net.ipv4.ip_local_port_range = 1024 65000
将以上代码添加到sysctl.conf文件的最后,然后执行/sbin/sysctl -p 即可生效。
三、关闭多余tty,释放内存
linux默认会启动6个TTY控制台,都需要常驻占用内存(1tty占用4M多的样子),事实上没必要需要使用这么多tty,个人vps,仅需1~2个tty即可。
Centos5.* 设置tty数量:
①、编辑 /etc/inittab,找到 tty [1-6] 改成 tty [1-2]
②、编辑 /etc/sysconfig/init,同样将tty [1-6] 改成 tty [1-2]
重启系统即可生效(建议先不重启,等后续操作完成一起重启即可);
CentOS 6.* 设置tty数量:
CentOS 6.0 开始 TTY 的配置由 /etc/inittab 更改为 /etc/init/start-ttys.conf,所以上面的第①步变为:
①、编辑 /etc/init/start-ttys.conf,找到 tty [1-6] 改成 tty [1-2]
②同上编辑即可
四、关闭ipv6
ipv6一般都用不到,完全关闭即可。
编辑 /etc/modprobe.d/dist.conf 文件,在最后追加:
alias net-pf-10 off
alias ipv6 off
然后重启系统即可(某些发行版可能是/etc/modprobe.conf文件)。
五、关闭多余启动项
执行 chkconfig --list | grep :on 列出启动项:
然后找到不需要启动的项目,执行 chkconfig 程序名 off 即可.
比如,ip6tables 是ipv6防火墙,用不到,执行 chkconfig ip6tables off ,然后执行service ip6tables stop即可彻底关闭ip6tables这个多余进程。
其余进程,请先查清楚作用,再来操作,以免出错。
暂时就整理这么多,后续发现更多的优化设置,再来追加~
不错 技术贴 会给很多人带来帮助
希望有人会用到~~
额,最近都是linux的节奏啊,我终于备案好了
先恭喜一下拉~~
早点认识你,就可以要你帮忙做个logo了~~
对了,最近我们公司在征集logo,奖品是1000元还是多少,有没有兴趣?
可以啊
要求啥样的
明天发给你,奖金还不错。
好的,不错
Linux系统一直没用过呢 感觉没w好用
博主大人,你好!很想与贵站交换友情链接,盼望长期合作,我站已为您站添加好了友链(网站右侧,如您想要底部我乐意为您修改)。望博主审核,并希望此申请能得到批准!
网站名称:谭晖博客
网站地址:http://www.tanhui.org.cn/
网站简介:谭晖个人博客网站,用于记录生活的点点滴滴,分享人生的平平淡淡,是你我的诉说与交流!
倘若鄙站不符合贵站要求还请博主给予回复和建议,万分感谢!
https://zhang.ge/alliance 谢谢博主的厚爱,请看下玛思阁的友链说明,多谢~~
下午好
都是代码啊