linux apache 性能调优 8G 8核 的服务器

linux apache 性能调优 8G 8核 的服务器,第1张

[检测工具]

为了得到完整的调试结果,建议你采用 ApacheBench 或者 >

检测 Apache ,采用 top d 1 显示所有进程的 CPU 和内存情况。另外,还采用 apachectl status 命令

[硬件优化]

1、升级硬件的一般规则:对于 PHP 脚本而言,主要的瓶颈是 CPU ,对于静态页面而言,瓶颈是内存和网络。一台 400 Mhz 的普通奔腾机器所下载的静态页面就能让 T3 专线(45Mbps)饱和。

2、采用 hdparm 来优化磁盘,一般能提升 IDE 磁盘读写性能 200%,但是对 SCSI 硬盘也有效果。(不同类型的硬盘对比)

[策略优化]

3、Apache 处理 PHP 脚本的速度要比静态页面慢 2-10 倍,因此尽量采用多的静态页面,少的脚本。

4、PHP 脚本如果不做缓冲,每次调用都需要编译,因此,安装一个 PHP 缓冲产品能提升 25-100% 的性能。

5、如果你采用了 Linux 系统,建议升级内核到 24,因为静态页面由内核服务。

6、另外一项缓冲技术是把不常修改的 PHP 页面采用 HTML 缓冲输出。

7、不要在 Web 服务器上运行 X-Windows ,关掉没有必要运行的进程。

8、如果能够用文本就不要用图像,尽量减小的尺寸。

9、分散负载,把数据库服务器放到另外的机器上去。采用另外低端的机器服务和 HTML 页面,如果所有的静态页面在另外一台服务器上处理,可以设置 >

10、以上所有的方法都是针对单机而言的,如果你觉得系统还是不够快,可以采用集群,负载均衡,缓冲技术。采用 Squid 作为缓冲,配置 Squid 的方法。

[编译优化]

11、把基于文件的会话切换到基于共享内存的会话。编译 PHP 时采用 --with-mm 选项,在 phpini 中设置 set sessionsave_handler=mm 。这个简单的修改能让会话管理时间缩短一半。

12、采用最新版本的 Apache ,并把 PHP 编译其中,或者采用 DSO 模式,不要采用 CGI 方式。

13、编译 PHP 时,建议采用如下的参数:
--enable-inline-optimization --disable-debug

[配置优化]

14、修改 >

15、如果网络拥挤,CPU 资源不够用,采用 PHP 的 HTML 压缩功能:
output_handler = ob_gzhandler
PHP 404 的用户请不要使用,因为存在内存泄漏问题。

16、修改 >

17、采用数据库的持久连接时,不要把 MaxRequestsPerChild 设置得太大。

[第三方软件优化]

18、如果喜欢从修改 Apache 源码入手,可以安装 lingerd。在页面产生和发送后,每个 Apache 进程都会浪费一段时光在客户连接上,Lingerd 能接管这项工作,让 Apache 迅速服务下一个客户请求。

19、如果你足够勇敢的话,还可以采用 Silicon Graphics 的 Accelerated Apache 补丁。这个工程能使 Apache 13 快 10 倍,使 Apache 20 快 4 倍。

安装一个 PHP 缓冲产品能提升 25-100% 的性能。

[Linux系统优化]

1清理服务器磁盘碎片:

不论Linux文件系统采用什么文件格式(ext3、JFS、XFS、ReiserFS )、何种类型的硬盘(IDE 、SCSI),随着时间的推移文件系统都会趋向于碎片化。ext3、JFS等高级文件系统可以减少文件系统的碎片化,但是并没有消除。在繁忙的数据库服务器中,随着时间的过去,文件碎片化将降低硬盘性能,硬盘性能从硬盘读出或写入数据时才能注意到。时间长了会发现每个磁盘上确实积累了非常多的垃圾文件,释放磁盘空间可以帮助系统更好地工作。Linux最好的整理磁盘碎片的方法是做一个完全的备份,重新格式化分区,然后从备份恢复文件。但是对于7×24小时工作关键任务服务器来说是比较困难的。Kleandisk是一个高效的磁盘清理工具,它能把磁盘上的文件分成不同的"组",比如把所有的"core"文件归成一组(Group),这样要删除所有core文件时只要删除这个组就行了。core文件是当软件运行出错时产生的文件,它对于软件开发人员比较有用,对于其他用户(比如电子邮件服务器)却没有任何意义。因此,如果没有软件开发的需要,见到core文件就可以将其删除。

2、开启硬盘DMA

现在使用的IDE硬盘基本支持DMA66/100/133(直接内存读取)但是Linux发行版本安装后一般没有打开,可以 /etc/rcd/rclocal 最後面加上一行: /sbin/hdparm -d1 –x66 -c3 -m16 /dev/hda 这样以后每次开机,硬盘的 DMA 就会开启,不必每次手动设定。添加前后你可以使用命令:hdparm -Tt /dev/hda 来测试对比一下。

3、调整缓冲区刷新参数

Linux内核中,包含了一些对于系统运行态的可设置参数。缓冲刷新的参数可以通过调整 /proc/sys/vm/bdflush文件来完成,这个文件的格式是这样的:

每一栏是一个参数,其中最重要的是前面几个参数。第一个数字是在"dirty"缓冲区达到多少的时候强制唤醒bdflush进程刷新硬盘,第二个数字是每次让bdflush进程刷新多少个dirty块。所谓dirty块是必须写到磁盘中的缓存块。接下来的参数是每次允许bd flush将多少个内存块排入空闲的缓冲块列表。 以上值为RHEL 40中的缺省值。可以使用两种方法修改:

(1)使用命令

# echo "100 128 128 512 5000 3000 60 0 0">/proc/sys/vm/bdflush

并将这条命令加到/etc/rcd/rclocal文件中去。

(2)在/etc/sysctlconf 文件中加入如下行:

以上的设置加大了缓冲区大小,降低了bdflush被启动的频度,VFS的缓冲刷新机制是Linux文件系统高效的原因之一。

4、优化输入输出

I/O程序对Linux系统性能也是相当重要的,网络硬件I/O对服务器尤其重要。现在大多数Linux服务器使用10/100 Mb以太网。如果有较重的网络负载,则可以考虑千兆以太网卡。如果没有能力购买千兆网卡的话:可以使用多块网卡虚拟成为一块网卡,具有相同的IP地址。这项技术,在Linux中,这种技术称为Bonding。Bonding在Linux24以上内核中已经包含了,只需要在编译的时候把网络设备选项中的 Bonding driver support选中见图1。当然利用Bonding技术配置双网卡绑定的前提条件是两块网卡芯片组型号相同,并且都具备独立的BIOS芯片。

然后,重新编译核心,重新起动计算机,执行如下命令:

现在两块网卡已经象一块一样工作了。这样可以提高集群节点间的数据传输bonding对于服务器来是个比较好的选择,在没有千兆网卡时,用两块100兆网卡作bonding,可大大提高服务器到交换机之间的带宽但是需要在交换机上设置连接bonding网卡的两个子口映射为同一个虚拟接口。编辑 /etc/modulesconf文件,加入如下内容,以使系统在启动时加载Bonding模块。

“mode”的值表示工作模式,共有0、1、2和3四种模式,这里设定为0。Bonding工作在负载均衡(Load Balancing (round-robin))方式下,即两块网卡同时工作,这时理论上Bonding能提供两倍的带宽。Bonding运行在网卡的混杂(Promisc)模式下,而且它将两块网卡的MAC地址修改为一样的。混杂模式就是网卡不再只接收目的硬件地址是自身MAC地址的数据帧,而是可以接收网络上所有的帧。

5、减少虚拟终端机的数量。

Linux安装后系统默认是6个虚拟终端机,也就是 CTRL+ALT F1~F6 那六个,作为服务器使用可以关掉其中四个,只留下 CTRL+ALT F1~F2,大约省下 4 Mbytes 的内存,但是这样一来,X-Window 会从原来的 CTRL+ALT F7 变成 CTRL+ALT F3 。 修改 /etc/inittab 中,将 mingetty 3 ~6 全部加上 # 字号 。

6 关闭一些不用的服务

Linux服务器在启动时需要启动很多系统服务,它们向本地和网络用户提供了Linux的系统功能接口,直接面向应用程序和用户。提供这些服务的程序是由运行在后台的守护进程(daemons)来执行的。守护进程是生存期长的一种进程。它们独立于控制终端并且周期性的执行某种任务或等待处理某些发生的事件。他们常常在系统引导装入时启动,在系统关闭时终止。linux系统有很多守护进程,大多数服务器都是用守护进程实现的。如Web服务>单的说,Linux是Unix克隆(Unix clone)或Unix风格(Unix alike)
*** 作系统(OS),在原代码级上兼容绝大部分Unix标准(指的是IEEE
POSIX,System V,BSD),是一个支持多用户, 多进程,多线程,实时性
较好的功能
强大而稳定的 *** 作系统它可以运行在x86 PC,Sun Sparc,Digital Alpha
,680x0,PowerPC, MIPS等平台上,可
以说Linux是目前运行硬件平台最多的 *** 作系统 Linux最大的特点在于
它是GNU(Gnu's Not Unix----有点分形与混沌的意味----无限自包含,
简单的说GNU是一种自由软件体系)的一员,遵循公共版权许可证(GPL),秉承
"自由的思想,开放的源码"的原则,成千上万的专家/爱好者通过Internet
在不断地完善并维护它,可以说Linux是计算机爱好者自己的 *** 作系统
追述Linux的历史直到1990年,Linus Torvalds还是芬兰赫尔辛基大
学的一名学生,最初是用汇编语言写了一个在80386保护模式下处理
多任务切换的程序,后来从Minix(Andy Tanenbaum教授所写的很小
的Unix *** 作系统,主要用于 *** 作系统教学)得到灵感,进一步产生了
自认为狂妄的想法----写一个比Minix更好的Minix,于是开始写了
一些硬件的设备驱动程序,一个小的文件系统,,这样001
版本的Linux就出来了,但是它只具有 *** 作系统内核的勉强的雏形,
甚至不能运行,你必须在有Minix的机器上编译以后才能玩这时候
Linus已经完全着迷而不想停止,决定踢开Minix,于是在1991年10
月5号发布Linux 002版本,在这个版本中已经可以运行bash
(the GNU Bourne Again Shell----一种用户与 *** 作系统内核通讯的软件)
和gcc(GNU C 编译器)从一开始,Linus就决定自由扩散Linux,包括原代码,
他在composminix新闻讨论组里发布Linux 002时写到:
"Do you pine for nice days of Minix-11, when mem were men
and wrote their own device drivers Are you without a nice
project and just dying to cut your teeth on a OS you can
try to modify for your needs Are you finding it frustrsting
when everything works on Minix No more all-nighters to
get a nifty program working Then this post might be just
for you
"As I mentioned a month ago, I'm working on a free version
of a Minix-lookalike for AT-386 computers It has finally
reached the stage where it's even usable(though may not be
depending on what you want),and I am willing to put out
the sources for wider distribution It is just version
002 but I've successfully run bash,gcc,gnu-make,
gnu-sed,compress,etcunder it"
随即Linux引起黑客们(hacker)的注意,通过计算机网络加入了Linux的
内核开发,Linux倾向于成为一个黑客的系统----直到今天,在Linux社区
里内核的开发被认为是真正的编程由于一批高水平黑客的加入,使Linux
发展迅猛,到1993年底94年初,Linux 10终于诞生了! Linux 10已经是一
个功能完备的 *** 作系统,而且内核写得紧凑高效,可以充分发挥硬件的性能,
在4M内存的80386机器上也表现得非常好,至今人们还在津津乐道于此,
不过自从21xx系列的内核Linux开始走高端的路子----硬件的发展太快了,
但是Linux不会失去它的本色Linux具有良好的兼容性和可移植性,大约在
13版本之后,开始向其他硬件平台上移植,包括号称最快的CPU---Digital
Alpha(至少目前主频是最高的)所以不要总把Linux与低档硬件平台联系
到一块,Linux发展到今天,这是一个误区,它只是将硬件的性能充分发挥
出来而已,Linux必将从低端应用横扫到高端应用!
在Linux的发展历程上还有一件重要的事:Linux加入GNU并遵循公共
版权许可证(GPL)此举大大加强了GNU和Linux,几乎所有应用的GNU
库/软件都移植到Linux,完善并提高了Linux的实用性,而GNU有了一
个根基,我现在也搞不清楚到底是GNU Linux呢还是基于Linux的GNU
:-) 更重要的是遵循公共版权许可证,在继承自由软件的精神的前
提下,不再排斥对自由软件的商业行为(如把自由软件打包以光盘形
式出售),不排斥商家对自由软件进一步开发,不排斥在Linux上开发
商业软件从此Linux又开始了一次飞跃,出现了很多的Linux发行版
,如Slackware,Redhat,Suse,TurboLinux,OpenLinux等十多种,而且
还在增加,注意你不能说"Redhat Linux""Suse Linux""Slackware
Linux"等等,Linux主要指 *** 作系统内核,对所有发行版内核原代码
都是一样的(但集成的内核版本可能因发行时间不同而有所不同)
还有一些公司在Linux上开发商业软件或把其他Unix平台的软件移
植到Linux上来,如今很多IT业界的大腕如IBM,Intel,Oracle,Infomix
,Sysbase,Corel,Netscape,CA,Novell等都宣布支持Linux! 商家的
加盟弥补了纯自由软件的不足和发展障碍,Linux迅速普及到广大计
算机爱好者,并且进入商业应用,正是打破某些公司垄断文化圈的希
望所在!!
Linux是爱好者们通过Internet协同开发出来的,当然它的网络功能十
分强大,比如你可以通过ftp,nfs等来安装Linux,用它来做网关等等
随着Linux的发展衍生出来的应用恐怕出乎Linus本人最初的预料,
如有人用它来做路由器,有人来做嵌入式系统,有人来做实时性系统
常有新手问Linux能做什么,其实它不象那些中看不中用的 *** 作
系统,不在于你用它能干什么,而在于你想干什么!
Linux的兴起还给人们很多启迪与思考,如集市式软件开发的讨论,
又如自由软件的精神

1linux本身是网络 *** 作系统,支持所有TCP/IP协议,网络功能是内核中六大模块之一
2linux和unix兼容,unix是早期的服务器霸主,现在份额逐渐让给linux了
3linux是多用户多进程系统,windows是单用户伪多用户系统,不适合服务器
4互联网开放,linux也是开放的,像apach这样的开放软件优先在linux上实现
5linux是模块化的,可裁减,出现问题只要关闭一个模块,windows只有微软自己才会裁减
6linux的用户管理严格,病毒难以破坏,windows漏洞百出,用户管理混乱
7linux硬件需求小,大部分版本免费,总得成本低
8windows常会蓝屏、需要磁盘清理,linux下kernel panic几年一遇,也可以好几年不关机,一两年一次磁盘清理
9win的图形界面浪费了太多资源,linux使用x-window systerm,平时根本不用开图形界面

尽管Unix/Linux是服务器领域的王者,连微软都在Windows10上都内嵌了Linux子系统,而且Windows10针对于cmd做出了很多优化,就是为了让Windows更加接近Unix/Linux的 *** 作哲学,不过还是有很多开发者用Windows *** 作系统,而WindowsServer依然是很多中小企业的主要服务器系统。

WindowsServer对中小企业非常友好

对于中小企业来说,WindowsServer依然是成本更低、更加友好的解决方案,而且经过这么多年的研发,WindowsServer已经变得非常成熟、稳定。当然大的互联网企业基本上还是会用Linux/Unix,这些企业都有足够专业的运维团队,而且拥有者数千万数亿甚至数十亿的用户,这样的企业有钱也有必要用Linux/Unix解决方案。

根据IDC的调查数据显示,全世界的Web服务器中, *** 作系统为Linux的占据了232%,Unix的占比为151%,而WindowsServer的份额占比则在50%左右,WindowsServer的市场份额是比较令人吃惊的。另一家叫做W3Techs的调查数据显示,在Alexa排名前1000万Web服务器中,超过674%的使用的是Unix/Linux *** 作系统,326%使用的是Windows系统,剩下还有01%使用的是Mac,Windows在服务器市场依然表现不错。

如果你要使用Linux系统作为服务器系统,你可能往往需要非常专业的运维团队来管理这些服务器,当然你的企业规模到了一定程度之后,Linux上的命令行 *** 作能够帮助你在大规模集群服务器管理下获得更加高效的体验。

不过中小企业没有那么专业的运维人员,对于管理人员需求较低,基本上一个初级管理人员就能够轻松管理几百台WindowsServer服务器。WindowsServer对于想要学习服务器以及学生是免费的,WindowsServer的价格相对于SUSE、RedHat这些Linux企业发行版其实是要更实惠一点的。另外一点就是微软的开发者文档应该是最好的,一个MSDNLibrary基本上可以把所有的开发者文档秒杀了。而且WindowsServer在部署和配置上非常友好,而且拥有出色的多语言GUI *** 作界面,你可以轻松的配置各种角色,轻松的使用IIS服务器。

使用微软

NET

和WindowsServer解决方案的企业

不过现在有些企业开始转了,早些年京东、StackOverflow就是用的

NET

解决方案,后来慢慢转向了Java,目前还在用的企业ESPN、当当网,工商银行、招商银行、农业银行、中国银行、携程、艺龙、同程、前程无忧、智联招聘、汽车之间、易车等企业都在用微软的解决方案。

在桌面 *** 作系统领域,Windows独领风骚是绝对的行业第一,而且服务器领域尽管大的科技公司、尤其是互联网公司肯定不会用WindowsServer,不过盖不住中小企业多,因此WindowsServer也是服务器 *** 作系统领域份额比较大的,而且这个份额一直在稳定的增长中。

总之即使在服务器领域,Windows相对于Linux也不是一文不值,反而在很多方面占据着优势,尤其是在易用性和成本上并不比Linux差,当企业做到一定规模了,你有足够多的运维预算了,比如BAT这种级别的企业基本上运维预算都是数十亿级别的,那么你当然应该选择更好的Unix/Linux解决方案。

本文为字节跳动签约作者EmacserVimer悟空问答原创文章,未经允许转载、抄袭必究!

与Windows *** 作系统软件一样,Linux也是一个 *** 作系统软件。但与Windows不同的是,Linux是一套开放源代码程序的,并可以自由传播的类Unix *** 作系统软件,随着信息技术的更新变化,Linux应用领域已趋于广泛。

1、IT服务器Linux系统应用领域

如今的IT服务器领域是Linux、Unix、Windows三分天下,Linux系统可谓是后起之秀,尤其是近几年,服务器端Linux *** 作系统不断地扩大着市场份额,每年增长势头迅猛,并对Windows及Unix服务器市场的地位构成严重的威胁。

Linux作为企业级服务器的应用十分广泛,利用Linux系统可以为企业构架>

随着Linux在服务器领域的广泛应用,从近几年的发展来看,该系统已经渗透到了电信、金融、政府、教育、银行、石油等各个行业,同时各大硬件厂商也相继支持Linux *** 作系统。这一切都在表明,Linux在服务器市场的前景是光明的。同时,大型、超大型互联网企业都在使用Linux系统作为其服务器端的程序运行平台,全球及国内排名前十的网站使用的几乎都是Linux系统,Linux已经逐步渗透到各个领域的企业里。

2、嵌入式Linux系统应用领域

由于Linux系统开放源代码,功能强大、可靠、稳定性强、灵活,而且具有极大的伸缩性,再加上它广泛支持大量的微处理器体系结构、硬件设备、图形支持和通信协议,因此,在嵌入式应用的领域里,从因特网设备到专用的控制系统,Linux *** 作系统都有很广阔的应用市场。特别是经过这几年的发展,它已经成功地跻身于主流嵌入式开发平台。例如,在智能手机领域,Android
Linux已经在智能手机开发平台牢牢地占据了一席之地。

3、个人桌面Linux应用领域

所谓个人桌面系统,其实就是我们在办公室使用的个人计算机系统,例如:Windows XP、Windows
7、MAC等。Linux系统在这方面的支持也已经非常好了,完全可以满足日常的办公及家用需求,例如:

浏览器上网浏览。

办公室软件处理数据。

收发电子邮件。

实时通信。

文字编辑。

多媒体应用。

虽然Linux个人桌面系统的支持已经很广泛了,但是在当前的桌面市场份额还远远无法与Windows系统竞争,这其中的障碍可能不在于Linux桌面系统产品本身,而在于用户的使用观念、 *** 作习惯和应用技能,以及曾经在Windows上开发的软件的移植问题。

12并行技术
这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux *** 作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。
2使用MPICH构建一个四节点的集群系统
这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux *** 作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。
21 所需设备
1)4台采用Pentium II处理器的PC机,每台配
置64M内存,2GB以上的硬盘,和EIDE接口的光盘驱动器。
2)5块100M快速以太网卡,如SMC 9332 EtherPower 10/100(其中四块卡用于连接集群中的结点,另外一块用于将集群中的其中的一个节点与其它网络连接。)
3)5根足够连接集群系统中每个节点的,使用5类非屏蔽双绞线制作的RJ45缆线
4)1个快速以太网(100BASE-Tx)的集线器或交换机
5)1张Linux安装盘
22 构建说明
对计算机硬件不熟的人,实施以下这些构建步骤会感到吃力。如果是这样,请找一些有经验的专业人士寻求帮助。
1 准备好要使用的采用Pentium II处理器的PC机。确信所有的PC机都还没有接上电源,打开PC机的机箱,在准备与网络上的其它设备连接的PC机上安装上两块快速以太网卡,在其它的 PC机上安装上一块快速以太网卡。当然别忘了要加上附加的内存。确定完成后盖上机箱,接上电源。
2 使用4根RJ45线缆将四台PC机连到快速以太网的集线器或交换机上。使用剩下的1根RJ45线将额外的以太网卡(用于与其它网络相连的那块,这样机构就可以用上集群)连接到机构的局域网上(假定你的机构局域网也是快速以太网),然后打开电源。
3 使用LINUX安装盘在每一台PC机上安装。请确信在LINUX系统中安装了C编译器和C的LIB库。当你配置TCP/IP时,建议你为四台PC分别指定为19216811、19216812、19216813、19216814。第一台PC为你的服务器节点(拥有两块网卡的那台)。在这个服务器节点上的那块与机构局域网相连的网卡,你应该为其指定一个与机构局域网吻合的IP地址。
4当所有PC都装好Linux系统后,编辑每台机器的/etc/hosts文件,让其包含以下几行:
19216811 node1 server
19216812 node2
19216813 node3
19216814 node4
编辑每台机器的/etc/hostsequiv文件,使其包含以下几行:
node1
node2
node3
node4
$p#
以下的这些配置是为了让其能使用MPICH’s p4策略去执行分布式的并行处理应用。
1 在服务器节点
,建一个/mirror目录,并将其配置成为NFS服务器,并在/etc/exports文件中增加一行:
/mirror node1(rw) node2(rw) node3(rw) node4(rw)
2 在其他节点上,也建一个/mirror目录,关在/etc/fstab文件中增加一行:
server:/mirror /mirror nfs rw,bg,soft 0 0
3 /mirror这个目录从服务器上输出,装载在各个客户端,以便在各个节点间进行软件任务的分发。
4 在服务器节点上,安装MPICH。MPICH的文档可在
5任何一个集群用户(你必须在每一个节点新建一个相同的用户),必须在/mirror目录下建一个属于它的子目录,如 /mirror/username,用来存放MPI程序和共享数据文件。这种情况,用户仅仅需要在服务器节点上编译MPI程序,然后将编译后的程序拷贝到在/mirror目录下属于它的的子目录中,然后从他在/mirror目录下属于它的的子目录下使用p4 MPI策略运行MPI程序。
23 MPICH安装指南
1如果你有gunzip,就d下载mpichtargz,要不然就下载mpichtarZ。你可以到>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/12602073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存