Linux是一种开源操做系统,它支持各类硬件平台,Linux服务器全球知名,它和Windows之间最主要的差别在于,Linux服务器默认状况下通常不提供GUI(图形用户界面),而是命令行界面,它的主要目的是高效处理非交互式进程,响应时间并非那么重要,相反,可以长时间处理高负载才是最关键的。php
Linux高可用服务器集群解决方案让IT系统管理员能够从容应对许多常见的硬件和软件故障,容许多台计算机一块儿工做,为关键服务正常运行提供保障,系统管理员能够不中断服务执行维护和升级。Linux服务器有各类用途,如Web服务器或分支机构内部服务器,CMS或CRS服务器,文件服务器(为Windows和/或Linux用户服务),VoIP电话服务器,邮件或域名服务器,数据库服务器,云计算配置中的基础设施节点等。ios
Linux功能丰富、强大、灵活,你能够用它完成各类任务,在这篇文章中,咱们将讨论一些提升Linux服务器性能的技巧。算法
一、为磁盘I/O调整Linux内核电梯算法数据库
在选择文件系统后,有一些内核和挂载选项可能会影响到它的性能表现,其中一个内核设置是电梯算法,经过调整电梯算法,系统能够平衡低延迟需求,收集足够的数据,以有效地组织对磁盘的读和写请求。apache
二、禁用没必要要的守护进程,节省内存和CPU资源编程
每台服务器上都运行着许多守护进程或服务,而具备讽刺意味的是,有不少一般不是必需的,这些服务没有发挥做用,但却消耗了宝贵的内存和CPU时间。此外,它们可能将服务器置于危险境地,多运行一个服务就等于多向黑客打开一扇长驱直入的门,所以,你应该将它们从服务器移除,禁用它们最大的好处是能够加快启动时间,释放内存。另外,你能够减小CPU须要处理的进程数,禁用它们的另外一个好处是加强服务器的安全性,由于越少的守护进程意味着可被攻击和利用的漏洞越少。浏览器
下面是一些应该被禁用的Linux守护进程,默认状况下,它们都是自动运行的:缓存
序号安全 |
守护进程性能优化 |
描述 |
1 |
Apmd |
高级电源管理守护进程 |
2 |
Nfslock |
用于NFS文件锁定 |
3 |
Isdn |
ISDN Moderm支持 |
4 |
Autofs |
在后台自动挂载文件系统(如自动挂载CD-ROM) |
5 |
Sendmail |
邮件传输代理 |
6 |
Xfs |
X Window的字体服务器 |
三、关掉GUI
通常说来,Linux服务器是不须要GUI的,全部管理任务均可以在命令行下完成,所以最好关掉GUI,重定向X显示或经过一个Web浏览器界面显示。为了禁用GUI,“init level(启动级别)”应该被设置为3(命令行登陆),而不是5(图形登陆),若是须要GUI,能够随时运行startx进入图形用户界面。
四、清理不须要的模块或功能
在服务器软件包中有太多被启动的功能或模块其实是不须要的(如Apache中的许多功能模块),仔细查看Apache配置文件,肯定FrontPage支持或其它额外的模块是否真的要用到,若是不须要,应该绝不犹豫地从服务器禁用掉,这样有助于提升系统内存可用量,腾出更多资源给那些真正须要的软件,让它们运行得更快。
五、禁用控制面板
在Linux中,有许多流行的控制面板,如Cpanel,Plesk,Webmin和phpMyAdmin等,相信每一个Linux初级用户都很喜欢这些控制面板,可是,禁用掉这些软件包能够释放出大约120MB内存,所以,我强烈建议禁用掉这些控制面板,除非它们真的须要用到,它们能够经过PHP脚本(尽管有些不安全),或命令行命令启用,这样作后,内存使用量大约能够降低30-40%。
六、改善Linux Exim服务器性能
有许多种方法改善服务器的Exim性能,其中一个办法是使用DNS缓存守护进程,它能够下降解析DNS记录须要的带宽和CPU时间,DNS缓存经过消除每次都从根节点开始查找DNS记录的需求,从而改善网络性能,Djbdns是一个很是强大的DNS服务器,它具备DNS缓存功能,Djbdns比BIND DNS服务器更安全,性能更好,能够直接经过http://cr.yp.to/下载,或经过Red Hat提供的软件包得到。
七、使用AES256加强gpg文件加密安全
为了提升备份文件或敏感信息的安全,许多Linux系统管理员都会使用gpg进行加密,在使用gpg时,最好指定gpg使用AES256加密算法,AES256使用256位密钥,它是一个开放的加密算法,美国国家安全局(NSA)都使用它保护绝密信息,没有什么比它更安全的了。
八、远程备份服务安全
安全是选择远程备份服务最重要的因素,大多数系统管理员都惧怕两件事:(黑客)能够删除备份文件,不能从备份恢复系统。
为了保证备份文件100%的安全,备份服务公司提供远程备份服务器,使用scp脚本或RSYNC经过SSH传输数据,这样,没有人能够直接进入和访问远程系统,所以,也没有人能够从备份服务删除数据。在选择远程备份服务提供商时,最好从多个方面了解其服务强壮性,若是能够,能够亲自测试一下。
九、更新默认内核参数设置
为了顺利和成功运行企业应用程序,如数据库服务器,可能须要更新一些默认的内核参数设置,例如,2.4.x系列内核消息队列参数msgmni有一个默认值(例如,共享内存,或shmmax在Red Hat系统上默认只有33554432字节),它只容许有限的数据库并发链接,下面为数据库服务器更好地运行提供了一些建议值(来自IBM DB2支持网站):
kernel.shmmax=268435456 (32位) kernel.shmmax=1073741824 (64位) kernel.msgmni=1024 fs.file-max=8192 kernel.sem=”250 32000 32 1024″
十、优化TCP
优化TCP协议有助于提升网络吞吐量,跨广域网的通讯使用的带宽越大,延迟时间越长时,建议使用越大的TCP Linux大小,以提升数据传输速率,TCP Linux大小决定了发送主机在没有收到数据传输确认时,能够向接收主机发送多少数据。
十一、选择正确的文件系统
使用ext4文件系统取代ext3
● Ext4是ext3文件系统的加强版,扩展了存储限制
●它具备日志功能,保证高水平的数据完整性(在非正常关闭事件中)
●在非正常关闭和重启时,它不须要检查磁盘(这是一个很是耗时的动做)
●更快的写入速度,ext4日志优化了硬盘磁头动做
十二、使用noatime文件系统挂载选项
在文件系统启动配置文件fstab中使用noatime选项,若是使用了外部存储,这个挂载选项能够有效改善性能。
1三、调整Linux文件描述符限制
Linux限制了任何进程能够打开的文件描述符数量,默认限制是每进程1024,这些限制可能会阻碍基准测试客户端(如httperf和apachebench)和Web服务器自己得到最佳性能,Apache每一个链接使用一个进程,所以不会受到影响,但单进程Web服务器,如Zeus是每链接使用一个文件描述符,所以很容易受默认限制的影响。
打开文件限制是一个能够用ulimit命令调整的限制,ulimit -aS命令显示当前的限制,ulimit -aH命令显示硬限制(在未调整/proc中的内核参数前,你不能增长限制)。
Linux第三方应用程序性能技巧
对于运行在Linux上的第三方应用程序,同样有许多性能优化技巧,这些技巧能够帮助你提升Linux服务器的性能,下降运行成本。
1四、正确配置MySQL
为了给MySQL分配更多的内存,可设置MySQL缓存大小,要是MySQL服务器实例使用了更多内存,就减小缓存大小,若是MySQL在请求增多时停滞不动,就增长MySQL缓存。
1五、正确配置Apache
检查Apache使用了多少内存,再调整StartServers和MinSpareServers参数,以释放更多的内存,将有助于你节省30-40%的内存。
提升监控/故障排除能力的技巧
下面是一些提升Linux服务器监控和故障排除的技巧:
1六、分析Linux服务器性能
提升系统效率最好的办法是找出致使总体速度降低的瓶颈并解决掉,下面是找出系统关键瓶颈的一些基本技巧:
● 当大型应用程序,如OpenOffice和Firefox同时运行时,计算机可能会开始变慢,内存不足的出现概率更高。
● 若是启动时真的很慢,多是应用程序初次启动须要较长的加载时间,一旦启动好后运行就正常了,不然极可能是硬盘太慢了。
●CPU负载持续很高,内存也够用,但CPU利用率很低,可使用CPU负载分析工具监控负载时间。
1七、学习5个Linux性能命令
使用几个命令就能够管理Linux系统的性能了,下面列出了5个最经常使用的Linux性能命令,包括top、vmstat、iostat、free和sar,它们有助于系统管理员快速解决性能问题。
(1)top
Top命令不只显示了当前内核服务的任务,还显示了许多关于主机状态的统计数据,默认状况下,它每隔5秒自动更新一次显示的数据(这个时间间隔是能够配置的),经过top命令,咱们能够得知几个结果,如:当前正常运行时间,系统负载,进程数量和内存使用率,此外,这个命令也显示了那些使用最多CPU时间的进程(包括每一个进程的各类信息,如运行用户,执行的命令等)。
(2)vmstat
Vmstat命令提供当前CPU、IO、进程和内存使用率的快照,它和top命令相似,自动更新数据,如:
$ vmstat 10
(3)iostat
Iostat命令(在Ubuntu,Red Hat/Fedora上包含在sysstat软件包中)提供三个报告:CPU利用率、设备利用率和网络文件系统利用率,不加任何参数运行时,iostat将显示这三个报告,使用-c,-d和-h参数能够分别独立显示这三个报告。
(4)free
Free命令显示主内存和交换空间的内存统计数据,指定-t参数能够显示总内存数量,指定-b参数能够按字节为单位进行显示,使用-m则以兆为单位显示,默认状况下是以千字节为单位的。
Free命令也可使用-s参数加一个延迟时间(单位:秒)连续运行,如:
$ free -s 5
(5)sar
Sar命令收集,查看和记录性能数据,这个命令比前面几个命令历史更悠久,它能够收集和显示较长周期的数据。
1八、将日志文件转移到内存中
当一台机器处于运行中时,最好是将系统日志放在内存中,当系统关闭时再将其复制到硬盘,当你运行一台开启了syslog功能的笔记本电脑或移动设备时,ramlog能够帮助你提升系统电池或移动设备闪存驱动器的寿命,使用ramlog的一个好处是,不用再担忧某个守护进程每隔30秒向syslog发送一条消息,放在之前,硬盘必须随时保持运转,这样对硬盘和电池都很差。
1九、先打包,后写入
在内存中划分出固定大小的空间保存日志文件,这意味着笔记本电脑硬盘不用一直保持运转,只有当某个守护进程须要写入日志时才运转,注意ramlog使用的内存空间大小是固定的,不然系统内存会很快被用光,若是笔记本使用固态硬盘,能够分配50-80MB内存给ramlog使用,ramlog能够减小许多写入周期,极大地提升固态硬盘的使用寿命。
20、通常调优技巧
尽量使用静态内容替代动态内容,若是你在生整天气预告,或其它每隔1小时就必须更新的数据,最好是写一个程序,每隔1小时生成一个静态的文件,而不是让用户运行一个CGI动态地生成报告。
为动态应用程序选择最快最合适的API,CGI可能最容易编程,但它会为每一个请求产生一个进程,一般,这是一个成本很高,且没必要要的过程,FastCGI是更好的选择,和Apache的mod_perl同样,均可以极大地提升应用程序的性能。