服务器性能优化配置建议

http://bbs.linuxtone.org/thread-40-1-1.html 目 录 一、服务配置建议 二、MySQL性能分析及建议 三、系统性能分析 很久以前在前公司给中企动力那边写的服务器分析建议,其实出就是一些简单参数调整仍后利用vmstat,top这些工具对系统性能做初步分析。 贴出来希望对朋友们学习有帮助,同时也欢迎朋友们补充![此文档仅作参考和学习,具体优化比较复杂欢迎朋友们探讨!] 一、服务器配置 先阅读apache配置优化建议如下,再对相关参数进行调整,观察服务器状况. Apache配置优化建议: 进入/usr/local/apache2/conf/extra 目录下 Apache优化, 经过上述操作后,Apache已经能够正常运行。但是,对于访问量稍大的站点,Apache的这些默认配置是无法满足需求的,我们仍需调整Apache的一些参数,使Apache能够在大访问量环境下发挥出更好的性能。以下我们对Apache配置文件httpd.conf中对性能影响较大的参数进行一些说明。  (1) Timeout 该参数指定Apache在接收请求或发送所请求内容之前的最长等待时间(秒),若超过该时间Apache则放弃处理该请求,并释放连接。该参数默认值为120,推荐设置为60,对于访问量较大的网站可以设置为30或15。  (2) KeepAlive 该参数控制Apache是否允许在一个连接中有多个请求,默认打开。但对于大多数论坛类型站点来说,通常设置为off以关闭该支持。  (3) MPM – prefork.c 在默认情况下Apache使用Prefork(进程)工作模式,可以说这部分的参数设置是对Apache性能影响的核心和关键。用户可以在配置文档中找到以下配置段:    <IfModule prefork.c>         StartServers         5         MinSpareServers      5         MaxSpareServers     10         MaxClients          15         MaxRequestsPerChild  0  …

整理Oracle数据库碎片

http://tech.ddvip.com/2007-05/117860778023634.html 我们知道, Oracle 作为一种大型数据库,广泛应用于金融、邮电、电力、民航等数据吞吐量巨大,计算机网络广泛普及的重要部门。对于系统管理员来讲,如何保证网络稳定运行,如何提高数据库性能,使其更加安全高效,就显得尤为重要。作为影响数据库性能的一大因素 — 数据库碎片,应当引起 DBA 的足够重视,及时发现并整理碎片乃是 DBA 一项基本维护内容。   1 、碎片是如何产生的   —- 当生成一个数据库时,它会分成称为表空间( Tablespace )的多个逻辑段( Segment ),如系统( System )表空间 , 临时( Temporary )表空间等。一个表空间可以包含多个数据范围( Extent )和一个或多个自由范围块,即自由空间( Free Space )。   —- 表空间、段、范围、自由空间的逻辑关系如下:   —- 当表空间中生成一个段时,将从表空间有效自由空间中为这个段的初始范围分配空间。在这些初始范围充满数据时,段会请求增加另一个范围。这样的扩展过程会一直继续下去,直到达到最大的范围值,或者在表空间中已经没有自由空间用于下一个范围。最理想的状态就是一个段的数据可被存在单一的一个范围中。这样,所有的数据存储时靠近段内其它数据,并且寻找数据可少用一些指针。但是一个段包含多个范围的情况是大量存在的,没有任何措施可以保证这些范围是相邻存储的,如图〈 1 〉。当要满足一个空间要求时,数据库不再合并相邻的自由范围(除非别无选择),而是寻找表空间中最大的自由范围来使用。这样将逐渐形成越来越多的离散的、分隔的、较小的自由空间,即碎片。例如:   2 、碎片对系统的影响   —- 随着时间推移,基于数据库的应用系统的广泛使用,产生的碎片会越来越多,将对数据库有以下两点主要影响:   —- ( 1 )导致系统性能减弱   —- 如上所述,当要满足一个空间要求时,数据库将首先查找当前最大的自由范围,而 ” 最大 ” 自由范围逐渐变小,要找到一个足够大的自由范围已变得越来越困难,从而导致表空间中的速度障碍,使数据库的空间分配愈发远离理想状态;   —- ( 2 )浪费大量的表空间   —- 尽管有一部分自由范围(如表空间的…

扫盲行动之:轻松安装、卸载Linux软件

  第一篇:    Linux下软件的安装与卸载    在Windows下安装软件时,只需运行软件的安装程序(setup、install等)或者用zip等解压缩软件解开即可安装,运行反安装程序(uninstall、unware、“卸载”等)就能将软件清除干净,完全图形化的操作界面,简单到只要用鼠标一直点击“下一步”就可以了。而Linux好象就不一样了,很多的初学者都抱怨在Linux下安装和卸载软件非常地困难,没有像使用Windows时那么直观。其实在Linux下安装和卸载软件也非常简单,同样也有安装向导或解压安装的方式,不相同的只不过是除了二进制形式的软件分发外,还有许许多多以源代码形式分发的软件包,下面就来详细地讲一讲这些软件的安装与卸载:       一、二进制分发软件包的安装与卸载    Linux软件的二进制分发是指事先已经编译好二进制形式的软件包的发布形式,其优点是安装使用容易,缺点则是缺乏灵活性,如果该软件包是为特定的硬件/操作系统平台编译的,那它就不能在另外的平台或环境下正确执行。    1、*.rpm形式的二进制软件包    安装:rpm -ivh *.rpm    卸载:rpm -e packgename    说明:RPM(RedHat Packge Manager)是RedHat公司出的软件包管理器,使用它可以很容易地对rpm形式的软件包进行安装、升级、卸载、验证、查询等操作,安装简单,而卸载时也可以将软件安装在多处目录中的文件删除干净,因此推荐初学者尽可能使用rpm形式的软件包。rpm的参数中-i是安装,-v是校验,-h是用散列符显示安装进度,*.rpm是软件包的文件名(这里的*.rpm特指*.src.rpm以外的以rpm为后缀的文件);参数-e是删除软件包,packgename是软件包名,与软件包的文件名有所区别,它往往是文件名中位于版本号前面的字符串,例如apache-3.1.12-i386.rpm和apache-devel-3.1.12-i386.rpm是软件包文件名,它们的软件包名称分别是apache和apache-devel。更多的rpm参数请自行参看手册页:man rpm。    如果你不喜欢在字符界面下安装或卸载这些软件包,完全可以在X-Window下使用图形界面的软件包管理程序,如glint、xrpm这样的图形接口,或者是KDE的kpackge等,这样对软件包的安装、升级、卸载、验证和查询就可以通过点击鼠标来轻松完成。    2、*.tar.gz/*.tgz、*.bz2形式的二进制软件包    安装:tar zxvf *.tar.gz 或 tar yxvf *.bz2    卸载:手动删除    说明:*.tar.gz/*.bz2形式的二进制软件包是用tar工具来打包、用gzip/bzip2压缩的,安装时直接解包即可。对于解压后只有单一目录的软件,卸载时用命令“rm -rf 软件目录名”;如果解压后文件分散在多处目录中,则必须一一手动删除(稍麻烦),想知道解压时向系统中安装了哪些文件,可以用命令“tar ztvf *.tar.gz”/“tar ytvf *.bz2”获取清单。tar的参数z是调用gzip解压,x是解包,v是校验,f是显示结果,y是调用bzip2解压,t是列出包的文件清单。更多的参数请参看手册页:man tar。    如果你更喜欢图形界面的操作,可以在X-Window下使用KDE的ArK压缩档案管理工具。    3、提供安装程序的软件包    这类软件包已经提供了安装脚本或二进制的安装向导程序(setup、install、install.sh等),只需运行它就可以完成软件的安装;而卸载时也相应地提供了反安装的脚本或程序。例如SUN公司的StarOffice办公软件套件就使用名为setup的安装程序,而且在软件安装后提供反安装的功能,目前这种类型的软件包还比较少,因其安装与卸载的方式与Windows软件一样,所以就无需多讲了。       二、源代码分发软件包的安装与卸载    Linux软件的源代码分发是指提供了该软件所有程序源代码的发布形式,需要用户自己编译成可执行的二进制代码并进行安装,其优点是配置灵活,可以随意去掉或保留某些功能/模块,适应多种硬件/操作系统平台及编译环境,缺点是难度较大,一般不适合初学者使用。    1、*.src.rpm形式的源代码软件包    安装:rpm -rebuild *.src.rpm    cd /usr/src/dist/RPMS    rpm -ivh *.rpm    卸载:rpm -e packgename    说明:rpm –rebuild…

我的Tomcat集群及负载均衡配置之旅(转载)

http://eason26-li.iteye.com/blog/604383 我的Tomcat集群及负载均衡配置之旅(转载) 博客分类:  服务器 TomcatIEApacheJSPXML  一.tomcat集群     我的环境是在同一台机器上安装两个tomcat5.5,并安装apache2.0.26进行测试  1.在安装第二个tomcat时,更改第二个tomcat的Tomcat/bin/startup.bat和catalina.bat,把 CATALINA_HOME全部替换成CATALINA_HOME2,并更改第二个Tomcat的所有端口,目的使两个tomcat不冲突  Tomcat1,Tomcat2  2.配置集群  (1).修改 Tomcat 安装目录\conf\server.xml ,把 Server/Service/Engine/Host 下的 Cluster 结点前后的注释符(<!– 和 –>)删除,并保存  (2).修改 Cluster/Receiver 结点的 tcpListenPort 端口(此端口用于 Session 复制),以避免和第一个冲突(4001 -> 4002),如果是在多个机器上的tomcat,则不用修改  注:Tomcat Cluster 默认使用多播来建立成员关系,即两个实例的多播的地址和端口一样,就可以互相认为是同一个 Cluster 的成员。  (3).测试页面  写一个简单Web应用,能显示和设置 Session 属性值,以供测试  新增 index.jsp ,加入如下代码:  Jsp代码   <%@ page contentType=“text/html; charset=UTF-8” import=“java.util.*”%>   <html><head><title>Cluster App Test</title></head>   <body>   Server Info: <%out.print(request.getLocalAddr() + ” : “ + request.getLocalPort());%>   <%   out.println(“<br> ID “ + session.getId());      // 如果有新的 Session 属性设置   String dataName = request.getParameter(“dataName”);   if (dataName != null && dataName.length() > 0) {      String dataValue = request.getParameter(“dataValue”);  …

当今世界最为经典的十大算法

http://blog.csdn.net/v_JULY_v/article/details/6228235   当今世界最为经典的十大算法–投票进行时 分类: 02.Algorithms(后续)2011-03-07 10:03 48517人阅读 评论(309) 收藏 举报                      当今世界最为经典的十大算法–投票进行时   作者:July、 时间:二零一一年三月七日。 参考:十三个经典算法研究与总结、目录+索引,本人第一大原创作品。 内容说明: I、 本文原名为:当今世界最受人们重视的十大经典算法,后改为如上题目。 II、本文分为俩部分:     第一部分、来自圣经的十大算法:为某网友票选出来的十个来自圣经的算法。     第二部分、当今世界最为经典的十大算法–投票进行时:是恳请本文的读者为您心目中当今世界最为经典的算法投上一票,最终在本BLOG内票选产生当今世界最为经典的十大算法(投票截止日期,三年后的此刻,即二零一四年三月七日)。非常感谢大家。 —————————————-   第一部分、来自圣经的十大算法     当今世界,已经被发现或创造的经典算法数不胜数。如果,一定要投票选出你最看重的十大算法,你会作何选择列?有国外网友在StackExchange上发起过投票,让人们投票选出心目中最为经典的算法,最终产生了下面得票数最高的十大经典算法(投票数统计截止到2011年3月7日): 第十名:Huffman coding(霍夫曼编码)     霍夫曼编码(Huffman Coding)是一种编码方式,是一种用于无损数据压缩的熵编码(权编码)算法。1952年,David A. Huffman在麻省理工攻读博士时所发明的,并发表于《一种构建极小多余编码的方法》(A Method for the Construction of Minimum-Redundancy Codes)一文。 第九名:Binary Search (二分查找)     在一个有序的集合中查找元素,可以使用二分查找算法,也叫二分搜索。二分查找算法先比较位于集合中间位置的元素与键的大小,有三种情况(假设集合是从小到大排列的):     1.键小于中间位置的元素,则匹配元素必在左边(如果有的话),于是对左边的区域应用二分搜索。     2.键等于中间位置的元素,所以元素找到。     3.键大于中间位置的元素,则匹配元素必在右边(如果有的话),于是对右边的区域应用二分搜索。 另外,当集合为空,则代表找不到。 第八名:Miller-Rabin作的类似的试验测试     这个想法是利用素数的性质(如使用费马大定理)的小概率寻找见证不数素数。如果没有证据是足够的随机检验后发现,这一数字为素数。 第七名:Depth First Search、Breadth…

对apache中并发控制参数prefork理解和调优

http://www.php-oa.com/2008/02/22/prefork.html 转载本站文章请注明,转载自:扶凯[http://www.php-oa.com] 本文链接: http://www.php-oa.com/2008/02/22/prefork.html   一个apache有linux下的并发不是很高的,大约到3K的样子(其实处理的http的请求可能只有300/s),普通的服务器都会不同程度的出现问题.apache有关并发控制主要是 prefork和worker二个其中一个来控制.我们可以使用httpd -l来确定当前使用的MPM是prefork.c,还是Worker.c.下面是apache中有关prefork的配置.下面是我优化过的参数. <IfModule prefork.c> #有这个参数就不必像apache1一样修改源码才能修改256客户数的限制,听讲要放到最前面才会生效,2000是这个参数的最大值 ServerLimit 2000 #指定服务器启动时建立的子进程数量,prefork默认为5。 StartServers 25 #指定空闲子进程的最小数量,默认为5。如果当前空闲子进程数少于MinSpareServers ,那么Apache将以最大每秒一个的速度产生新的子进程。此参数不要设的太大。 MinSpareServers 25 #设置空闲子进程的最大数量,默认为10。如果当前有超过MaxSpareServers数量的空闲子进程,那么父进程将杀死多余的子进程。此参数 不要设的太大。如果你将该指令的值设置为比MinSpareServers小,Apache将会自动将其修改成”MinSpareServers+1″。 MaxSpareServers 50 #限定同一时间客户端最大接入请求的数量(单个进程并发线程数),默认为256。任何超过MaxClients限制的请求都将进入等候队列,一旦一个链接被释放,队列中的请求将得到服务。要增大这个值,你必须同时增大ServerLimit 。 MaxClients 2000 #每个子进程在其生存期内允许伺服的最大请求数量,默认为10000.到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为”0″,子进程将永远不会结束。 MaxRequestsPerChild 10000 </IfModule> 将MaxRequestsPerChild设置成非零值有两个好处: 1.可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。 2.给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。 工作方式: 一个单独的控制进程(父进程)负责产生子进程,这些子进程用于监听请求并作出应答。Apache总是试图保持一些备用的 (spare)或者是空闲的子进程用于迎接即将到来的请求。这样客户端就不需要在得到服务前等候子进程的产生。在Unix系统中,父进程通常以root身 份运行以便邦定80端口,而 Apache产生的子进程通常以一个低特权的用户运行。User和Group指令用于设置子进程的低特权用户。运行子进程的用户必须要对它所服务的内容有 读取的权限,但是对服务内容之外的其他资源必须拥有尽可能少的权限。 对上面的有些值,一定要记的不是越大越好.这个需要经过几次尝试和出错之后才能选好要使用的值(不同的硬件处理水平不一样)。最重要的值是maxclient允许足够多的 工作进程,同时又不会导致服务器进行过度的交换(死机)。如果传入的请求超出处理能力而让服务器当掉的话,那么至少满足此值的那些请求会得到服务,其他请求被阻塞这样会更加好。   我们调优常常要查看httpd进程数(即prefork模式下Apache能够处理的并发请求数): #ps -ef | grep httpd | wc -l 出现的结果,就是当前Apache能够处理的多少个并发请求,这个值Apache根据负载情况自动调. 查看Apache的并发请求数及其TCP连接状态: #netstat…

学会分析网站原始访问日志

http://www.ludou.org/learning-how-to-analyse-raw-access-log.html 学会分析网站原始访问日志 Ludou 人气: 3,128 文章目录 1、注意那些被频繁访问的资源 2、注意那些你网站上不存在资源的请求 3、观察搜索引擎蜘蛛的来访情况 4、观察访客行为 应敌之策 1、封杀某个IP 2、封杀某个浏览器类型(Agent) 3、封杀某个来源(Referer) 5、文件重命名 总结      如果你的博客或网站是搭建在付费主机上,如果你是博客或网站的管理员,如果你连原始访问日志(Raw Access Log)是什么都不知道,或者对其根本不屑一顾,我只能说你是一个不称职的网站管理员,一旦网站出问题,必定是束手无策!      相信大家都在自己的网站上安装了网站统计的代码,如Google analytics、量子统计、百度统计、cnzz、51.la等,这些工具可以统计网站的流量,也就是网站上访客可看到的所有页面的访问量,但是这些统计工具都不能统计你主机上资源的原始访问信息,例如某个图片被谁下载了。      绝大多数收费主机都提供原始访问日志(Raw Access Log),网站服务器会把每一个访客来访时的一些信息自动记录下来,保存在原始访问日志文件中,如果你的主机不提供日志功能,建议你到期后还是换主机吧。日志中记录了网站上所有资源的访问信息,包括图片、CSS、JS、FLASH、HTML、MP3等所有网页打开过程载入的资源,同时记录了这些资源都被谁访问了、用什么来访问以及访问的结果是什么等等,可以说原始访问日志记录了主机的所有资源使用情况。      如果你的网站遭到了攻击、非法盗链和不良请求等,通过分析原始访问日志能大概分析出端倪来,例如:今年年初我往我的主机上传了一个mp3,不幸被百度mp3收录,引来大量的盗链,导致我的主机流量猛增,虽然这对我并无大碍,但是心里不爽!通过分析日志,我找出了问题根源,删除了那个mp3,主机流量也降下来了。      不同主机使用的面板不太一样,所以查看原始访问日志的方法也不太一样,但是Apache服务器的日志记录格式都是一样的,具体查看原始访问日志的方法请咨询相关主机客服。下面是cPanel面板,通过点击红色方框中(原始访问日志)的按钮,接着选择你的网站域名,即可下载原始访问日志,使用文本编辑器打开即可查看: Apache服务器的原始访问日志每一行就是类似以下的记录: 64.10.90.61 – – [04/Mar/2001:11:47:26 -0600] “GET /intro.htm HTTP/1.1” 200 13947 “http://www.yourdomain.com/” “Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)“ 下面我们来说说这一行记录的意思: 64.10.90.61      这是访客(也可能是机器人)的IP [04/Mar/2001:11:47:26 -0600]      这是访客访问该资源的时间(Date),-0600是该时间所对应的时区,即与格林威治时间相差-6个小时 GET /intro.htm HTTP/1.1      请求信息,包括请求方式、所请求的资源以及所使用的协议,该语句的意思就是以GET方式,按照HTTP/1.1协议获取网页/intro.htm,intro.htm为网站上的某个网页。 200 13947      200为该请求返回的状态码(Http Code),不同的状态码代表不同的意思,具体请阅读HTTP 状态代码;13947为此次请求所耗费的流量(Size in Bytes),单位为byte…

如何在CentOS下用Postfix配置邮件服务器

http://www.chinaemail.com.cn/zixun/yjxt/201007/52228.html 这篇文章的对像是希望设置一 台基本邮件服务器的初学者。拥有基本系统管理知识会有帮助,而能够安装软件及编辑配置文件是必须的。这篇文章是针对 CentOS 5 所撰写的,但亦应该适用於更早版本。   一台邮件服务器的设置可以有很多 不同的实例和组合(多至不能在此尽录),因此这篇文章为你作了一些基本的选择,例如我们将会采用的软件(postfix 及 dovecot)。其它选项则需要用户更改,例如你的网络地址及域名。虚拟网域或用户等高级选项已超越了这篇文章的范筹,因而不会在这里处理。   这篇文章采用 postfix 作为邮件传输代理(MTA),替换了 sendmail,CentOS 缺省的 MTA。dovecot 是用来容让用户通过 imap 或 pop 协议来访问他们的邮件。我们会假设域名是 example.com,它应该由读者更改,这可以是给一台正式邮件服务器用的真实域名,或者只是供内部邮件服务器用的虚构域名。我们假设实体的邮件服务 器(主机)是 mail.example.com,并且位於 192.168.0.1 这个私人 IP 地址(这应该按读者的需要作出修改)。这台邮件服务器将会通过标准的系统帐户来提供邮件帐户,而用户将会利用他们的系统帐户及口令来访问他们的邮件。我们 会假设有一位用户名叫 John Smith,它拥有一个名为 john 的系统帐户。   1. 安装   我们首先要做的事情就是安 装所需的软件。最简单的做法就是在命令行上采用 yum:   yum install postfix dovecot system-switch-mail system-switch-mail-gnomeyum 应该会自动解决任何依赖性的需要。dovecot 依赖 mysql 及 perl,因此它们若未被安装在系统上,现在很可能便会。   2. 设置   接下来我们需要设置邮件服 务器的各部份。   2.1. Postfix   postfix…

大型网站采用什么系统架构保证性能稳定性

http://eason26-li.iteye.com/blog/1156110 大型网站采用什么系统架构保证性能稳定性 教程由JAVA中文网整理校对发布(javaweb.cc)  千万级的注册用户,千万级的帖子,nTB级的附件,还有巨大的日访问量,大型网站采用什么系统架构保证性能和稳定性?  首先讨论一下大型网站需要注意和考虑的问题。  数据库海量数据处理:负载量不大的情况下select、delete和update是响应很迅速的,最多加几个索引就可以搞定,但千万级的注册用户和一个设计不好的多对多关系将带来非常严重的性能问题。另外在高UPDATE的情况下,更新一个聚焦索引的时间基本上是不可忍受的。索引和更新是一对天生的冤家。  高并发死锁:平时我们感觉不到,但数据库死锁在高并发的情况下的出现的概率是非常高的。  文件存储的问题:大型网站有海量图片数据、视频数据、文件数据等等,他们如何存储并被有效索引?高并发的情况下IO的瓶颈问题会迅速显现。也许用RAID和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。  接下来讨论大型网站的底层系统架构,来有效的解决上述问题。  毋庸置疑,对于规模稍大的网站来说,其背后必然是一个服务器集群来提供网站服务,例如,2004年eBay的服务器有2400台,估计现在更多。当然,数据库也必然要和应用服务分开,有单独的数据库服务器集群。对于像淘宝网这样规模的网站而言,就是应用也分成很多组。    下面,就从服务器操作系统与Web服务器、数据库、服务器集群与负载均衡、缓存、独立的图片服务器、其它等几个方面来分析大型网站的系统架构。  服务器操作系统与Web服务器  最底层首先是操作系统。好的操作系统能提高好的性能、稳定性和安全性,而这些对大型网站的性能、安全性和稳定性都是至关重要的。  淘宝网(阿里巴巴): Linux操作系统 + Web 服务器: Apache  新浪:FreeBSD + Web 服务器:Apache  Yahoo:FreeBSD + Web 服务器:自己的  Google: 部分Linux + Web 服务器:自己的  百度:Linux + Web 服务器: Apache  网易:Linux + Web 服务器: Apache  eBay: Windows Server 2003/8 (大量) + Web 服务器:Microsoft IIS  MySpace: Windows Server…