Archive for the ‘教程心得’ Category

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 [...]

日志分类: 教程心得 标签云: , , , , ,

实用型WordPress插件推荐

星期四, 十月 22, 2009 9:55 没有评论

版本更新:2009-08-18 版本C 1. FireStats插件 非常优秀的WordPress流量统计插件,与其他的Google Analytics,Yahoo统计,StatCounter等不同,FireStats是一个本地插件,下载以后就和FireStats的官方网站没有 关系了,只要你的服务器不挂,及时转移空间,FireStats也会一直累计统计。 FireStates的统计数据比较准确,分别由来源网站统计、热门文章统计、浏览器/操作系统统计、来源国家统计以及具体的点击状态统计,数据十分的简明细致,很适合Blog用户使用。 FireStats官方网站:http://firestats.cc/,下载后解压缩,将整个firestats目录上传到服务器的wp-content/plugins,然后在WordPress后台中激活FireStats插件即可。 2. Google XML Sitemaps Google XML Sitemaps用于自动生成和更新博客的sitemap,会非常有利于搜索引擎的收录和更新,是WordPress博客SEO必备插件。 在Google XML Sitemaps官方网站下 载最新版本的插件后,上传到wp-content/plugins,然后在WordPress后台的设置-XML Sitemap里面就可以找到XML Sitemap的选项,以及进行第一次Sitemap的生成。成功生成sitemap.xml.gz和sitemap.xml之后,以后每次更新Blog 的内容,Sitemap都会自动更新并提交给相应的搜索引擎。 3. Whydowork Adsense Whydowork Adsense用于自动在WordPress页面和文章之中插入制定的Adsense以及其他广告信息。相比其他Adsense插件,Whydowork Adsense有一些他自己的优势: 方便简洁,Whydowork Adsense只有一个文件,上传至plugins目录,激活即可工作,兼容最新的WordPress 2.8版本。 可以自行设置广告代码以及广告的位置,支持首页,分类页面,存档页面,文章页面的广告放置,支持MobilePress优化后的手机浏览器广告。 通过手动放置广告代码,支持几乎所有的常规广告,包含Adsense,Adbrite,百度等等,并且提供相对应的预览功能,方便确认广告格式。 目前BlogFans.info使用的广告插件即是Whydowork Adsense。 4. WP-Sticky WP-Sticky是一个实现类似论坛置顶功能的插件,有两个主要功能: 一是文章置顶(Announcement),即把重要文章放置在Blog的最顶端,方便用户及时浏览。 二是文章位置固定,即把文章固定在第几页第几篇。 目前BlogFans.info的“置顶”文章用的就是WP-Sticky插件,支持最新的WordPress 2.8版本。 5. WordPress Database Backup WordPress Database Backup是WordPress最重要的插件之一。 不管各位Blogger用的是商业收费空间,还是其他的免费空间,无一不存在诸如服务器崩溃,网站被黑,空间商跑路等等不稳定因素。设想一下,辛辛苦苦写了好多年的Blog数据一下子消失,对于每个Blogger对于博客的写作激情会有一个相当大的打击。 而WordPress Database Backup插件就是用来备份WordPress的数据库,以避免在突发事件发生时,能够及时有效的恢复Blog内容。 WordPress [...]

日志分类: 教程心得 标签云: , ,

让WordPress利用SMTP代替mail()发送邮件

星期四, 十月 22, 2009 9:50 2 条评论

版本更新:2009-02-22 版本A WordPress很多地方需要用到邮件发送,例如安装的时候需要发送欢迎信件,有新的评论的时候也需要发邮件提醒,并且最关键的是我们常用的wp_backup插件同样需要用到服务器的邮件发送功能来发送备份好的数据库。 可是,有一些收费或者免费主机供应商因为担心垃圾邮件太多,关闭了PHP的mail()函数,而事实上mail()的用法也是非常的囧,并且以mail()函数发出的邮件也会被很多电子邮件服务商拒收。 所以利用SMTP代替mail()函数发送WordPress的邮件,是一种很理想的方法。 获利于全世界无数为WordPress辛勤工作的PHPer,有很多SMTP插件我们可以直接拿来使用。这里只是简单的介绍一款WP-Mail-SMTP的用法。 很简单,下载解压上传激活,如附图: 接下去我们要选择一个合适的SMTP服务器,比如,Gmail的SMTP服务器。 以Gmail的服务器来说,abc@gmail.com为例,因为Gmail的SMTP要求加密,所以得选择”Use SSL encryption”,SMTP Host选择smtp.gmail.com,端口465,用户名abc@gmail.com,密码就密码咯~~ 然后,就可以去测试一下,不出意外的话就成功了,然后所有的WordPress用到的邮件发送,都会按照WP-Mail-SMTP的设置去发送。

日志分类: 教程心得 标签云: , ,

WordPress简介

星期四, 十月 22, 2009 9:48 没有评论

版本更新:2008-01-11 版本A 1. 什么是WordPress? WordPress是一种使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL 数据库的服务器上架设自己的网志。 具体可以参阅官方网站wordpress.org。 2. 最新的WordPress中文版哪里下载? 请到WPCN下载,请注意选择中文语言包或者是完整的中文WordPress安装文件. 3. 如何架设WordPress? 请点击这里参阅本站WordPress架设相关教程。

日志分类: 教程心得 标签云: ,

WordPress快速安装

星期四, 十月 22, 2009 9:47 没有评论

版本更新:2008-12-30 版本A WordPress作为一个已经很完善的Blog系统,安装非常的简单,步骤如下: 1. 上传WordPress源文件到服务器,可以通过FTP直接上传或者通过WEB界面打包上传再解压缩,方式取决于您的网络以及您的耐心程度。 2. 在浏览器里面输入您的网址,如http://www.example.com 3. 如下面示图安装WordPress

日志分类: 教程心得 标签云: ,