Posts Tagged ‘MySQL’
512M VPS 性能和内存优化
星期六, 九月 4, 2010 19:58 1 条评论版本更新:2010-09-04 版本A 最近廉价的VPS有越来越流行的趋势,但是很多廉价的VPS很多只有512M,甚至更少的内存,而Apache和MySQL这些建站必备的软件,又偏偏都是内存消耗大户,所以如何优化本来就不多的内存空间,就显得额外重要了。 注:本文是抓抓自己的经验之谈,没有什么权威性,欢迎理性的讨论和评价,拒绝出现诸如Nginx比Apache牛X很多之类的口水仗,谢谢。 虽然抓抓最喜欢和最熟悉的Linux发行版是Gentoo,但是通常在使用VPS时,我还是会安装主流的CentOS 5 32Bit版本。选择CentOS是因为CentOS是从Redhat演变而来,所以对大多数服务器软件的兼容性还算不错,比如Kloxo就可以在CentOS下面进行简易的一键安装,等等。而32Bit是因为可以避免使用64Bit的发行版而造成的诸多稀奇古怪的问题,相当稳定而且性能几乎没有什么差别,并且因为内存不超过4G而无需用到64Bit的寻址。 好了,言归正传。对于低端的VPS来说,因为内存本来就不是非常充足,所以如果你对Linux服务器平台的架设非常熟悉的话,完全可以不用什么控制面板;如果是一个初学者,出于方便的考虑,可以安装轻型的Kloxo控制面板,功能强大,内存占用少(大约4M~8M),除了功能排版有些混乱之外,其他该有的功能都有,不该有的功能也有,非常实用。 在优化Apache/MySQL之前,首先可以关掉一些不必要的后台守护进程,比如ClamAV(一个杀毒软件),你可以运行chkconfig –list查看哪些后台守护进程是不必要的,当然很多东西取决于你的具体应用。比如如果你不是经常登陆Kloxo,可以把Kloxo关闭;如果不发邮件,可以关闭QMail,等等。如果碰到一些自己不熟悉的进程,千万别忙着下手,先去Google一下,以免出现其他预料之外的问题。关闭自动启动可以使用chkconfig 守护进程名 off,但是内存中已经运行的守护进程不会被关闭,需要运行service 守护进程名 stop进行关闭。 接下来是Apache的优化。这个东西在VPS高效运行的时候,会占去至少一半以上的内存。通过修改/etc/httpd/conf/httpd.conf配置文件,用户可以进行内存占用和服务性能之间的微调以达到一个平衡的状态。 httpd.conf里面的几个关乎内存占用和性能的价格重要参数如下(仅用于常见的Apache Prefork模式): StartServers Apache启动时创建的子进程数量 MinSpareServers 最小空闲子进程数量 MaxSpareServers 最大空闲子进程数量 ServerLimit (此参数只要不比MaxClients小就可以了) MaxClients 最大同时能够处理的请求数 MaxRequestsPerChild 每个子进程处理多少请求之后自动结束,并且释放内存 KeepAlive 是否保持连接 MaxKeepAliveRequests 并发保持连接的最大数量 KeepAliveTimeout 保持连接超时设置 在Prefork工作模式下,Apache在启动之后会先创建StartServers设置的子进程数量,然后每隔一秒以指数形式(2^)创建更多的子进程,直到子进程的总数达到MinSpareServers设置的数量为止。在Prefork模式下面,Apache无需等到连接请求时才生成新的子进程,所以在响应速度上会有更好的性能。同时MaxSpareServers参数规定了Apache最多能够存在的空闲进程数量,在空闲进程数量超过MaxSpareServers设置后,Apache会自动关闭部分空闲进程,以避免过多的空闲进程占用大量的内存。所以将MinSpareServers和MaxSpareServers的参数改小,会减少VPS内存的占用,但同时也会降低VPS的性能。但是对于只有512M内存的低端VPS来说,服务器的稳定性远比性能更为重要,性能再好,打不开网站也是白搭。 MaxClients参数是对性能和内存占用影响最大的参数,直接关系到并发访问的数量,超过MaxClients设置的额外连接请求,需要等待现有连接断开之后,才能进行正常的连接。所以MaxClients如果设置的太小,会造成长时间的等待,进而会严重影响访问者的心情;但是如果设置的太大,在有大量并发访问的情况下,Apache会很快用光所有的VPS内存,导致VPS宕机。所以MaxClients参数需要进行仔细的计算。对于一台512M的VPS来说,通常CentOS启动后,加上Kloxo和MySQL,会占用大约80~100M的内存,所以能够供apache使用的内存不能超过400M。而通过top命令,可以看到一般一个httpd进程会占用大约4M的内存(在Prefork模式下面),所以在这样的情况下,MaxClients的设置不宜超过150。150个并发连接,对于普通的网站来说,已经是足够了,如果你的网站访问量非常之大,那么,直接入手高端服务器即可。 MaxRequestsPerChild参数同样会影响性能和内存。影响性能的地方在于,如果将MaxRequestsPerChild的值设置的太小,那么Apache需要不停的创建新的子进程来替代因为请求数达到限额的旧进程,而结束旧进程和创建新进程都需要消耗CPU时间,所以大量的结束、创建动作会让一个VPS消耗不少的CPU,而通常一个VPS的CPU也是有限制的,所以过多的CPU消耗会明显影响VPS的性能;反过来说,如果MaxRequestsPerChild设置成太大,或者干脆设置成0(不限制),那么如果在进程寿命结束前,碰到内存溢出之类的错误,VPS也会很快因内存消耗完毕而宕机。 KeepAlive参数,是否保持链接,通常设置成On(打开)会提高性能,但是同时将KeepAliveTimeout超时设置的小一点,比如5s,会让整个VPS显的更有效率。因为当KeepAliveTimeout设置的过大的时候,一个子进程在超时之前将无法服务更多的用户,这样势必Apache需要打开更多的进程,进行会消耗本来就不充裕的VPS内存。 附抓抓的512M VPS的httpd.conf相关参数供参考: StartServers 5 MinSpareServers 5 MaxSpareServers 20 ServerLimit 128 MaxClients 128 MaxRequestsPerChild 1000 KeepAlive On MaxKeepAliveRequests 200 KeepAliveTimeout [...]
免费MySQL服务器
星期四, 十月 22, 2009 9:56 没有评论版本更新:2010-07-25 版本B 都挂了,嗯嗯~~ 初学的Blogger通常会使用一些免费空间,其中部分免费空间(特别是部分国内的免费空间),往往以免费作为收费空间的噱头用来吸引顾客,而本身 的免费空间功能实在有限,甚至连数据库都没有,于是,就成了一个食之无味、弃之可惜的鸡肋。这个时候,免费的MySQL服务器往往可以解决Blogger 的燃眉之急。 Google搜索一下,常用的www.db4free.net以及www.freesql.org已经稳定了很多年,但是因为这两个免费MySQL 太流行,用户太多,所以速度上显然不尽如人意。抓抓在这里推荐两个比较生僻的MySQL服务器,测试了一下速度还是相当不错的。 1. bluesql.net bluesql.net的主机在HostGator,也就是著名的ThePlanet机房,连接全球的速度都相当不错。同时bluesql.net 注册也是及其简单,只需点击网站左侧的“Create Database”,并且填写一个简单的表格即可完成注册,同时获得数据库地址以及phpMyAdmin权限。 bluesql.net相关软件版本如下: *running MySql 5.1.30 *phpMyAdmin 2.11.5.1 MySQL5.1.30对于运行大多数基于MySQL的程序应该毫无问题,并且bluesql.net十分关注新版本的MySQL,MySQL一有更新,服务器的软件也会及时跟这变更。 bluesql.net从2006年开始服务,到现在已经有3年历史,所以不必担心bluesql.net是一个Fly by Night的网站,也不必担心资料的安全性问题。当然,常规性的备份还是必不可少的。 2. fudallyvisual.com fudallyvisual.com是一个相当新的免费MySQL空间,09年才开始运营,服务器位于Godaddy的机房(貌似),速度也是相当不错 的。同样,fudallyvisual.com的注册也是十分简单,在网站的右上方可以找到一个“register”的链接,点击进去填完必要的资料,即 可获得一个300M大小的免费MySQL数据库,足够一般用户使用。 fudallyvisual.com的MySQL版本是5.0.45,相比bluesql.net它的版本稍微显的有些陈旧了,更新也不如bluesql.net那么及时,但是也够用,大多数成熟的软件通常不会那么快更新底层的PHP以及MySQL版本:) 以上两个是抓抓发现的比较好的免费MySQL数据库,快速,而且管理方便,同时支持外链的特性可以让数个网站共用一个数据库并且做到能够同步更新。 但是对于免费的数据库空间来说,经常性的备份数据库,是一个必须要进行的工作,否则到时候辛苦积累了n久的数据一夜之间没了,就不要来抓抓这里诉苦啦~
