服务器选购怎样利用SEO优化规则
服务器选购怎样利用SEO优化规则?现在不管是搭建网站还是网站优化,都非常关注SEO规则,这也是为什么专业搭建的网站收费比较贵的原因,这里就为大家总结一下服务器选购怎样利用SEO优化规则。
当站长买到主机上含有一些被搜索引擎判定为是作弊网站的空间时,也会对自己的网站造成一定影响,连带责任,同一IP地址上网站会存在一定联系,所以会连带受到惩罚。在这样的空间上,搜索引擎优化者很难发现是否是自己的网站出现问题还是被连累了。为避免这样的情况发生,可以在购买主机空间的时候用“同IP网站查询工具”对整个IP地址上的网站进行检查。
由上可见,一个主机空间的好坏对seo是起到一定影响的。站长在购买主机可以从以下几点出发:
1选择有备份功能的空间主机。这个至关重要,当服务器出现问题时,如果没有备份数据造成数据丢失那真是有一种万念俱灰的感觉。养成良好的备份习惯也是每个站长需要学习的。
2对于网站的长期发展,可以考虑支持子域名的主机空间。子域名一般用于扩充网站内容,对网站发展可能性,对搜索引擎来说,这都是很重要的。
3可以自己定义404页面。404就是为了更好的留住用户,对于购买独立主机来说,404页面可以自己进行定义,但是对于购买虚拟空间主机来说,404页面就不一定自己可以进行定义了,所以在购买主机空间时候要向服务商进行咨询是否可以自己定义404页面。
4不管是独立主机空间还是虚拟主机空间,网站所有者不能随时的和计算机进行接触。在突发情况下,服务响应时间显得很重要。通常情况下,正规的服务时间都是724小时不间断的,响应时间是在5到10分钟的,超过这个响应时间就要考虑重新选择主机空间了。
服务器选购怎样利用SEO优化规则?看过了以上文章内容,相信你对于服务器选购怎样利用SEO优化规则肯定已经在上文中找到了答案,有什么不懂的可以直接联系小编为你答疑解惑。
服务器服务器选WEB服务器的优化方法简介
在对Web服务器进行优化时要根据真实的Web应用系统的情况和特征来采取有针对性地优化方案。首先根据不同的网络特性来看:在局域网中,降低M T U (最大传输单位)值对可以避免复制数据和求校验,而通过优化select系统调用或在Socket事件处理器中执行计算可以优化请求并发管理,利用HTTP1.1持续连接等都可以使系统性能得到相应的改善,但在广域网的环境下却没有什么大的作用,有的甚至恰恰相反。
例如:减少用户连接的MTU会增加服务器处理开销,采用网络延迟、带宽限制和使用HTTP1.1的持续连接在广域网中不会对服务器性能有什么大的影响。在广域网中,终端用户的请求的等待时间依赖于与网络延迟的程度,连接带宽限制情况。对于广域网,软硬中断在网络处理中占有很大的分量,所以采用适应的中断处理机制将会给服务器的响应能力带来很大的`好处;将服务器定位在内核和将基于进程设计改为基于事务处理也可以不同程度的提高服务器的性能。
关于Web负载,除了对Web负载的特征进行分析以便在评测时更好地再现真实负载之外,还要考虑Web服务器所在的网络环境下负载的情况。人们不仅要求服务器满足正常的工作负载要求,而且在高峰时期依然要保持较高的吞吐量。但是,服务器在高负载的情况下的性能表现往往低于人们的期望。
服务器过载的情况分为两种:一种为瞬间过载,即服务器暂时的、短时间的超载,这种情况主要是由服务器负载的特点引起的。大量的研究表明,Web请求的网络通信量分布是自相似的,即Web请求的通信量可以在很大范围内有显著的变化。这就造成服务器常常短时间的超载,但这样情况持续的时间一般很短。一种是服务器长时间的超载,这种情况一般是由某一特殊事件引起的,例如服务器受到拒绝服务攻击或者发生了“活锁现象。
第一种服务器超载情况是不可避免的,但第二种情况则可以通过对服务器改进来改善。抛开恶意的攻击不算,仔细分析服务器处理信息包的过程可以发现,造成系统在超载情况下性能下降的根本原因是高优先级处理阶段对CPU的不公平抢占。
因此,如果限制高优先级处理阶段对CPU的占用率,或者限制处理高优先级的CPU个数,都可以减轻或者消除收包活锁现象。具体的可以采用以下的方法:
一、采用轮询机制。为了减少中断对系统性能的影响,在负载正常的情况下采用“下半处理 的方法就非常有效,而在高负荷情况下,采用这个方法仍然会造成活锁现象,这时可以采用轮询机制。虽然这个方法在负载正常的情况下会造成资源的浪费和响应速度降低,但在网络数据频繁到达服务器时就要比中断驱动技术有效的多。
二、减少上下文切换。这种方法不管服务器在什么情况下对性能改善都很有效,这时可以采用引入核心级(kerne1—leve1)或硬件级数据流的方法来达到这个目的。核心级数据流是将数据从源通过系统总线进行转发而不需要使数据经过应用程序进程,这个过程中因为数据在内存中,因此需要CPU操作数据。
硬件级数据流则是将数据从源通过私有数据总线或是虽等DMA通过系统总线进行转发而不需要使数据经过应用程序进程,这个过程不需要CPU操作数据。这样在数据传输过程中不需要用户线程的介入,减少了数据被拷贝的次数,减少了上下文切换的开销。
三、减低中断的频率(主要是针对高负荷情况的方法)。这里主要有两种方法:批中断和暂时关闭中断。批中断可以在超载时有效的抑制活锁现象,但对服务器的性能没有什么根本性的改进;当系统出现接收活锁迹象时,可以采用暂时关闭中断的方法来缓和系统的负担,当系统缓存再次可用时可以再打开中断,但这种方法在接收缓存不够大的情况下会造成数据包丢失。
Web服务器性能是整个Web系统的关键环节,提高Web服务器的性能也是长久以来人们一直关注的课题。这里通过对Web服务器的工作原理和现有的优化方法和技术的分析,得出了对待Web服务器性能的提高也应该具体问题具体分析,要在具体的应用环境中,根据其特点来采取相应的优化措施。 ;
啥数据库呀?cpu几个?用到多少了?我见过的cpu过高有2种,
一种是很多命令在执行,
二种是是因为他们写的sql语句过滥造成的。
其他的我就不知道了。mysql数据库导致cpu过高一般从执行状态分析:
执行状态分析
Sleep状态
通常代表资源未释放,如果是通过连接池,sleep状态应该恒定在一定数量范围内
实战范例:因前端数据输出时(特别是输出到用户终端)未及时关闭数据库连接,导致因网络连接速度产生大量sleep连接,在网速出现异常时,数据库toomanyconnections挂死。
简单解读,数据查询和执行通常只需要不到001秒,而网络输出通常需要1秒左右甚至更长,原本数据连接在001秒即可释放,但是因为前端程序未执行close操作,直接输出结果,那么在结果未展现在用户桌面前,该数据库连接一直维持在sleep状态!
Waitingfornet,readingfromnet,writingtonet
偶尔出现无妨
如大量出现,迅速检查数据库到前端的网络连接状态和流量
案例:因外挂程序,内网数据库大量读取,内网使用的百兆交换迅速爆满,导致大量连接阻塞在waitingfornet,数据库连接过多崩溃
Locked状态
有更新操作锁定
通常使用innodb可以很好的减少locked状态的产生,但是切记,更新操作要正确使用索引,即便是低频次更新操作也不能疏忽。如上影响结果集范例所示。
在myisam的时代,locked是很多高并发应用的噩梦。所以mysql官方也开始倾向于推荐innodb。
Copytotmptable
索引及现有结构无法涵盖查询条件,才会建立一个临时表来满足查询要求,产生巨大的恐怖的i/o压力。
很可怕的搜索语句会导致这样的情况,如果是数据分析,或者半夜的周期数据清理任务,偶尔出现,可以允许。频繁出现务必优化之。
Copytotmptable通常与连表查询有关,建议逐渐习惯不使用连表查询。
实战范例:
u某社区数据库阻塞,求救,经查,其服务器存在多个数据库应用和网站,其中一个不常用的小网站数据库产生了一个恐怖的copytotmptable操作,导致整个硬盘i/o和cpu压力超载。Kill掉该操作一切恢复。
Sendingdata
Sendingdata并不是发送数据,别被这个名字所欺骗,这是从物理磁盘获取数据的进程,如果你的影响结果集较多,那么就需要从不同的磁盘碎片去抽取数据,
偶尔出现该状态连接无碍。
回到上面影响结果集的问题,一般而言,如果sendingdata连接过多,通常是某查询的影响结果集过大,也就是查询的索引项不够优化。
如果出现大量相似的SQL语句出现在showproesslist列表中,并且都处于sendingdata状态,优化查询索引,记住用影响结果集的思路去思考。
Storingresulttoquerycache
出现这种状态,如果频繁出现,使用setprofiling分析,如果存在资源开销在SQL整体开销的比例过大(即便是非常小的开销,看比例),则说明querycache碎片较多
使用flushquerycache可即时清理,也可以做成定时任务
Querycache参数可适当酌情设置。
Freeingitems
理论上这玩意不会出现很多。偶尔出现无碍
如果大量出现,内存,硬盘可能已经出现问题。比如硬盘满或损坏。
i/o压力过大时,也可能出现Freeitems执行时间较长的情况。
Sortingfor
和Sendingdata类似,结果集过大,排序条件没有索引化,需要在内存里排序,甚至需要创建临时结构排序。
其他
排查方法:
>mysql-uroot-p#登陆数据库
>#输入数据库密码
mysql>showprocesslist;
showprocesslist命令详解:
processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句。
+-----+-------------+--------------------+-------+---------+-------+----------------------------------+----------
|Id|User|Host|db|Command|Time|State|Info
+-----+-------------+--------------------+-------+---------+-------+----------------------------------+----------
|207|root|192168020:51718|mytest|Sleep|5||NULL
先简单说一下各列的含义和用途,第一列,id,不用说了吧,一个标识,你要kill一个语句的时候很有用。user列,显示单前用户,如果不是root,这个命令就只显示你权限范围内的sql语句。host列,显示这个语句是从哪个ip的哪个端口上发出的。呵呵,可以用来追踪出问题语句的用户。db列,显示这个进程目前连接的是哪个数据库。command列,显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect)。time列,此这个状态持续的时间,单位是秒。state列,显示使用当前连接的sql语句的状态,很重要的列,后续会有所有的状态的描述,请注意,state只是语句执行中的某一个状态,一个sql语句,已查询为例,可能需要经过copyingtotmptable,Sortingresult,Sendingdata等状态才可以完成,info列,显示这个sql语句,因为长度有限,所以长的sql语句就显示不全,但是一个判断问题语句的重要依据。
常见问题:
一般是睡眠连接过多,严重消耗mysql服务器资源(主要是cpu,内存),并可能导致mysql崩溃。
解决办法:
mysql的配置myini文件中,有一项:
wait_timeout,即可设置睡眠连接超时秒数,如果某个连接超时,会被mysql自然终止。
wait_timeout过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能,不过也不能把这个指设置的过小,否则你可能会遭遇到“MySQLhasgoneaway”之类的问题,通常来说,我觉得把wait_timeout设置为10是个不错的选择,但某些情况下可能也会出问题,比如说有一个CRON脚本,其中两次SQL查询的间隔时间大于10秒的话,那么这个设置就有问题了(当然,这也不是不能解决的问题,你可以在程序里时不时mysql_ping一下,以便服务器知道你还活着,重新计算wait_timeout时间):
mysql>showglobalvariableslike'wait_timeout';
+----------------------------+-------+
|Variable_name|Value|
+----------------------------+-------+
|wait_timeout|120|
+----------------------------+-------+
mysql>setglobalwait_timeout=20;
至此,mysql占用cpu下降了
1、将空闲的SATA或IDE等通道关闭掉
一般来说现在的服务器采用了SAS万转高速硬盘,并做了RAID,那么如果没有使用到SATA设备或IDE设备,我们应该把它们给关闭掉。Windows Server 2008系统在启动的过程中,会自动将所有硬件设备加载成功,这个过程会消耗系统很多资源以及浪费不少时间;事实上,系统中的不少硬件设备我们平时很少使用到,将这些空闲的硬件设备关闭使用可以有效地提高服务器系统的运行效率。例如,当我们在Windows Server 2008系统下打开系统的设备管理器窗口,从中展开“IDE ATA/ATAPI控制器”项目,我们可以看到系统包含两个IDE通道,这两个通道在旧版本系统下被称之为主IDE通道、次IDE通道;不过,在Windows Server 2008系统环境下IDE通道却没有主次之分。考虑到许多普通朋友的计算机中通常只使用一个硬盘设备,所以我们完全可以将另外一个处于空闲状态的IDE通道关闭使用,以便提高系统的启动速度。
在关闭空闲IDE通道的使用状态时,我们可以先用鼠标右键单击设备管理器列表窗口中的其中一个IDE通道选项,从其后弹出的快捷菜单中执行“属性”命令,打开对应IDE通道的属性设置界面;单击该设置界面中的“高级设置”标签,进入如图1所示的标签设置页面;在该设置页面中,我们可以看出当前设备的具体传输模式,这说明该IDE通道目前已经被使用着,而另外一个IDE通道则处于空闲状态。此时,再用鼠标右键单击另外一个处于空闲状态的IDE通道,并从快捷菜单中执行“卸载”命令,那样一来空闲IDE通道就能被关闭使用了。
同样地,我们还可以将WindowsServer 2008系统中其他一些没有使用的硬件设备关闭使用,以便尽可能地提高Windows Server 2008系统的启动速度。
2、将空闲通信协议取消掉
对于每天上网冲浪都要面对的网络连接,相信没有人会料到它也会成为拖慢系统启动速度的一个原因。它所反映出来的慢主要就是在系统启动过程中,Windows Server 2008系统在启动过程中会尝试使用TCP/IP协议进行网络登录,以便能够进入局域网网络,同时为其自动分配合适IP地址。可是,在默认状态下,Windows Server 2008系统会自动优先使用TCP/IPv6协议来连接网络,在经过反复尝试连接之后,发现TCP/IPv6协议所对应的网络连接并不存在,之后才会尝试使用TCP/IPv4协议来连接网络,很显然这个过程多走了一些弯路,从而会影响服务器系统的启动速度;为了让Windows Server 2008系统直接使用TCP/IPv4协议来连接网络,我们需要采用手工方法来关闭TCP/IPv6协议的使用状态,以避免系统继续搜索使用TCP/IPv6协议所对应的网络连接,下面就是具体的关闭操作步骤:
首先登录进Windows Server 2008系统桌面,在该桌面中依次点选“开始”/“设置”/“网络连接”命令,在其后出现的网络连接列表窗口中,找到目标本地连接图标,再用鼠标右击该图标,并执行快捷菜单中的“属性”命令,打开目标本地连接的属性设置窗口;
其次在该属性设置窗口中的“网络”标签页面中,我们发现Windows Server 2008系统在缺省状态下已经启用了TCP/IPv6协议(如图2所示),此时我们可以将TCP/IPv6协议选项前面的勾号取消掉,再单击“确定”按钮,如此一来Windows Server 2008系统日后进行网络连接时,就不会去耗费时间寻找TCP/IPv6协议对应的本地连接了,那样的话Windows Server 2008系统就能直接使用TCP/IPv4协议来登录局域网网络了。
此外,一旦登录进局域网网络后,Windows Server 2008系统还会自动去搜索局域网中的DHCP服务器,以便给本地服务器系统分配一个合适的IP地址,这个搜索过程也会大大降低系统的启动速度;为此,我们最好为服务器系统的网卡设备预先分配一个合适的静态IP地址,以便让系统不需要去搜索局域网中的DHCP服务器。在为网卡设备分配静态IP地址时,我们可以在如图2所示的界面中,选中TCP/IPv4协议选项,并单击“属性”按钮,在其后的属性设置窗口中,我们可以参考局域网中的其他计算机上网参数来为本地网卡设置一个合适的IP地址,相信这么一来服务器系统的启动速度就能大大加快了
3、启用硬件加速功能
为了在Windows Server 2008系统中实现DirectX加速运行目的,如果没有可以到http://wwwgoldhoecom/fuwuzhichi/进行下载,里面还有相关文档可以借鉴进行操作,我们不妨按照如下操作,来将服务器系统自带的硬件加速功能启用起来:
首先以超级管理员身份进入Windows Server 2008服务器系统,用鼠标右键单击系统桌面的空白位置,并执行快捷菜单中的“个性化”命令,打开本地服务器系统的个性化设置对话框,单击该对话框中的“显示设置”选项,
打开系统的显示设置选项页面;
其次在该选项页面的右下角位置处单击“高级设置”按钮,进入本地服务器系统的高级显示属性窗口;单击该高级显示属性窗口中的“疑难解答”选项卡,在其后出现的选项设置页面中单击“更改设置”按钮,进入如图3所示的设置页面;在该设置页面的“硬件加速”处,直接用鼠标拖动滑动按钮到“完全”处,再单击“确定”按钮完成硬件加速功能启用操作,那样一来服务器系统就能实现DirectX加速目的了。
4、防止自动安装模块服务
当将本地工作站升级为Windows Server 2008系统后,我们有时会发现系统经常发生这样一种奇怪故障,那就是每次在本地系统中搜索文件或更新系统时,系统中的CPU资源时常会出现100%耗尽的现象,当发生这种现象时,服务器系统几乎就不能执行任何操作,显然这会影响服务器系统的稳定运行。事实上,Windows Server 2008系统之所以会在执行文件搜索操作或系统更新操作时,发生CPU资源100%耗尽的现象,主要就是服务器系统自带的Windows Module Installer系统服务自动运行造成的。为了防止该模块服务自动安装,我们可以设置Windows Server 2008系统的服务属性,将Windows Module Installer系统服务禁止运行,下面就是具体的设置步骤:
首先以超级管理员身份进入Windows Server 2008服务器系统,依次单击“开始”/“程序”/“服务器管理器”命令,打开本地服务器系统的服务器管理器窗口;
其次在该管理器窗口的左侧列表区域中,用鼠标依次点选“配置”/“服务”选项,在“服务”选项所对应的中间列表区域中,用鼠标双击“Windows Module Installer”服务选项,打开如图4所示的选项设置页面,如果我们在该页面的“服务状态”处发现目标系统服务已经被运行时,必须及时单击该页面中的“停止”按钮,并且将它的“启动类型”参数修改为“禁用”,最后依次单击“应用”、“确定”按钮,如此一来Windows Server 2008系统日后在执行文件搜索操作或系统更新操作时,就不会发生CPU资源被完全耗尽的现象了,此时系统的运行速度就不会受到影响了。
5、设置磁盘高级读写性能
由于服务器系统中保存的信息都比较重要,为了保护这些数据信息的安全性,Windows Server 2008服务器系统在缺省状态下,比较注重硬盘的读写性能,不过这会影响系统文件的访问速度。如果Windows Server 2008服务器系统中并没有保存多少重要信息时,或者我们对数据信息的读写安全性不十分看重时,那可以尝试设置Windows Server 2008系统新增的磁盘高级功能,来提高系统文件的访问速度,下面就是具体的设置步骤:
首先以超级管理员身份进入Windows Server 2008服务器系统,依次单击“开始”/“程序”/“服务器管理器”命令,打开本地服务器系统的服务器管理器窗口;
其次在该管理器窗口的左侧列表区域中,用鼠标依次点选“诊断”/“设备管理器”选项,在对应“设备管理器”选项的中间列表区域中,展开磁盘驱动器节点,再从该节点下选中目标磁盘设备,并用鼠标右键单击该磁盘设备,从弹出的快捷菜单中执行“属性”命令,打开目标磁盘设备的属性设置窗口,单击该窗口中的“策略”标签,打开如图5所示的标签设置页面;
在该设置页面中,检查“启用磁盘上的写入缓存”选项和“启用高级性能”选项是否处于选中状态,如果发现它们没有被选中时,我们可以将它们重新选中,最后单击“确定”按钮结束磁盘属性设置操作,那样一来Windows Server 2008系统就能有效提高系统文件的访问速度了
6、提高上网访问宽带速度
Windows Server 2008系统与旧版本操作系统一样,在默认状态下同样留有20%的带宽余量,这个余量对于普通上网用户来说几乎没什么大的作用,与其让其空闲还不如将其充分利用起来,以便尽可能地提高Windows Server 2008系统下的上网冲浪速度。在启用20%的带宽余量时,我们可以按照如下步骤设置Windows Server 2008系统的组策略参数:
首先以超级管理员身份进入Windows Server 2008服务器系统,依次单击该系统桌面中的“开始”/“运行”命令,在弹出的系统运行文本框中,输入字符串命令“gpeditmsc”,单击“确定”按钮后,进入Windows Server 2008系统的组策略编辑窗口;
其次在该组策略编辑窗口左侧显示区域,将鼠标定位与“计算机配置”/“管理模板”/“网络”/“QoS数据包计划程序”分支选项,在“QoS数据包计划程序”分支选项所对应的右侧显示区域中,找到“限制可保留带宽”组策略选项,再用鼠标双击该选项,打开如图6所示的目标组策略属性设置窗口,选中该窗口中的“已禁用”选项,再单击“确定”按钮,如此一来Windows Server 2008系统保留的带宽资源就被成功释放了出来,这对于上网冲浪时提高访问速度是非常有用的。
7、提高共享文件拷贝速度
当我们通过网上邻居窗口从Windows Server 2008系统中拷贝共享文件时,发现共享文件的传输速度明显不如旧版本操作系统,难道是该系统在这方面的功能退化了吗?事实并不是这样,很可能是我们不小心安装了Windows Server 2008系统新增加的远程差分压缩功能了,该功能在我们传输共享文件时,会自动对两地文件的差异性进行检查,然后将变化的部分传输过去。显然,这个差异性检查操作会消耗太多的时间,影响共享文件的拷贝速度,我们可以按照如下步骤将该功能关闭掉:
首先以超级管理员身份进入Windows Server 2008服务器系统,依次单击“开始”/“程序”/“服务器管理器”命令,打开本地服务器系统的服务器管理器窗口;
其次在该管理器窗口的左侧列表区域中,用鼠标点选“功能”选项,在对应该选项的右侧列表区域中,检查“远程差分压缩”功能是否已经安装(如图7所示),如果发现该功能已经被成功安装的话,我们可以单击图7界面中的“删除功能”,之后从删除列表中选中“远程差分压缩”功能选项,最后按照提示完成剩余的操作,就能将“远程差分压缩”功能从服务器系统中删除掉了,那样一来我们就能有效提高共享文件的拷贝速度了。
一、前端优化
网站性能优化是一个很综合的话题,涉及到服务器的配置和网站前后端程序等各个方面,我只是从实际经历出发,分享一下自己所尝试过的网站性能优化方法。之所以在标题上挂一个web20,是因为本文更偏重于中小网站的性能优化,我所使用的系统也是典型web20的LAMP架构。
首先讲讲前端的优化,用户访问网页的等待时间,有80%是发生在浏览器前端,特别是页面和页面中各种元素(、CSS、Javascript、flash)的下载之上。因此在很多情况下,相对于把大量的时间花在艰苦而繁杂的程序改进上,前端的优化往往能起到事半功倍的作用。雅虎最近将内部使用的性能测试工具yslow向第三方公开,并发布了著名的网站性能优化的十三条规则,建议你下载并安装yslow,并作为测评网站优化效果的工具。下面我挑其中特别有价值的具体说明一下优化的方法:
对于第一次访问您网站,尚未在浏览器cache中缓存您网站内容的用户,我们可以做的事情包括:
1)减少一个页面访问所产生的package-infophppackage=APC)、TurckMMCache()、phpaccelebrator(),还有收费的ZendPerformanceSuite
3)将静态内容和动态内容分开处理
apache是一个功能完善但比较庞大的webserver,它的资源占用基本上和同时运行的进程数呈正比,对服务器内存的消耗比较大,处理并行任务的效率也一般。在一些情况下,我们可以用比较轻量级的webserver来host静态的、样式表和javascript文件,这样可以大大提升静态文件的处理速度,还可以减少对内存占用。我使用的webserver是来自俄罗斯的nginx,其他选择方案还包括lighttpd和thttpd等。
4)基于反向代理的前端访问负载均衡
当一台前端服务器不足以应付用户访问时,通过前端机实现web访问的负载均衡是最快速可行的方案。通过apache的mod_proxy可以实现基于反向代理的负载均衡,这里推荐使用nginx做代理服务器,处理速度较apache更快一些。
5)应用缓存技术提高数据库效能,文件缓存和分布式缓存
数据库访问处理并发访问的能力是很多网站应用的关键瓶颈,在想到使用主从结构和多farm的方式构建服务器集群之前,首先应该确保充分使用了数据库查询的缓存。一些数据库类型(如mysql的innoDB)自身内置对缓存的支持,此外,还可以利用程序方法将常用的查询通过文件或内存缓存起来。比如通过php中的ob_start和文件读写函数可以很方便的实现文件形式的缓存,而如果你拥有多台服务器,可以通过memcache技术通过分布式共享内存来对数据库查询进行缓存,不仅效率高而且扩展性好,memcache技术在livejournal和Craigslistorg等知名网站应用中都得到了检验。
6)服务器运行状态的检测,找到影响性能的瓶颈所在
系统优化没有一劳永逸的方法,需要通过检测服务器的运行状态来及时发现影响性能的瓶颈,以及可能存在的潜在问题,因为网站的性能,永远取决于木桶中的短板。可以编写一些脚本来检测web服务的运行,也有一些开源的软件也提供了很好的功能
7)良好的扩展架构是稳定和性能的基础
一些技巧和窍门可以帮你度过眼前的难关,但要想使网站具备应付大规模访问的能力,则需要从系统架构上进行彻底的规划,好在很多前人无私的把他们架构
网站的经验分享给我们,使我们可以少走甚多弯路。我最近读到的两篇有启发的文章:
-从LiveJournal后台发展看大规模网站性能优化方法
-Myspace的六次重构
最后不得不提到程序编码和数据库结构对性能的影响,一系列糟糕的循环语句,一个不合理的查询语句、一张设计不佳的数据表或索引表,都足以会使应用程序运行的速度成倍的降低。培养全局思考的能力,养成良好的编程习惯,并对数据库运行机制有所了解,是提高编程质量的基础。
1、 关闭不需要的服务
这个应该很容易理解的,凡是我们的系统不需要的服务,一概关闭,这样一个好处是减少内存和CPU时间的占用,另一个好处相对可以提高安全性
那么哪些服务是肯定要保留的呢
在linux机器上通常有四项服务是必须保留的
iptables
linux下强大的防火墙,只要机器需要连到网上,哪里离得开它
network
linux机器的网络,如果不上网可以关闭,只要上网当然要打开它
sshd
这是openssh server,如果你的机器不是本地操作,而是托管到IDC机房,
那么访问机器时需要通过这个sshd服务进行
syslog
这是linux系统的日志系统,必须要有,
否则机器出现问题时会找不到原因
除了这四项必需的服务之外,其他的服务需要保留哪些呢
这时就可以根据系统的用途而定,比如:数据库服务器,就需要启用mysqld(或oracle)
web服务器,就需要启用apache
2、 关闭不需要的tty
请编辑你的/etc/inittab
找到如下一段:
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
这段命令使init为你打开了6个控制台,分别可以用alt+f1到alt+f6进行访问
此6个控制台默认都驻留在内存中,事实上没有必要使用这么多的
你用ps auxf这个命令可以看到,是六个进程
root 3004 00 00 1892 412 tty1 Ss+ Jun29 0:00 /sbin/mingetty tty1
root 3037 00 00 2492 412 tty2 Ss+ Jun29 0:00 /sbin/mingetty tty2
root 3038 00 00 2308 412 tty3 Ss+ Jun29 0:00 /sbin/mingetty tty3
root 3051 00 00 1812 412 tty4 Ss+ Jun29 0:00 /sbin/mingetty tty4
root 3056 00 00 2116 412 tty5 Ss+ Jun29 0:00 /sbin/mingetty tty5
root 3117 00 00 2396 412 tty6 Ss+ Jun29 0:00 /sbin/mingetty tty6
3 如何关闭这些进程
通常我们保留前2个控制台就可以了,
把后面4个用#注释掉就可以了
然后无需重启机器,只需要执行 init q 这个命令即可
init q
q作为参数的含义:重新执行/etc/inittab中的命令
修改完成后需重启机器使之生效
4 、如何关闭atime
一个linux文件默认有3个时间:
atime:对此文件的访问时间
ctime:此文件inode发生变化的时间
mtime:此文件的修改时间
如果有多个小文件时通常没有必要记录文件的访问时间,
这样可以减少磁盘的io,比如web服务器的页面上有多个小
如何进行设置呢
修改文件系统的配置文件:vi /etc/fstab
在包含大量小文件的分区中使用noatime,nodiratime两项
例如:
/dev/md5 /data/pics1 ext3 noatime,nodiratime 0 0
这样文件被访问时就不会再产生写磁盘的io
5、 一定要让你的服务器运行在level 3上
做法:
vi /etc/inittab
id:3:initdefault:
让服务器运行X是没有必要的
6, 优化sshd
X11Forwarding no //不进行x图形的转发
UseDNS no //不对IP地址做反向的解析
7、 优化shell
修改命令history记录
# vi /etc/profile
找到 HISTSIZE=1000 改为 HISTSIZE=100
然后 source /etc/profile
0条评论