<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JavaWo &#187; VPS</title>
	<atom:link href="http://www.javawo.com/tag/vps/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.javawo.com</link>
	<description>JavaWo关注互联网前沿的Blog.</description>
	<lastBuildDate>Thu, 13 May 2010 12:03:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>针对WordPress的Apache VPS优化</title>
		<link>http://www.javawo.com/optimize-your-apache-vps-for-wordpress/</link>
		<comments>http://www.javawo.com/optimize-your-apache-vps-for-wordpress/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 03:53:16 +0000</pubDate>
		<dc:creator>JavaWo</dc:creator>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[VPS]]></category>

		<guid isPermaLink="false">http://www.javawo.com/?p=252</guid>
		<description><![CDATA[如果你现在正在使用Wordpress，如果你的VPS主机内存不充足，下面这篇文章可以帮优化Apache，从而提升VPS的性能。
削减模块
用你熟悉的文本编辑器打开服务器上的httpd.conf文档，找到一排以LoadModule为开头的行。类似于这样：
# Example:
# LoadModule foo_module modules/mod_foo.so
# LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_alias_module modules/mod_authn_alias.so
找到的行可能会比上面列出的多得多。你可以通过“注释它们”的方法来关闭那些不需要的模块，也就是在不需要的模块所在行的前面添加一个“#”字符，例如： 
# LoadModule auth_basic_module modules/mod_auth_basic.so
你将关闭一大堆一个基本的WordPress网站不需要用到的模块。事实上，我建议你注释掉除了下面列出的模块之外的所有模块： 
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule expires_module modules/mod_expires.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
LoadModule rewrite_module modules/mod_rewrite.so
下面是你可能注释掉的一行：
LoadModule negotiation_module modules/mod_negotiation.so
mod_negotiation提供了一些你不需要的函数：自动完成输入错误的链接，提供多种语言选择的网站，也会用到这个模块。如果你的网站提供了多种语言选择，你就不要注释掉这个模块了。
当你注释掉了mod_negotiation.so模块，找到下面的两行（它们在不同的位置），注释掉，进而获得更多的性能提高： 
LanguagePriority en ca cs da de el eo es et fr he [...]]]></description>
			<content:encoded><![CDATA[<p>如果你现在正在使用Wordpress，如果你的VPS主机内存不充足，下面这篇文章可以帮优化Apache，从而提升VPS的性能。<br />
<strong>削减模块</strong><br />
用你熟悉的文本编辑器打开服务器上的<em>httpd.conf</em>文档，找到一排以<em>LoadModule</em>为开头的行。类似于这样：</p>
<blockquote><p># Example:<br />
# LoadModule foo_module modules/mod_foo.so<br />
# LoadModule auth_basic_module modules/mod_auth_basic.so<br />
LoadModule auth_digest_module modules/mod_auth_digest.so<br />
LoadModule authn_file_module modules/mod_authn_file.so<br />
LoadModule authn_alias_module modules/mod_authn_alias.so</p></blockquote>
<p>找到的行可能会比上面列出的多得多。你可以通过“注释它们”的方法来关闭那些不需要的模块，也就是在不需要的模块所在行的前面添加一个“#”字符，例如： <span id="more-252"></span></p>
<blockquote><p># LoadModule auth_basic_module modules/mod_auth_basic.so</p></blockquote>
<p>你将关闭一大堆一个基本的WordPress网站不需要用到的模块。事实上，我建议你注释掉除了下面列出的模块之外的所有模块： </p>
<blockquote><p>LoadModule authz_host_module modules/mod_authz_host.so<br />
LoadModule log_config_module modules/mod_log_config.so<br />
LoadModule expires_module modules/mod_expires.so<br />
LoadModule deflate_module modules/mod_deflate.so<br />
LoadModule headers_module modules/mod_headers.so<br />
LoadModule setenvif_module modules/mod_setenvif.so<br />
LoadModule mime_module modules/mod_mime.so<br />
LoadModule autoindex_module modules/mod_autoindex.so<br />
LoadModule dir_module modules/mod_dir.so<br />
LoadModule alias_module modules/mod_alias.so<br />
LoadModule rewrite_module modules/mod_rewrite.so</p></blockquote>
<p>下面是你可能注释掉的一行：</p>
<blockquote><p>LoadModule negotiation_module modules/mod_negotiation.so</p></blockquote>
<p>mod_negotiation提供了一些你不需要的函数：自动完成输入错误的链接，提供多种语言选择的网站，也会用到这个模块。如果你的网站提供了多种语言选择，你就不要注释掉这个模块了。</p>
<p>当你注释掉了mod_negotiation.so模块，找到下面的两行（它们在不同的位置），注释掉，进而获得更多的性能提高： </p>
<blockquote><p>LanguagePriority en ca cs da de el eo es et fr he hr it ja ko ltz nl nn no pl pt pt-BR ru sv zh-CN zh-TW</p></blockquote>
<blockquote><p>ForceLanguagePriority Prefer Fallback</p></blockquote>
<p>关闭这些模块后重启服务器，你将看到明显的性能提升。是的，它们消耗了一大块你有限的系统资源。</p>
<p><strong>Apache MPM Prefork模块</strong><br />
另一个方便的改进就是对Apache MPM prefork模块进行调整。这里假设你的Apache运行在prefork模式下（如果你的服务器是个小VPS，强烈推荐使用该模式）。</p>
<p>这个模块将对Apache开始运行的进程和空闲进程数量进行控制和优化。当你使用小VPS来处理MySQL和Apache时，这个模块显得尤其重要。除非你的网站有繁忙的流量导致VPS的过载，你就不必运行于默认设置下（你时，你需要一台独立主机）。在你的httpd.conf文件中找到下面的几行： </p>
<blockquote><p><ifmodule prefork.c><br />
StartServers       8<br />
MinSpareServers    5<br />
MaxSpareServers   20<br />
ServerLimit      256<br />
MaxClients       256<br />
MaxRequestsPerChild  4000<br />
</ifmodule></p></blockquote>
<p>MinSpareservers和MaxSpareServers分别设置空闲子进程的最小和最大数量，StartServers设置了服务器启动时建立的子进程数量。</p>
<p>ServerLimit则是控制MaxClients所能使用的最大值。缩减MaxClients能让运行动态内容（比如：WordPress）的服务器有很大的改变。如果你的VPS遭遇到流量的大幅增加，而你的MaxClients设置的太高的话，你的服务器将会无限循环工作于从物理内存交换页面到虚拟内存中，最终导致宕机。一般计算适当的MaxClients值取决于你总共可用的系统内存除于每个Apache进程使用的内存。例如，如果你还有500MB的内存可用于Apache，每个Apache进程大约使用20MB的内存，你可以设置你的MaxClients为（512-12）/ 10 = 50（这个计算好像原文中有误）。使用命令top可以得到你VPS实时内存的使用。</p>
<p>MaxRequestsPerChild设置每个子进程在其生存期内允许伺服的最大请求数量。我们可以安全地缩减此项值，从而得到一个小的提升。</p>
<p>那么让我们开始减小这些值吧： </p>
<blockquote><p><ifmodule prefork.c><br />
StartServers       3<br />
MinSpareServers    3<br />
MaxSpareServers   10<br />
ServerLimit      50<br />
MaxClients       50<br />
MaxRequestsPerChild  2000<br />
</ifmodule></p></blockquote>
<p>需要注意的是：这些不是“最好”的值，它们要根据你的VPS的大小和你的Apache进程大小等来决定。</p>
<p><strong>最优化KeepAlive</strong><br />
KeepAlive允许你的访问者在同一个TCP连接上完成多个请求，理论上它有助于提升反应时间，因为你的访问者可以在同一个连接上请求你的网页，图片和javascripts。遗憾地是，Apache对于每个请求都需要一个工作进程去处理。默认的每个工作进程将持续打开15秒来处理每个请求，即使你的访问者已经不再使用它了！这也就意味着你的系统在任何时间都是缺少工作进程的。我们都希望我们那只有有限资源的小VPS能有确实在工作的工作进程。实现的方法之一是关闭KeepAlive。在你的httpd.conf文件中找到下面的一行： </p>
<blockquote><p>KeepAlive On</p></blockquote>
<p>然后将它改变为： </p>
<blockquote><p>KeepAlive Off</p></blockquote>
<p>如果你的网站有大量的图片和javascripts，通常最好还是让KeepAlive保持打开，然后做些调整。</p>
<p>如果你决定让KeepAlive保持打开状态，改变默认的KeepAliveTimeout值就显得很重要了。它能避免连接没有在使用时仍然打开。在你的httpd.conf文件中找到下面一行： </p>
<blockquote><p>KeepAliveTimeout 15</p></blockquote>
<p>你只希望连接打开2秒钟，这已经足够用户打开大部分必须的文件。所以改变此行为： </p>
<blockquote><p>KeepAliveTimeout 2</p></blockquote>
<p>如果你希望让KeepAlive保持打开状态，同时应该增加MaxKeepAliveRequests。设置它为更大的值让每个连接可以处理更多的请求，从而增加效率。找到这行：</p>
<blockquote><p>MaxKeepAliveRequests 100</p></blockquote>
<p>改变为：</p>
<blockquote><p>MaxKeepAliveRequests 200</p></blockquote>
<p><strong>调整Timeout</strong><br />
另一个较小的调整是改变TimeOut指令，这个调整可以得到小的性能提升和减小DDOS攻击的效果。这个指令用于设置Apache当接收新请求，处理请求和返回响应前需等待多少秒。找到这行： </p>
<blockquote><p>Timeout 120</p></blockquote>
<p>改变为： </p>
<blockquote><p>Timeout 40</p></blockquote>
<p><strong>重启Apache，感受性能的提升吧！</strong><br />
现在重启Apache，感受性能的提升吧！请别忘了经常备份你的httpd.conof文档，以便有错误出现时你可以恢复到改变之前的状态。请注意这里仅仅是一些简单的设置，如果你的服务器因为它们而出现问题我们将不负相关的责任。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javawo.com/optimize-your-apache-vps-for-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>VPS内存优化的一点心得</title>
		<link>http://www.javawo.com/vps-memory-optimization/</link>
		<comments>http://www.javawo.com/vps-memory-optimization/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 15:04:44 +0000</pubDate>
		<dc:creator>JavaWo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[VPS]]></category>

		<guid isPermaLink="false">http://www.javawo.com/?p=42</guid>
		<description><![CDATA[才买的Godaddy 256内存的vps 还没有开始正式用就Cannot allocate memory！没办法还是地优化。
服务器资源
对于网站来说主要是CPU、TCP连接数这两者。 CPU表现在任务数上，在Linux下使用平均负载(loadavg)来衡量。可通过以下命令来查看
cat /proc/loadavg
该文件显示了系统当前的平均负载和进程状况。
0.20 0.18 0.12 1/80 11206
前三列分别为前1分钟、5分钟、15分钟内的平均负载。第四列为正在执行的进程数和系统的总进程数。第五列为上次执行的进程id。
对于单CPU的服务器，loadavg高于1，表明任务队列出现了等待，CPU忙不过来了。超过2以上就会明显感到性能降低了。
TCP连接数可通过以下命令查看：
netstat -ant &#124; grep :80 &#124; wc -l
netstat -n &#124; awk &#8216;/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}&#8217;
　　返回结果示例：
　　LAST_ACK 5
　　SYN_RECV 30
　　ESTABLISHED 1597
　　FIN_WAIT1 51
　　FIN_WAIT2 504
　　TIME_WAIT 1057
　　其中的SYN_RECV表示正在等待处理的请求数；ESTABLISHED表示正常数据传输状态；TIME_WAIT表示处理完毕，等待超时结束的请求数。
Apcche内存使用量可以使用下面命令：
ps -U apache u&#124;awk &#8216;{S+=$6} END {print S}&#8217;
优化Apache(httpd)
KeepAlive 是否允许持续连接
MaxKeepAliveRequests 允许的持续连接的最大数
KeepAliveTimeout 持续连接在没有请求多少秒后切断
StartServers 最初启动时启动多少个服务器进程
MinSpareServers 空闲服务器进程的最小数
MaxSpareServers 空闲服务器进程的最大数
MaxRequestsPerChild 每个子进程处理的最大请求数
KeepAlive
前三个KeepAlive相关的指令用来设置持续连接。通常都是每个HTTP请求对应一个TCP连接，但对于一个包含许多图片的网页来说，客户端会在瞬间发出多个HTTP请求，此时多次建立TCP连接会大大降低响应速度。此时通过持续连接，可以允许用户在一个TCP连接中发出多个HTTP请求，减少TCP连接建立次数，提高响应速度。
这种情况下，应当通过access_log统计出连续HTTP请求出现的次数、间隔时间、访问量，以确定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout [...]]]></description>
			<content:encoded><![CDATA[<p>才买的Godaddy 256内存的vps 还没有开始正式用就Cannot allocate memory！没办法还是地优化。</p>
<p><strong>服务器资源</strong><br />
对于网站来说主要是CPU、TCP连接数这两者。 CPU表现在任务数上，在Linux下使用平均负载(loadavg)来衡量。可通过以下命令来查看</p>
<blockquote><p>cat /proc/loadavg</p></blockquote>
<p>该文件显示了系统当前的平均负载和进程状况。</p>
<blockquote><p>0.20 0.18 0.12 1/80 11206</p></blockquote>
<p>前三列分别为前1分钟、5分钟、15分钟内的平均负载。第四列为正在执行的进程数和系统的总进程数。第五列为上次执行的进程id。</p>
<p>对于单CPU的服务器，loadavg高于1，表明任务队列出现了等待，CPU忙不过来了。超过2以上就会明显感到性能降低了。<br />
TCP连接数可通过以下命令查看：</p>
<blockquote><p>netstat -ant | grep :80 | wc -l</p></blockquote>
<blockquote><p>netstat -n | awk &#8216;/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}&#8217;</p></blockquote>
<p>　　返回结果示例：<br />
　　LAST_ACK 5<br />
　　SYN_RECV 30<br />
　　ESTABLISHED 1597<br />
　　FIN_WAIT1 51<br />
　　FIN_WAIT2 504<br />
　　TIME_WAIT 1057<br />
　　其中的SYN_RECV表示正在等待处理的请求数；ESTABLISHED表示正常数据传输状态；TIME_WAIT表示处理完毕，等待超时结束的请求数。</p>
<p>Apcche内存使用量可以使用下面命令：</p>
<blockquote><p>ps -U apache u|awk &#8216;{S+=$6} END {print S}&#8217;</p></blockquote>
<p><strong>优化Apache(httpd)</strong></p>
<p><strong>KeepAlive</strong> 是否允许持续连接<br />
<strong>MaxKeepAliveRequests</strong> 允许的持续连接的最大数<br />
<strong>KeepAliveTimeout </strong>持续连接在没有请求多少秒后切断<br />
<strong>StartServers</strong> 最初启动时启动多少个服务器进程<br />
<strong>MinSpareServers</strong> 空闲服务器进程的最小数<br />
<strong>MaxSpareServers</strong> 空闲服务器进程的最大数<br />
<strong>MaxRequestsPerChild</strong> 每个子进程处理的最大请求数</p>
<p><strong>KeepAlive</strong></p>
<p>前三个KeepAlive相关的指令用来设置持续连接。通常都是每个HTTP请求对应一个TCP连接，但对于一个包含许多图片的网页来说，客户端会在瞬间发出多个HTTP请求，此时多次建立TCP连接会大大降低响应速度。此时通过持续连接，可以允许用户在一个TCP连接中发出多个HTTP请求，减少TCP连接建立次数，提高响应速度。</p>
<p>这种情况下，应当通过access_log统计出连续HTTP请求出现的次数、间隔时间、访问量，以确定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小发挥不了持续连接的作用；太大了，持续连接迟迟不断，浪费TCP连接数不说，更糟糕的是系统中的 httpd 进程数目会因此不断增加，使得系统负载升高，甚至会导致服务器失去响应。</p>
<p>但是在处理动态网页请求时，由于用户很少会瞬间请求多个动态网页（一般都是打开页面之后阅读好半天才点下一页），此时打开KeepAlive无异于浪费TCP连接数。</p>
<p>结论就是，放动态网页的就 KeepAlive Off 以提高吞吐量，放静态内容如图片、js代码等就 KeepAlive On 以减少TCP连接建立次数。</p>
<p><strong>服务器进程数</strong></p>
<p>再说说下面的 StartServers、MinSpareServers、MaxSpareServers。 StartServers基本不用修改，因为Apache会自动调节子进程数。 MinSpareServers和MaxSpareServers是空闲子进程数目，何为空闲子进程？假设某一时刻系统中共有30个httpd进程，其中一个是父进程，20个在处理请求，那么空闲子进程数就是9个。</p>
<p>空闲进程少了，大量的突发请求会使服务器疲于进程创建，降低效率；而太多反而会增加系统进程数，增大系统负载。</p>
<p>实际上，默认值已足够处理一般的突发请求，所以除非是流量特别特别巨大的网站，否则不要修改这些设置。</p>
<p>MaxRequestsPerChild</p>
<p>这个值设置子进程在处理多少个请求之后自动结束。这个选项是用来防止进程由于内存泄漏等使用内存过多。一般默认值即可。</p>
<p>总结</p>
<p>说来说去其实最重要的还是 KeepAlive 的设置，而性能调节也就是调整 KeepAlive、KeepAliveTimeout 值。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javawo.com/vps-memory-optimization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux VPS查看内存占用</title>
		<link>http://www.javawo.com/linux-vps-memory/</link>
		<comments>http://www.javawo.com/linux-vps-memory/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 13:31:34 +0000</pubDate>
		<dc:creator>JavaWo</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[VPS]]></category>

		<guid isPermaLink="false">http://www.javawo.com/?p=22</guid>
		<description><![CDATA[很多VPS用户在查看Linux操作系统的内存使用情况方面有误解，我们经常给客户解释怎样看一个Linux VPS的内存使用情况，总结如下：
看内存最方便的命令是free -m，在我的VPS上运行，结果如下：

[root@host ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         [...]]]></description>
			<content:encoded><![CDATA[<p>很多VPS用户在查看Linux操作系统的内存使用情况方面有误解，我们经常给客户解释怎样看一个Linux VPS的内存使用情况，总结如下：</p>
<p>看内存最方便的命令是free -m，在我的VPS上运行，结果如下：<br />
<code><br />
[root@host ~]# free -m<br />
             total       used       free     shared    buffers     cached<br />
Mem:          1024       1005         19          0          9        782<br />
-/+ buffers/cache:        212        811<br />
Swap:          996          0        995<br />
[root@host ~]#<br />
</code><br />
明显能看出，这个VPS一共有内存1024M，没错！</p>
<p>但当前VPS已经占用的内存有多少呢？大多数用户的答案是1005M，其实不然。当前VPS占用的内存应该是212M，也就是1005下面那个数字：212，代表已经占用的内存。后面的那个811，代表当前VPS的可用内存。”-/+ buffers/cache:”开头的这行才是实际的占用内存和可用内存。</p>
<p>为什么会这样？这是由Linux Kernel的内存管理方式决定的，buffers,cached可以看作是被程序或者内核用过的内存，这些内存曾经被使用过，但现在已经被释放了，释放之后Linux Kernel把他们当作buffers或cached ，这样下次有程序申请内存的时候，内核可以快速响应。所以buffers和cached部分的内存应该看成是可用内存。</p>
<p>所以，看内存使用情况，应该看”-/+ buffers/cache:”开头的这一行，如果这一行最后的数字接近0，那么说明VPS的内存快用完了，这时候VPS反应就比较慢。如果这个数字还比较大，那么VPS还有较多内存可用，系统不应该慢。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javawo.com/linux-vps-memory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
