<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[VPS内存优化的一点心得]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sat, 19 Mar 2011 06:46:05 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	<br/>才买的Godaddy 256内存的vps 还没有开始正式用就Cannot allocate memory！没办法还是地优化。<br/><br/>服务器资源<br/>对于网站来说主要是CPU、TCP连接数这两者。 CPU表现在任务数上，在Linux下使用平均负载(loadavg)来衡量。可通过以下命令来查看<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;cat /proc/loadavg<br/><br/>该文件显示了系统当前的平均负载和进程状况。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;0.20 0.18 0.12 1/80 11206<br/><br/>前三列分别为前1分钟、5分钟、15分钟内的平均负载。第四列为正在执行的进程数和系统的总进程数。第五列为上次执行的进程id。<br/><br/>对于单CPU的服务器，loadavg高于1，表明任务队列出现了等待，CPU忙不过来了。超过2以上就会明显感到性能降低了。<br/>TCP连接数可通过以下命令查看：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;netstat -ant &#124; grep :80 &#124; wc -l<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;netstat -n &#124; awk ‘/^tcp/ &#123;++S[$NF]&#125; END &#123;for(a in S) print a, S[a]&#125;’<br/><br/>　　返回结果示例：<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表示处理完毕，等待超时结束的请求数。<br/><br/>Apcche内存使用量可以使用下面命令：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;ps -U apache u&#124;awk ‘&#123;S+=$6&#125; END &#123;print S&#125;’<br/><br/>优化Apache(httpd)<br/><br/>KeepAlive 是否允许持续连接<br/>MaxKeepAliveRequests 允许的持续连接的最大数<br/>KeepAliveTimeout 持续连接在没有请求多少秒后切断<br/>StartServers 最初启动时启动多少个服务器进程<br/>MinSpareServers 空闲服务器进程的最小数<br/>MaxSpareServers 空闲服务器进程的最大数<br/>MaxRequestsPerChild 每个子进程处理的最大请求数<br/><br/>KeepAlive<br/><br/>前三个KeepAlive相关的指令用来设置持续连接。通常都是每个HTTP请求对应一个TCP连接，但对于一个包含许多图片的网页来说，客户端会在瞬间发出多个HTTP请求，此时多次建立TCP连接会大大降低响应速度。此时通过持续连接，可以允许用户在一个TCP连接中发出多个HTTP请求，减少 TCP连接建立次数，提高响应速度。<br/><br/>这种情况下，应当通过access_log统计出连续HTTP请求出现的次数、间隔时间、访问量，以确定 MaxKeepAliveRequests 和 KeepAliveTimeout 的值。 KeepAliveTimeout 太小发挥不了持续连接的作用；太大了，持续连接迟迟不断，浪费TCP连接数不说，更糟糕的是系统中的 httpd 进程数目会因此不断增加，使得系统负载升高，甚至会导致服务器失去响应。<br/><br/>但是在处理动态网页请求时，由于用户很少会瞬间请求多个动态网页（一般都是打开页面之后阅读好半天才点下一页），此时打开KeepAlive无异于浪费TCP连接数。<br/><br/>结论就是，放动态网页的就 KeepAlive Off 以提高吞吐量，放静态内容如图片、js代码等就 KeepAlive On 以减少TCP连接建立次数。<br/><br/>服务器进程数<br/><br/>再说说下面的 StartServers、MinSpareServers、MaxSpareServers。 StartServers基本不用修改，因为Apache会自动调节子进程数。 MinSpareServers和MaxSpareServers是空闲子进程数目，何为空闲子进程？假设某一时刻系统中共有30个httpd进程，其中一个是父进程，20个在处理请求，那么空闲子进程数就是9个。<br/><br/>空闲进程少了，大量的突发请求会使服务器疲于进程创建，降低效率；而太多反而会增加系统进程数，增大系统负载。<br/><br/>实际上，默认值已足够处理一般的突发请求，所以除非是流量特别特别巨大的网站，否则不要修改这些设置。<br/><br/>MaxRequestsPerChild<br/><br/>这个值设置子进程在处理多少个请求之后自动结束。这个选项是用来防止进程由于内存泄漏等使用内存过多。一般默认值即可。<br/><br/>总结<br/><br/>说来说去其实最重要的还是 KeepAlive 的设置，而性能调节也就是调整 KeepAlive、KeepAliveTimeout 值。<br/>来源：http://www.javawo.com/vps-memory-optimization/
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] VPS内存优化的一点心得]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>