优化Linux生产服务器的经验之谈

【51CTO独家特稿】如何优化自己的Linux生产服务器?本文结合实际的工作经验,总结了优化Linux生产服务器的九大要点。如果有些方法您尚未采用,不妨一试。

一、时间同步

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

vim /etc/crontab

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

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

参考阅读:Linux新手学堂 Crontab命令的实用方法

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

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

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

/sbin/sysctl -p

参考阅读:SYN 攻击原理以及防范技术

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

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

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

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

51CTO编辑推荐:七大实用命令行工具 玩转Linux网络配置

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

vim /etc/sysctl.conf

增加以下几行:

  1. net.ipv4.tcp_fin_timeout = 30
  2. net.ipv4.tcp_keepalive_time = 1200
  3. net.ipv4.tcp_tw_reuse = 1
  4. net.ipv4.tcp_tw_recycle = 1
  5. net.ipv4.ip_local_port_range = 1024 65000
  6. net.ipv4.tcp_max_syn_backlog = 8192
  7. 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服务器,此二项也必须打开:

  1. net.ipv4.tcp_tw_reuse = 1 #允许将TIME-WAIT sockets重新用于新的TCP连接
  2. net.ipv4.tcp_tw_recycle = 1 #开启TCP连接中TIME-WAIT sockets的快速回收

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

/sbin/sysctl -p

五、调整Linux的最大文件打开数

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

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

  1. * soft nofile 60000
  2. * hard nofile 65535

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

相关阅读:ulimit系统命令

六、只开启必须的服务

只开启必须的服务,其它均可关闭。以下列出的服务可开启:
◆crond
◆irqbalance
◆microcode_ctl
◆network
◆random
◆sshd
◆syslog
◆iptables

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

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

chkconfig -- list | awk ‘{print $1 "\t" $7}‘ | grep 5:on

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

service cups stop

chkconfig cups off

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

参考阅读:Linux进程管理命令详解

七、停止ipv6

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

vim /etc/modprobe.conf 

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

  1. alias net-pf-10 off
  2. alias ipv6 off
  3. echo "IPV6INIT=no" >> /etc/sysconfig/network-scripts/ifcfg-eth0

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

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

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

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

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)的时间。所以,建议,内存管理这块顺其自然吧。

时间: 2024-11-07 16:48:05

优化Linux生产服务器的经验之谈的相关文章

Linux生产服务器Shell脚本分享

Linux生产服务器Shell脚本分享 2012-6-6 86市场网 linux 作为一名Linux/unix系统管理员,我经常遇到人问这个问题:shell能做什么?PHP这么强大,为什么不用PHP来完成工作呢?其实相对于PHP这些开发语言而言,shell主要用于数据库备份(SVN备份).计划任务(crontab).服务状态监控.FTP远程备份等.对于这些任务,shell的强大是大家都公认的,这也是每一个Linux/unix系统管理员的基本之一.现在在Windows 2008里也出现了Power

生产服务器环境最小化安装后 Centos 6.5优化配置备忘

本文 centos 6.5 优化 的项有18处: 1.centos6.5最小化安装后启动网卡 2.解决SSH远程链接访问慢优化 3.更新系统源并且升级系统 4.系统时间更新和设定定时任 5.修改ip地址.网关.主机名.DNS 6.关闭selinux,清空iptables 7.创建普通用户并进行sudo授权管理 8.修改SSH端口号和屏蔽root账号远程登陆 9.锁定关键文件系统(禁止非授权用户获得权限) 10.精简开机自启动服务 11.调整系统文件描述符大小 12.设置系统字符集 13.清理登陆

[记录]优化Linux 的内核参数来提高服务器并发处理能力

优化Linux 的内核参数来提高服务器并发处理能力PS:在服务器硬件资源额定有限的情况下,最大的压榨服务器的性能,提高服务器的并发处理能力,是很多运维技术人员思考的问题.要提高Linux 系统下的负载能力,可以使用nginx 等原生并发处理能力就很强的web 服务器,如果使用Apache 的可以启用其Worker 模式,来提高其并发处理能力.除此之外,在考虑节省成本的情况下,可以修改Linux 的内核相关TCP 参数,来最大的提高服务器性能.当然,最基础的提高负载问题,还是升级服务器硬件了,这是

CentOS(5.8/6.4)linux生产环境若干优化实战

CentOS(5.8/6.4)linux生产环境若干优化实战 CentOS系统安装之后并不能立即投入生产环境使用,往往需要先经过我们运维人员的优化才行.在此讲解几点关于Linux系统安装后的基础优化操作. 注意:本次优化都是基于CentOS(5.8/6.4).关于5.8和6.4两者优化时的小区别,我会在文中提及的. 优化条目: 修改ip地址.网关.主机名.DNS等 关闭selinux,清空iptables 添加普通用户并进行sudo授权管理 更新yum源及必要软件安装 定时自动更新服务器时间 精

linux在服务器集群的应用

引言 随着服务器需求量的不断增长,关于操作系统的研究也在近几年进行的异常火热.虽然Unix在服务器领域盘踞多年,因此作为类Unix系统的Linux,近几年在人们视野的曝光率也越来越高.著名的科技杂志<网络世界>从2010年1 月份开始,发起了一项关于"Linux 企业应用现状"的调查报告.通过各种不同的渠道搜集了来自金融产业.电信产业.能源产业.科研教育产业.医疗产业.制造业等许多不同类型的行业,以及众多政府机构的多位IT部门负责人的反馈,渴望通过真实的Linux在产业的真

vue-小爱ADMIN系列文章(二):微信微博等分享,国际化,前端性能优化,nginx服务器部署

最近在做我的小爱ADMIN后台管理系统,结合当前市场后台管理系统对相关功能的需求,我又开始新增了一些新的功能和组件,如分享功能组件,项目国际化功能:项目完成后,部署在nginx服务器,发现首次访问的速度特别慢,严重的影响了用户体验,因此,我又开始进行了一系列的前端性能优化;以及将优化后的项目部署到nginx服务器二级子目录的注意细节. 效果演示地址 github地址 分享功能 背景说明 用微信,微博等做网站的第三方登录及用微信和支付宝进行支付,都需要注册开发者账号和添加网站应用,比较麻烦.另外,

将 Django 应用程序部署到生产服务器

原文出自: http://www.ibm.com/developerworks/cn/opensource/os-django/ 比较有启发性质的一篇文章,会避免很多弯路 Django 是一个基于 Python 的开源 Web 应用程序框架,其目的是使创建数据库驱动的 Web 站点和 Web 应用程序更加容易.开发 Django 应用程序很简单,因为该框架包含了一个开发 Web 服务器.但是这个框架不适合在生产环境中使用,因此需要进一步将 Django 应用程序部署到 Web.在本文中,您将了解

Linux vsftpd服务器

Linux vsftpd服务器 1.1. 概述 Vsftpd是众多ftp中的一种,主要应用于生产环境网络访问共享文件使用.多用于网络环境 FTP 工作模式: 主动模式  客户机向FTP服务器请求连接 随机端口>1024 ,20端口向客户机随机端口连接 被动模式  客户机向FTP服务器连接21端口,并指定客户端端口与20相连 1.2. 软件安装 客户端软件  ftp lftp yum install vsftpd -y 1.3. 服务和端口: 20 传输数据 21 传输验证信息 1.4. 防火墙配

linux后台服务器开发环境部署配置和验证(nginx+apache+php-fpm+FASTCGI(C/C++))

linux后台服务器开发环境部署配置 引言 背景 随着公司互联网业务的不断增多,开发环境变得越来越复杂,为了便于统一服务器端的开发部署环境,特制定本配置文档. 使用软件 CentOS 6.3(Linux version 2.6.32-279.el6.x86_64) gcc (GCC) 4.4.6 20120305 (Red Hat 4.4.6-4) 本次配置 Nginx 1.5.8 Apache 2.4.7 php 5.3.26 目的 构造WEB前端技术架构,web前端的部署结构技术完全完成.