<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/daxi8" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/daxi8" type="application/rss+xml"></fs:self_link><lastBuildDate>Sat, 03 Dec 2011 13:26:36 GMT</lastBuildDate><title>技术起点</title><description>专注互联网, 专注web开发技术</description><image><url>http://www.feedsky.com/feed/daxi8/sc/gif</url><title>技术起点</title><link>http://daxi.me/</link></image><link>http://daxi.me/</link><language>zh-CN</language><pubDate>Sat, 03 Dec 2011 13:26:36 GMT</pubDate><item><title>android开发者应该学习的十大开源应用</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723263/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;Android开发带来新一轮热潮让很多移动开发者都投入到这个浪潮中去了，创造了许许多多相当优秀的应用。其中也有许许多多的开发者提供了应用开 源项 目，贡献出他们的智慧和创造力。学习开源代码是掌握技术的一个最佳方式。下面推荐几个应用开源项目，这些项目不仅提供了优秀的创意，也可以直接掌握 Android内核的接口使用.&lt;/p&gt;&lt;p&gt;1.Android团队提供的示例项目&lt;br /&gt;
如果不是从学习Android SDK中提供的那些样例代码开始，可能没有更好的方法来掌握在Android这个框架上开发。由Android的核心开发团队提供了15个优秀的示例项 目，包含了游戏、图像处理、时间显示、开始菜单快捷方式等。&lt;br /&gt;
地址：http://code.google.com/p/apps-for-android/&lt;/p&gt;&lt;p&gt;2.Remote Droid&lt;br /&gt;
RemoteDroid是一个Android应用，能够让用户使用自己的无线网络使用无线键盘、触摸屏操作手机。这个项目为开发者提供了如网络连接、触 摸屏手指运动等很好的样例。&lt;br /&gt;
地址：http://code.google.com/p/remotedroid/&lt;/p&gt;&lt;p&gt;3.TorProxy和Shadow&lt;br /&gt;
TorProxy应用实现了Android手机无线电电传通讯(TOR)，和Shadow应用一起使用，可以使用手机匿名上网。从该项目源代码中，可以 掌握socket连接、管理cookie等方法。&lt;br /&gt;
地址：http://www.cl.cam.ac.uk/research/dtg/code/svn/android-tor/&lt;/p&gt;&lt;p&gt;4、 Android SMSPopup&lt;br /&gt;
SMSPopup可以截获短信内容显示在一个泡泡形状的窗口中。从这个项目中可以掌握到如何使用内置的短信SMS接口。&lt;br /&gt;
地址：http://code.google.com/p/android-smspopup/&lt;/p&gt;&lt;p&gt;5、 Standup Timer&lt;br /&gt;
Standup Timer应用用于控制站立会议时间，类似秒表倒计时，可以提醒每个人的讲话时间已到，从而保证每个与会者使用时间一样。从该项目的代码中，可以学会如何 使用时间函数。另外，这个项目的代码是采用视图view、模型model严格分离的设计思路。&lt;br /&gt;
地址：http://github.com/jwood/standup-timer&lt;/p&gt;&lt;p&gt;6、 Foursquare&lt;br /&gt;
是 Foursquare.com的一个客户端应用，该应用主要分为两个模块：API(com.joelapenna.foursquare)和界面前端 (com.joelapenna.foursquared)两部分。从该项目代码中，可以学会如何同步、多线程、HTTP连接等技术。&lt;br /&gt;
地址：http://code.google.com/p/foursquared/&lt;/p&gt;&lt;p&gt;7、 Pedometer&lt;br /&gt;
Pedometer应用用于记录你每天走路步[]数的。尽管记录不一定精准，但是从这个项目中，可以学习几个不同的技术：加速器交互、语音更新、后台运行服 务等。&lt;br /&gt;
地址：http://code.google.com/p/pedometer/&lt;/p&gt;&lt;p&gt;8、 OpenSudoku-android&lt;br /&gt;
OpenSudoku是一个简单的九宫格数独游戏。从代码中可以学习到如何在视图中显示表格数据，以及如何和一个网站交互等技术。&lt;br /&gt;
地址：http://code.google.com/p/opensudoku-android&lt;/p&gt;&lt;p&gt;9、 ConnectBot&lt;br /&gt;
ConnectBot是Android平台的一个客户端安全壳应用。从该项目代码中，可以学习到很多Android安全方面的内容，这些是你在开发应用 时经常需要考虑的安全问题。&lt;br /&gt;
地址：http://code.google.com/p/connectbot /&lt;/p&gt;&lt;p&gt;10、 WordPress的Android应用&lt;br /&gt;
当然在最后不能不提Wordpress的Android应用了，这是Wordpress官方开发团队提供的一个项目。从代码中可以学习到XMLRPC调 用（当然还有更多的优秀内容）。&lt;br /&gt;
地址：http://android.svn.wordpress.org/trunk/&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723263/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723263/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>0</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>Android开发带来新一轮热潮让很多移动开发者都投入到这个浪潮中去了，创造了许许多多相当优秀的应用。其中也有许许多多的开发者提供了应用开 源项 目，贡献出他们的智慧和创造力。学习开源代码是掌握技术的...&lt;img src=&quot;http://www1.feedsky.com/t1/583723263/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723263/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Sat, 03 Dec 2011 21:26:36 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/12/334/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/12/334/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/12/334/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723263/5907172</fs:itemid></item><item><title>为centos添加iostat,sar等命令</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723264/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;首先yum安装sysstat包&lt;br /&gt;&lt;pre&gt;
    yum install sysstat
&lt;/pre&gt;&lt;br /&gt;
然后,开启sysstat服务&lt;br /&gt;&lt;pre&gt;
    /etc/init.d/sysstat start
&lt;/pre&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723264/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723264/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>0</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>首先yum安装sysstat包

    yum install sysstat

然后,开启sysstat服务

    /etc/init.d/sysstat start&lt;img src=&quot;http://www1.feedsky.com/t1/583723264/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723264/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Mon, 24 Oct 2011 11:41:30 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/10/333/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/10/333/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/10/333/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723264/5907172</fs:itemid></item><item><title>修改mysql的时区timezone</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723265/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;首先查看mysql的当前时区&lt;br /&gt;&lt;pre&gt;
  1. mysql&gt; show variables like '%time_zone%';   
   2. +------------------+--------+   
   3. | Variable_name    | Value  |   
   4. +------------------+--------+   
   5. | system_time_zone | CST    |    
   6. | time_zone        | SYSTEM |    
   7. +------------------+--------+   
   8. 2 rows in set (0.00 sec)   
&lt;/pre&gt;&lt;p&gt;可以通过修改my.cnf&lt;br /&gt;
在 [mysqld] 之下加&lt;/p&gt;&lt;p&gt;default-time-zone=timezone&lt;br /&gt;
来修改时区。如：&lt;br /&gt;
default-time-zone = '+8:00'&lt;br /&gt;
改了记得重启msyql喔&lt;br /&gt;
注意一定要在 [mysqld] 之下加 ，否则会出现 unknown variable 'default-time-zone=+8:00'&lt;br /&gt;
另外也可以通过命令 set time_zone = timezone&lt;br /&gt;
比如北京时间（GMT+0800）&lt;br /&gt;
set time_zone = '+8:00';&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723265/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723265/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>0</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>首先查看mysql的当前时区

  1. mysql&gt; show variables like '%time_zone%';   
   2. +------------------+-----...&lt;img src=&quot;http://www1.feedsky.com/t1/583723265/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723265/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 19 Oct 2011 22:08:36 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/10/332/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/10/332/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/10/332/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723265/5907172</fs:itemid></item><item><title>Android手机应用开发为适应不同分辨率你应该知道的</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723266/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;QVGA(Quarter VGA)：其分辨率为240×320像素，是当下智能手机最常用的分辨率级别。240×320像素的意思就是，手机屏幕横向每行有240个象素点，纵向每列有320个象素点，乘起来就是320×240=76800个象素点。早期的智能手机也大都采用这一显示级别的屏幕。&lt;br /&gt;
WQVGA(Wide QVGA)：分辨率为240×400或者240×432&lt;br /&gt;
HVGA(Half-size VGA)：其分辨率为480×320像素，宽高比为3:2。&lt;br /&gt;
VGA(Video Graphics Array)：是早起IBM提出的电脑显示标准，但现在已经应用于手机产品的显示上。其分辨率为640×480像素，宽高比为5：4。&lt;br /&gt;
WVGA(Wide VGA)：是VGA的宽屏模式，分辨率800×480像素。&lt;br /&gt;
FWVGA(Full Wide VGA)：分辨率为854×480象素，宽高比16:9&lt;br /&gt;
-----------------------------------------------------------------&lt;br /&gt;
Res文件夹中在比较低的版本中，只有一个drawable，而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个，至2.2、api level 8出现了drawable-xhdpi，还有drawable-nodpi、drawable-nodpi-1280×800等针对Android pad的分辨率。这些主要是为了支持多分辨率。区别：&lt;br /&gt;
drawable-xhdpi&lt;br /&gt;
drawable-hdpi里面存放高分辨率的图片，如WVGA（480x800）,FWVGA（480x854）&lt;br /&gt;
drawable-mdpi里面存放中等分辨率的图片，如HVGA（320x480）&lt;br /&gt;
drawable-ldpi里面存放低分辨率的图片，如QVGA（240x320）&lt;br /&gt;
drawable-nodpi&lt;br /&gt;
drawable-nodpi-1280×800&lt;br /&gt;
系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723266/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723266/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>0</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>QVGA(Quarter VGA)：其分辨率为240×320像素，是当下智能手机最常用的分辨率级别。240×320像素的意思就是，手机屏幕横向每行有240个象素点，纵向每列有320个象素点，乘起来就是...&lt;img src=&quot;http://www1.feedsky.com/t1/583723266/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723266/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Fri, 23 Sep 2011 09:44:07 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/09/331/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/09/331/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/09/331/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723266/5907172</fs:itemid></item><item><title>php字符串反转代码支持中文任意字符集</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723267/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;php字符串反转代码，兼容mbstring模块支持的所有字符集&lt;br /&gt;&lt;pre&gt;
function mb_strrev($string, $charset = 'UTF-8')
{
    $len = mb_strlen($string, $charset);
    $str = '';
    for ($i = $len; $i &gt;= 0; $i--)
    {
        $str .= mb_substr($string, $i, 1, $charset);
    }

    return $str;
}
&lt;/pre&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723267/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723267/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>0</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>php字符串反转代码，兼容mbstring模块支持的所有字符集

function mb_strrev($string, $charset = 'UTF-8')
{
    $len = mb...&lt;img src=&quot;http://www1.feedsky.com/t1/583723267/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723267/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Tue, 13 Sep 2011 16:52:28 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/09/330/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/09/330/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/09/330/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723267/5907172</fs:itemid></item><item><title>【转】5 款基于Web浏览器的建模工具</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723268/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;体验非常棒的&lt;br /&gt;
http://creately.com/&lt;br /&gt;
http://www.diagram.ly/&lt;br /&gt;
-------------------------------------&lt;br /&gt;
http://www.lucidchart.com/&lt;br /&gt;
http://www.gliffy.com/&lt;br /&gt;
http://www.jgraph.com/mxgraph.html&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723268/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723268/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>0</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>体验非常棒的
http://creately.com/
http://www.diagram.ly/
-------------------------------------
http://...&lt;img src=&quot;http://www1.feedsky.com/t1/583723268/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723268/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Tue, 06 Sep 2011 09:44:03 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/09/329/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/09/329/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/09/329/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723268/5907172</fs:itemid></item><item><title>Watij非常棒的java嵌入式浏览器</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723269/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;非常简单，能过解析javascript;&lt;br /&gt;&lt;pre&gt;
        try {
            Browser browser = BrowserFactory.createBrowser(BrowserType.Mozilla);
            browser.navigate(&quot;http://daxi.me/png.php&quot;);
            browser.waitReady();
            System.out.println(browser.getContent());
        } catch (Exception e) {
            e.printStackTrace();
        }
&lt;/pre&gt;&lt;br /&gt;
文档：http://www.teamdev.com/downloads/jxbrowser/docs/JxBrowser-PGuide.html#AEN15&lt;br /&gt;
下载：http://sourceforge.net/projects/watij/files/&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723269/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723269/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>1</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>非常简单，能过解析javascript;

        try {
            Browser browser = BrowserFactory.createBrowser(Br...&lt;img src=&quot;http://www1.feedsky.com/t1/583723269/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723269/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 24 Aug 2011 10:28:53 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/08/328/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/08/328/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/08/328/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723269/5907172</fs:itemid></item><item><title>Java-JVM调优工具gc日志查看器GCViewer与MAT</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723270/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;&lt;img src=&quot;http://www.blogjava.net/images/blogjava_net/fastzch/7477/r_gcv001.gif&quot; alt=&quot;GCViewer&quot;/&gt;&lt;br /&gt;
GCViewer官方地址：http://www.tagtraum.com/gcviewer.html&lt;br /&gt;
&lt;img src=&quot;http://www.blogjava.net/images/blogjava_net/fastzch/7477/mat001.gif&quot; width=&quot;700px&quot; alt=&quot;MAT&quot;/&gt;&lt;br /&gt;
MAT官方地址：http://www.eclipse.org/mat/&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723270/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723270/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>0</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>GCViewer官方地址：http://www.tagtraum.com/gcviewer.html

MAT官方地址：http://www.eclipse.org/mat/&lt;img src=&quot;http://www1.feedsky.com/t1/583723270/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723270/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Fri, 05 Aug 2011 09:43:23 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/08/327/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/08/327/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/08/327/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723270/5907172</fs:itemid></item><item><title>Linux监控性能方面命令总结</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723271/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;一、last 命令&lt;br /&gt;
last    显示系统开机以来获是从每月初登入者的讯息&lt;br /&gt;
-R  省略 hostname 的栏位&lt;br /&gt;
-num 展示前 num 个  如：last -3  展示前三行&lt;br /&gt;
username 展示 username 的登入讯息&lt;br /&gt;
tty 限制登入讯息包含终端机代号&lt;br /&gt;
范例：&lt;br /&gt;
[root@elain ~]# last -R -2&lt;br /&gt;
root     pts/0        Fri Oct 22 14:23   still logged in&lt;br /&gt;
root     pts/0        Fri Oct 22 12:10 - 14:23  (02:13)&lt;br /&gt;
wtmp begins Sat Sep  4 00:38:05 2010&lt;/p&gt;&lt;p&gt;[root@elain ~]# last -2 root&lt;br /&gt;
root     pts/0        192.168.8.87     Fri Oct 22 14:23   still logged in&lt;br /&gt;
root     pts/0        192.168.8.87     Fri Oct 22 12:10 - 14:23  (02:13)&lt;br /&gt;
wtmp begins Sat Sep  4 00:38:05 2010&lt;/p&gt;&lt;p&gt;二、top 命令&lt;br /&gt;
top    是Linux下常用的性能分析工具，能够实时显示系统中各个进程的资源占用状况，类似于Windows的任务管理器。&lt;/p&gt;&lt;p&gt;top - 14:34:14 up 4 days, 16:20,  2 users,  load average: 0.56, 0.23, 0.32&lt;br /&gt;
Tasks:  75 total,   1 running,  74 sleeping,   0 stopped,   0 zombie&lt;br /&gt;
Cpu(s):  0.0%us,  0.0%sy,  0.0%ni, 99.8%id,  0.2%wa,  0.0%hi,  0.0%si,  0.0%st&lt;br /&gt;
Mem:   1026824k total,   917580k used,   109244k free,   124708k buffers&lt;br /&gt;
Swap:  2096472k total,        0k used,  2096472k free,   664320k cached&lt;br /&gt;
PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND&lt;br /&gt;
3078 root      15   0 12720 1032  800 R  0.7  0.1   0:00.02 top&lt;br /&gt;
2463 root      16   0 10232  676  584 S  0.3  0.1   1:33.69 hald-addon-stor&lt;br /&gt;
1 root      15   0 10352  692  584 S  0.0  0.1   0:00.61 init&lt;br /&gt;
2 root      RT  -5     0    0    0 S  0.0  0.0   0:00.35 migration/0&lt;br /&gt;
3 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0&lt;/p&gt;&lt;p&gt;统计信息区前五行是系统整体的统计信息。&lt;br /&gt;
第一行是任务队列信息，同 uptime 命令的执行结果。其内容如下：&lt;br /&gt;
14:34:14      当前时间&lt;br /&gt;
up 4 days      系统已运行时间&lt;br /&gt;
2 users              当前登录用户数&lt;br /&gt;
0.56, 0.23, 0.32  系统负载，即任务队列的平均长度。三个数值分别为1分钟、5分钟、15分钟前到现在的平均值。&lt;br /&gt;
第二行为进程信息，内容如下：&lt;br /&gt;
Tasks:  75 total    进程总数&lt;br /&gt;
1 running            正在运行的进程数&lt;br /&gt;
74 sleeping            睡眠的进程数&lt;br /&gt;
0 stopped            停止的进程数&lt;br /&gt;
0 zombie            僵尸进程数&lt;br /&gt;
第三行为CPU信息，当有多个CPU时，这些内容可能会超过两行。内容如下：&lt;br /&gt;
Cpu(s):  0.0%us            用户空间占用CPU百分比&lt;br /&gt;
0.0% sy                    内核空间占用CPU百分比&lt;br /&gt;
0.0% ni                    用户进程空间内改变过优先级的进程占用CPU百分比&lt;br /&gt;
98.8% id            空闲CPU百分比&lt;br /&gt;
0.2% wa                    等待输入输出(IO)的CPU时间百分比&lt;br /&gt;
0.0% hi                    cpu处理硬件中断的时间；&lt;br /&gt;
0.0% si                 cpu处理软中断的时间；&lt;br /&gt;
第四行为内存信息，内容如下：&lt;br /&gt;
Mem: 1026824k total      物理内存总量&lt;br /&gt;
917580k used              使用的物理内存总量&lt;br /&gt;
109244k free               空闲内存总量&lt;br /&gt;
124708k buffers            用作内核缓存的内存量&lt;br /&gt;
第五行为SWAP信息&lt;br /&gt;
Swap: 2096472k total    交换区总量&lt;br /&gt;
2096472k free              空闲交换区总量&lt;br /&gt;
664320k cached            缓冲的交换区总量。&lt;br /&gt;
第六行往后是进程列表，常见的这几列的意义分别为：&lt;br /&gt;
PID(进程号)， USER（运行用户），PR（优先级），NI（任务nice值），VIRT（虚拟内存用量），RES（物理内存用量），&lt;br /&gt;
SHR（共享内存用量），S（进程状态），%CPU（CPU占用比），%MEM（内存占用比），TIME+（累计CPU占用时间)。&lt;br /&gt;
除了这些信息之外，top还提供了很多命令能帮我们更好的解读这些信息，例如按”M”键可以按内存用量进行排序;&lt;br /&gt;
按”P”可以按CPU使用量进行排序，这样一来对于分析系统瓶颈很有帮助；此外，按“f”可以进入交互页面，选择指定的列显示，&lt;br /&gt;
例如可以按“b”选择显示PPID，再按一次“b”即可取消显示。”r”可以改变一个进程的nice值；”k”可以向一个进程发信号；&lt;br /&gt;
”z”可以使用彩色显示。进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。&lt;br /&gt;
序号    列名    含义&lt;br /&gt;
a    PID    进程id&lt;br /&gt;
b    PPID    父进程id&lt;br /&gt;
c    RUSER    Real user name&lt;br /&gt;
d    UID    进程所有者的用户id&lt;br /&gt;
e    USER    进程所有者的用户名&lt;br /&gt;
f    GROUP    进程所有者的组名&lt;br /&gt;
g    TTY    启动进程的终端名。不是从终端启动的进程则显示为 ?&lt;br /&gt;
h    PR    优先级&lt;br /&gt;
i    NI    nice值。负值表示高优先级，正值表示低优先级&lt;br /&gt;
j    P    最后使用的CPU，仅在多CPU环境下有意义&lt;br /&gt;
k    %CPU    上次更新到现在的CPU时间占用百分比&lt;br /&gt;
l    TIME    进程使用的CPU时间总计，单位秒&lt;br /&gt;
m    TIME+    进程使用的CPU时间总计，单位1/100秒&lt;br /&gt;
n    %MEM    进程使用的物理内存百分比&lt;br /&gt;
o    VIRT    进程使用的虚拟内存总量，单位kb。VIRT=SWAP+RES&lt;br /&gt;
p    SWAP    进程使用的虚拟内存中，被换出的大小，单位kb。&lt;br /&gt;
q    RES    进程使用的、未被换出的物理内存大小，单位kb。RES=CODE+DATA&lt;br /&gt;
r    CODE    可执行代码占用的物理内存大小，单位kb&lt;br /&gt;
s    DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小，单位kb&lt;br /&gt;
t    SHR    共享内存大小，单位kb&lt;br /&gt;
u    nFLT    页面错误次数&lt;br /&gt;
v    nDRT    最后一次写入到现在，被修改过的页面数。&lt;br /&gt;
w    S    进程状态。&lt;br /&gt;
x    COMMAND    命令名/命令行&lt;br /&gt;
y    WCHAN    若该进程在睡眠，则显示睡眠中的系统函数名&lt;br /&gt;
z    Flags    任务标志，参考 sched.h&lt;br /&gt;
D=不可中断的睡眠状态&lt;br /&gt;
R=运行&lt;br /&gt;
S=睡眠&lt;br /&gt;
T=跟踪/停止&lt;br /&gt;
Z=僵尸进程&lt;/p&gt;&lt;p&gt;默认情况下仅显示比较重要的  PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND  列。可以通过下面的快捷键来更改显示内容。&lt;br /&gt;
更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表，按 a-z  即可显示或隐藏对应的列，最后按回车键确定。&lt;br /&gt;
按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动，而大写的 A-Z  可以将相应的列向左移动。最后按回车键确定。&lt;br /&gt;
按大写的 F 或 O 键，然后按 a-z 可以将进程按照相应的列进行排序。而大写的  R 键可以将当前的排序倒转。&lt;/p&gt;&lt;p&gt;三、free 命令&lt;br /&gt;
free&lt;br /&gt;
[root@elain ~]# free&lt;br /&gt;
total       used       free     shared    buffers     cached&lt;br /&gt;
Mem:       1026824     917764     109060          0     124908     664328&lt;br /&gt;
-/+ buffers/cache:     128528     898296&lt;br /&gt;
Swap:      2096472          0    2096472&lt;/p&gt;&lt;p&gt;第1行&lt;br /&gt;
total 内存总数: 1026824&lt;br /&gt;
used 已经使用的内存数: 917764&lt;br /&gt;
free 空闲的内存数: 109060&lt;br /&gt;
shared 当前已经废弃不用，总是0&lt;br /&gt;
buffers Buffer Cache内存数: 124908&lt;br /&gt;
cached Page Cache内存数:  664328&lt;br /&gt;
第2行：&lt;br /&gt;
-/+ buffers/cache的意思相当于：&lt;br /&gt;
-buffers/cache 的内存数：1128528 (等于第1行的 used - buffers - cached)&lt;br /&gt;
+buffers/cache 的内存数: 2752124 (等于第1行的 free + buffers + cached)&lt;br /&gt;
第3行：&lt;br /&gt;
total 交换分区总数: 2096472&lt;br /&gt;
used 已经使用的: 0&lt;br /&gt;
free 空闲的数: 2096472&lt;br /&gt;
free -m    大小以M来显示&lt;br /&gt;
四、dstat 命令&lt;br /&gt;
yum install -y dstat&lt;br /&gt;
dstat&lt;br /&gt;
-c     显示CPU情况&lt;br /&gt;
-d     显示磁盘情况&lt;br /&gt;
-g     显示通信情况&lt;br /&gt;
-m     显示内存情况&lt;br /&gt;
-n     显示网络情况&lt;br /&gt;
-p     显示进程情况&lt;br /&gt;
-s     显示swap情况&lt;br /&gt;
-t     显示系统时钟&lt;br /&gt;
-y     显示系统统计&lt;br /&gt;
-f     使用 -C, -D, -I, -N and -S 显示&lt;br /&gt;
-v     使用-pmgdsc -D 显示&lt;br /&gt;
--ipc   报告IPC消息队列和信号量的使用情况&lt;br /&gt;
--lock  enable lock stats&lt;br /&gt;
--raw   enable raw stats&lt;br /&gt;
--tcp  enable tcp stats&lt;br /&gt;
--udp   enable udp stats&lt;br /&gt;
--unix   enable unix stats&lt;br /&gt;
--mods   stat1,stat2&lt;br /&gt;
--integer  show integer values Bbs.Svn8.Com&lt;br /&gt;
--nocolor  disable colors (implies --noupdate) Bbs.Svn8.Com&lt;br /&gt;
--noheaders 只显示一次表头以后就不显示了,使用重定向写入文件时很有用 Bbs.Svn8.Com&lt;br /&gt;
--noupdate  disable intermediate updates Svn中文网&lt;br /&gt;
--output file 写入到CVS文件中&lt;br /&gt;
推荐使用 date &amp;&amp; dstat -tclmdny 60 一分钟监视一次（注意调节显示的宽度，或去掉-t选项）。&lt;/p&gt;&lt;p&gt;五、iostat 命令&lt;/p&gt;&lt;p&gt;# cat /proc/partitions&lt;br /&gt;
[root@elain ~]# cat /proc/partitions&lt;br /&gt;
major minor  #blocks  name&lt;br /&gt;
8     0      20971520 sda&lt;br /&gt;
8     1        200781 sda1&lt;br /&gt;
8     2       8193150 sda2&lt;br /&gt;
8     3       2096482 sda3&lt;br /&gt;
8     4             1 sda4&lt;br /&gt;
8     5      10474348 sda5&lt;br /&gt;
major: 主设备号。8 代表 sda。&lt;br /&gt;
minor: 次设备号。5 代表 No.5 分区。&lt;br /&gt;
#blocks: 设备总块数&lt;br /&gt;
name: 设备名称。如 sda3。&lt;/p&gt;&lt;p&gt;[root@elain ~]# iostat -x&lt;br /&gt;
Linux 2.6.18-194.11.3.el5 (elain)      2010年10月22日&lt;br /&gt;
avg-cpu:  %user   %nice %system %iowait  %steal   %idle&lt;br /&gt;
0.17    0.10    0.12    0.05    0.00   99.55&lt;br /&gt;
Device:         rrqm/s   wrqm/s   r/s   w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util&lt;br /&gt;
sda               0.17     1.14  0.07  0.35     3.38    11.80    35.72     0.03   59.56   3.64   0.15&lt;br /&gt;
sda1              0.00     0.00  0.00  0.00     0.00     0.00    18.96     0.00    8.47   6.65   0.00&lt;br /&gt;
sda2              0.05     1.11  0.06  0.35     3.19    11.68    36.24     0.02   60.31   3.64   0.15&lt;br /&gt;
sda3              0.00     0.00  0.00  0.00     0.00     0.00    31.65     0.00    8.21   6.47   0.00&lt;br /&gt;
sda4              0.00     0.00  0.00  0.00     0.00     0.00     2.00     0.00    6.00   6.00   0.00&lt;br /&gt;
sda5              0.11     0.04  0.01  0.01     0.18     0.12    21.11     0.00   39.66   4.71   0.01&lt;/p&gt;&lt;p&gt;rrqm/s: 每秒进行 merge 的读操作数目。即 delta(rmerge)/s&lt;br /&gt;
wrqm/s: 每秒进行 merge 的写操作数目。即 delta(wmerge)/s&lt;br /&gt;
r/s: 每秒完成的读 I/O 设备次数。即 delta(rio)/s&lt;br /&gt;
w/s: 每秒完成的写 I/O 设备次数。即 delta(wio)/s&lt;br /&gt;
rsec/s: 每秒读扇区数。即 delta(rsect)/s&lt;br /&gt;
wsec/s: 每秒写扇区数。即 delta(wsect)/s&lt;br /&gt;
avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。即 delta(rsect+wsect)/delta(rio+wio)&lt;br /&gt;
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。&lt;br /&gt;
await: 平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)&lt;br /&gt;
svctm: 平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)&lt;br /&gt;
％util: 一秒中有百分之多少的时间用于 I/O 操作，或者说一秒中有多少时间 I/O 队列是非空的。&lt;br /&gt;
即 delta(use)/s/1000 (因为use的单位为毫秒)&lt;/p&gt;&lt;p&gt;如果 ％util 接近 100％，说明产生的I/O请求太多，I/O系统已经满负荷，该磁盘可能存在瓶颈。&lt;/p&gt;&lt;p&gt;svctm 一般要小于 await (因为同时等待的请求的等待时间被重复计算了)，&lt;br /&gt;
svctm 的大小一般和磁盘性能有关，CPU/内存的负荷也会对其有影响，请求过多&lt;br /&gt;
也会间接导致 svctm 的增加。await 的大小一般取决于服务时间(svctm) 以及&lt;br /&gt;
I/O 队列的长度和 I/O 请求的发出模式。如果 svctm 比较接近 await，说明&lt;br /&gt;
I/O 几乎没有等待时间；如果 await 远大于 svctm，说明 I/O 队列太长，应用&lt;br /&gt;
得到的响应时间变慢，如果响应时间超过了用户可以容许的范围，这时可以考虑&lt;br /&gt;
更换更快的磁盘，调整内核 elevator 算法，优化应用，或者升级 CPU。&lt;/p&gt;&lt;p&gt;队列长度(avgqu-sz)也可作为衡量系统 I/O 负荷的指标，但由于 avgqu-sz 是&lt;br /&gt;
按照单位时间的平均值，所以不能反映瞬间的 I/O 洪水。&lt;/p&gt;&lt;p&gt;六、vmstat 命令&lt;br /&gt;
vmstat 命令报告虚拟内存统计信息和CPU负荷：页面调度，交换，任务交换，CPU利用率。命令的语法是：&lt;br /&gt;
vmstat&lt;br /&gt;
-swap    现时可用的交换内存（k表示）&lt;br /&gt;
-free    空闲的内存（k表示）&lt;br /&gt;
-disk    显示每秒的磁盘操作。 s表示scsi盘，0表示盘号&lt;br /&gt;
[root@elain ~]# vmstat 1 3&lt;br /&gt;
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------&lt;br /&gt;
r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st&lt;br /&gt;
0  0      0 109036 123156 664444    0    0     1     3   37   12  0  0 100  0  0&lt;br /&gt;
0  0      0 109036 123156 664444    0    0     0     0 1022   28  0  0 100  0  0&lt;br /&gt;
0  0      0 109036 123156 664444    0    0     0     0 1003   17  0  0 100  0  0&lt;/p&gt;&lt;p&gt;如果 r经常大于 4 ，且id经常少于40，表示cpu的负荷很重。&lt;/p&gt;&lt;p&gt;目前说来，对于服务器监控有用处的度量主要有：&lt;br /&gt;
r（运行队列）&lt;br /&gt;
us（用户CPU）&lt;br /&gt;
sy（系统CPU）&lt;br /&gt;
id（空闲）&lt;/p&gt;&lt;p&gt;通过VMSTAT识别CPU瓶颈&lt;br /&gt;
r（运行队列）展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目，就会出现CPU瓶颈了。&lt;br /&gt;
获得CPU个数的命令(LINUX环境)：&lt;br /&gt;
cat /proc/cpuinfo|grep processor|wc -l&lt;br /&gt;
当r值超过了CPU个数，就会出现CPU瓶颈，解决办法大体几种：&lt;br /&gt;
1. 最简单的就是增加CPU个数&lt;br /&gt;
2. 通过调整任务执行时间，如大任务放到系统不繁忙的情况下进行执行，进尔平衡系统任务&lt;br /&gt;
3. 调整已有任务的优先级&lt;/p&gt;&lt;p&gt;通过VMSTAT识别CPU满负荷&lt;br /&gt;
首先需要声明一点的是，vmstat中CPU的度量是百分比的。当us＋sy的值接近100的时候，表示CPU正在接近满负荷工作。&lt;br /&gt;
但要注意的是，CPU 满负荷工作并不能说明什么，UNIX总是试图要CPU尽可能的繁忙，使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r（运行队列）的值。&lt;br /&gt;
通过VMSTAT识别RAM瓶颈&lt;/p&gt;&lt;p&gt;数据库服务器都只有有限的RAM，出现内存争用现象是Oracle的常见问题。&lt;br /&gt;
首先察看RAM的数量，命令如下（LINUX环境）：&lt;br /&gt;
[root@elain ~]# free&lt;br /&gt;
total       used       free     shared    buffers     cached&lt;br /&gt;
Mem:       1026824     918284     108540          0     123180     664448&lt;br /&gt;
-/+ buffers/cache:     130656     896168&lt;br /&gt;
Swap:      2096472          0    2096472&lt;/p&gt;&lt;p&gt;当然可以使用top等其他命令来显示RAM。&lt;br /&gt;
当内存的需求大于RAM的数量，服务器启动了虚拟内存机制，通过虚拟内存，可以将RAM段移到SWAP DISK的特殊磁盘段上，&lt;br /&gt;
这样会出现虚拟内存的页导出和页导入现象，页导出并不能说明RAM瓶颈，虚拟内存系统经常会对内存段进行页导出，&lt;br /&gt;
但页导入操作就表明了服务器需要更多的内存了，页导入需要从SWAP DISK上将内存段复制回RAM，导致服务器速度变慢。&lt;br /&gt;
解决的办法有几种：&lt;br /&gt;
1. 最简单的，加大RAM&lt;br /&gt;
2. 改小SGA，使得对RAM需求减少&lt;br /&gt;
3. 减少RAM的需求（如：减少PGA）&lt;/p&gt;&lt;p&gt;vmstat各项：&lt;br /&gt;
procs:&lt;br /&gt;
r--&gt;在运行队列中等待的进程数&lt;br /&gt;
b--&gt;在等待io的进程数&lt;br /&gt;
w--&gt;可以进入运行队列但被替换的进程&lt;br /&gt;
memoy&lt;br /&gt;
swap--&gt;现时可用的交换内存（k表示）&lt;br /&gt;
free--&gt;空闲的内存（k表示）&lt;br /&gt;
pages&lt;br /&gt;
re－－》回收的页面&lt;br /&gt;
mf－－》非严重错误的页面&lt;br /&gt;
pi－－》进入页面数（k表示）&lt;br /&gt;
po－－》出页面数（k表示）&lt;br /&gt;
fr－－》空余的页面数（k表示）&lt;br /&gt;
de－－》提前读入的页面中的未命中数&lt;br /&gt;
sr－－》通过时钟算法扫描的页面&lt;br /&gt;
disk 显示每秒的磁盘操作。 s表示scsi盘，0表示盘号&lt;br /&gt;
fault 显示每秒的中断数&lt;br /&gt;
in－－》设备中断&lt;br /&gt;
sy－－》系统中断&lt;br /&gt;
cy－－》cpu交换&lt;br /&gt;
cpu 表示cpu的使用状态&lt;br /&gt;
cs－－》用户进程使用的时间&lt;br /&gt;
sy－－》系统进程使用的时间&lt;br /&gt;
id－－》cpu空闲的时间&lt;br /&gt;
如果 r经常大于 4 ，且id经常少于40，表示cpu的负荷很重。&lt;br /&gt;
如果pi，po 长期不等于0，表示内存不足。&lt;br /&gt;
如果disk 经常不等于0， 且在 b中的队列 大于3， 表示 io性能不好。&lt;/p&gt;&lt;p&gt;七、mpstat 命令&lt;br /&gt;
mpstat是MultiProcessor Statistics的缩写，是实时系统监控工具。其报告与CPU的一些统计信息，这些信息存放在/proc/stat文件中。&lt;br /&gt;
在多CPUs系统里，其不但能查看所有CPU的平均状况信息，而且能够查看特定CPU的信息。mpstat的语法如下：&lt;br /&gt;
[root@elain ~]# mpstat&lt;br /&gt;
Linux 2.6.18-194.11.3.el5 (elain)      2010年10月22日&lt;br /&gt;
16时13分59秒  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s&lt;br /&gt;
16时13分59秒  all    0.17    0.10    0.07    0.05    0.02    0.03    0.00   99.56   1018.86&lt;/p&gt;&lt;p&gt;%user 在internal时间段里，用户态的CPU时间（%），不包含 nice值为负 进程 (usr/total)*100&lt;br /&gt;
%nice 在internal时间段里，nice值为负进程的CPU时间（%）   (nice/total)*100&lt;br /&gt;
%sys  在internal时间段里，核心时间（%）   (system/total)*100&lt;br /&gt;
%iowait 在internal时间段里，硬盘IO等待时间（%） (iowait/total)*100&lt;br /&gt;
%irq 在internal时间段里，硬中断时间（%）      (irq/total)*100&lt;br /&gt;
%soft 在internal时间段里，软中断时间（%）    (softirq/total)*100&lt;br /&gt;
%idle 在internal时间段里，CPU除去等待磁盘IO操作外的因为任何原因而空闲的时间闲置时间（%）(idle/total)*100&lt;br /&gt;
%intr/s 在internal时间段里，每秒CPU接收的中断的次数intr/total)*100&lt;/p&gt;&lt;p&gt;total_cur=user+system+nice+idle+iowait+irq+softirq&lt;br /&gt;
total_pre=pre_user+ pre_system+ pre_nice+ pre_idle+ pre_iowait+ pre_irq+ pre_softirq&lt;br /&gt;
user=user_cur – user_pre&lt;br /&gt;
total=total_cur-total_pre&lt;/p&gt;&lt;p&gt;其中_cur 表示当前值，_pre表示interval时间前的值。上表中的所有值可取到两位小数点。&lt;/p&gt;&lt;p&gt;实例: 每2秒产生了2个处理器的统计数据报告&lt;br /&gt;
下面的命令可以每2秒产生了2个处理器的统计数据报告，一共产生三个interval 的信息，然后再给出这三个interval的平&lt;br /&gt;
均信息。默认时，输出是按照CPU 号排序。第一个行给出了从系统引导以来的所有活跃数据。接下来每行对应一个处理器的&lt;br /&gt;
活跃状态。。&lt;br /&gt;
[root@elain ~]# mpstat -P ALL 2 3&lt;br /&gt;
Linux 2.6.18-194.11.3.el5 (elain)      2010年10月22日&lt;/p&gt;&lt;p&gt;16时17分43秒  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s&lt;br /&gt;
16时17分45秒  all    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00   1036.36&lt;br /&gt;
16时17分45秒    0    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00   1036.36&lt;br /&gt;
16时17分45秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00      0.00&lt;/p&gt;&lt;p&gt;16时17分45秒  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s&lt;br /&gt;
16时17分47秒  all    0.00    0.00    0.00    0.00    0.00    0.25    0.00   99.75   1045.27&lt;br /&gt;
16时17分47秒    0    0.00    0.00    0.00    0.00    0.50    0.00    0.00   99.50   1045.27&lt;br /&gt;
16时17分47秒    1    0.50    0.00    0.00    0.00    0.00    0.00    0.00   99.50      0.00&lt;/p&gt;&lt;p&gt;16时17分47秒  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s&lt;br /&gt;
16时17分49秒  all    0.00    0.00    0.25    0.50    0.00    0.00    0.00   99.25   1031.84&lt;br /&gt;
16时17分49秒    0    0.00    0.00    0.50    1.49    0.00    0.00    0.00   98.01   1031.84&lt;br /&gt;
16时17分49秒    1    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00      0.00&lt;/p&gt;&lt;p&gt;Average:     CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle    intr/s&lt;br /&gt;
Average:     all    0.00    0.00    0.08    0.17    0.00    0.08    0.00   99.67   1037.83&lt;br /&gt;
Average:       0    0.00    0.00    0.17    0.50    0.17    0.00    0.00   99.17   1037.83&lt;br /&gt;
Average:       1    0.17    0.00    0.00    0.00    0.00    0.00    0.00   99.83      0.00&lt;/p&gt;&lt;p&gt;八、sar 命令&lt;br /&gt;
该命令是系统维护 的重要工具，主要帮助我们掌握系统资源的使用情况，特别是内存和CPU 的使用情况， 是UNIX系统使用者应该掌握的工具之 一。&lt;br /&gt;
sar&lt;br /&gt;
-A：所有报告的总和。&lt;br /&gt;
-u：CPU利用率&lt;br /&gt;
-v：进程、I节点、文件和锁表状态。&lt;br /&gt;
-d：硬盘使用报告。&lt;br /&gt;
-r：没有使用的内存页面和硬盘块。&lt;br /&gt;
-g：串口I/O的情况。&lt;br /&gt;
-b：缓冲区使用情况。&lt;br /&gt;
-a：文件读写情况。&lt;br /&gt;
-c：系统调用情况。&lt;br /&gt;
-R：进程的活动情况。&lt;br /&gt;
-y：终端设备活动情况。&lt;br /&gt;
-w：系统交换活动。&lt;/p&gt;&lt;p&gt;实例1：每60秒采样一次，连续采样5次，观察CPU的使用情况，并将采样结果以二进制形式存入当前目录下的文件/sar中，需键入如下命令：&lt;br /&gt;
[root@elain ~]# sar -u -o sar 60 5&lt;br /&gt;
Linux 2.6.18-194.11.3.el5 (elain)      2010年10月22日&lt;br /&gt;
16时28分47秒       CPU     %user     %nice   %system   %iowait    %steal     %idle&lt;br /&gt;
16时29分47秒       all      0.00      0.00      0.00      1.00      0.00     99.00&lt;br /&gt;
16时30分47秒       all      0.00      0.00      0.00      1.00      0.00     99.00&lt;br /&gt;
16时31分47秒       all      0.00      0.00      0.00      1.50      0.00     98.50&lt;br /&gt;
16时32分47秒       all      0.00      0.00      0.00      1.00      0.00     99.00&lt;br /&gt;
16时33分57秒       all      0.00      0.00      0.00      1.00      0.00     99.00&lt;br /&gt;
Average:          all      0.00      0.00      0.00      1.10      0.00     98.90&lt;/p&gt;&lt;p&gt;在显示内容包括：&lt;br /&gt;
%usr：   CPU处在用户模式下的时间百分比。&lt;br /&gt;
%sys：   CPU处在系统模式下的时间百分比。&lt;br /&gt;
%iowait：CPU等待输入输出完成时间的百分比。&lt;br /&gt;
%idle：  CPU空闲时间百分比。&lt;br /&gt;
我们应主要注意%wio和%idle，%wio的值过高，表示硬盘存在I/O瓶颈，%idle值高，表示CPU较空闲，如果%idle值高 但系统响应慢时，有可能是CPU等待分配内存，&lt;br /&gt;
此时应加大内存容量。%idle值如果持续低于10，那么系统的CPU处理能力相对较低，表明系统中最需要 解决的资源是CPU。&lt;br /&gt;
查看二进制文件sar中的内容，则需键入如下sar命令：&lt;br /&gt;
sar -u -f sar&lt;/p&gt;&lt;p&gt;实例2：每30秒采样一次，连续采样5次，观察核心表的状态，需键入如下命令：&lt;br /&gt;
[root@elain ~]# sar -v 60 5&lt;br /&gt;
Linux 2.6.18-194.11.3.el5 (elain)      2010年10月22日&lt;br /&gt;
16时32分54秒 dentunusd   file-sz  inode-sz  super-sz %super-sz  dquot-sz %dquot-sz  rtsig-sz %rtsig-sz&lt;br /&gt;
16时33分54秒     60602       510     50659         0      0.00         0      0.00         0      0.00&lt;br /&gt;
16时34分54秒     60602       510     50659         0      0.00         0      0.00         0      0.00&lt;br /&gt;
16时35分54秒     60602       510     50659         0      0.00         0      0.00         0      0.00&lt;br /&gt;
16时36分54秒     60602       510     50659         0      0.00         0      0.00         0      0.00&lt;br /&gt;
16时37分54秒     60602       510     50659         0      0.00         0      0.00         0      0.00&lt;br /&gt;
Average:        60602       510     50659         0      0.00         0      0.00         0      0.00&lt;/p&gt;&lt;p&gt;显示内容表示，核心使用完全正常，三个表没有出现溢出现象，核心参数不需调整，如果出现溢出时，要调整相应的核心参数，将对应的表项数加大。&lt;br /&gt;
小提示：&lt;br /&gt;
怀疑CPU存在瓶颈，可用sar -u 和sar -q来看，怀疑I/O存在 瓶颈，可用sar -b、sar -u和sar-d来看。&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723271/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723271/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>99</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>一、last 命令
last    显示系统开机以来获是从每月初登入者的讯息
-R  省略 hostname 的栏位
-num 展示前 num 个  如：last -3  展示前三行
user...&lt;img src=&quot;http://www1.feedsky.com/t1/583723271/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723271/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Tue, 26 Jul 2011 09:44:01 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/07/326/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/07/326/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/07/326/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723271/5907172</fs:itemid></item><item><title>从网络上搜集到的缓存容器算法</title><link>http://item.feedsky.com/~feedsky/daxi8/~8662961/583723272/5907172/1/item.html</link><content:encoded xml:lang="zh-CN">&lt;p&gt;Least Frequently Used（LFU）：&lt;/p&gt;&lt;p&gt;大家好，我是 LFU，我会计算为每个缓存对象计算他们被使用的频率。我会把最不常用的缓存对象踢走。&lt;/p&gt;&lt;p&gt;Least Recently User（LRU）：&lt;/p&gt;&lt;p&gt;我是LRU缓存算法，我把最近最少使用的缓存对象给踢走。&lt;/p&gt;&lt;p&gt;我总是需要去了解在什么时候，用了哪个缓存对象。如果有人想要了解我为什么总能把最近最少使用的对象踢掉，是非常困难的。&lt;/p&gt;&lt;p&gt;浏览器就是使用了我（LRU）作为缓存算法。新的对象会被放在缓存的顶部，当缓存达到了容量极限，我会把底部的对象踢走，而技巧就是：我会把最新被访问的缓存对象，放到缓存池的顶部。&lt;/p&gt;&lt;p&gt;所以，经常被读取的缓存对象就会一直呆在缓存池中。有两种方法可以实现我，array 或者是 linked list。&lt;/p&gt;&lt;p&gt;我的速度很快，我也可以被数据访问模式适配。我有一个大家庭，他们都可以完善我，甚至做的比我更好（我确实有时会嫉妒，但是没关系）。我家庭的一些成员包括LRU2 和 2Q，他们就是为了完善 LRU 而存在的。&lt;/p&gt;&lt;p&gt;Least Recently Used 2（LRU2）：&lt;/p&gt;&lt;p&gt;我是 Least Recently Used 2，有人叫我最近最少使用twice，我更喜欢这个叫法。我会把被两次访问过的对象放入缓存池，当缓存池满了之后，我会把有两次最少使用的缓存对象踢走。 因为需要跟踪对象2次，访问负载就会随着缓存池的增加而增加。如果把我用在大容量的缓存池中，就会有问题。另外，我还需要跟踪那么不在缓存的对象，因为他 们还没有被第二次读取。我比LRU好，而且是 adoptive to access 模式 。&lt;/p&gt;&lt;p&gt;Two Queues（2Q）：&lt;/p&gt;&lt;p&gt;我是 Two Queues；我把被访问的数据放到LRU的缓存中，如果这个对象再一次被访问，我就把他转移到第二个、更大的LRU缓存。&lt;/p&gt;&lt;p&gt;我踢走缓存对象是为了保持第一个缓存池是第二个缓存池的1/3。当缓存的访问负载是固定的时候，把 LRU 换成 LRU2，就比增加缓存的容量更好。这种机制使得我比 LRU2 更好，我也是 LRU 家族中的一员，而且是 adoptive to access 模式 。&lt;/p&gt;&lt;p&gt;Adaptive Replacement Cache（ARC）：&lt;/p&gt;&lt;p&gt;我是 ARC，有人说我是介于 LRU 和 LFU 之间，为了提高效果，我是由2个 LRU 组成，第一个，也就是 L1，包含的条目是最近只被使用过一次的，而第二个 LRU，也就是 L2，包含的是最近被使用过两次的条目。因此， L1 放的是新的对象，而 L2 放的是常用的对象。所以，别人才会认为我是介于 LRU 和 LFU 之间的，不过没关系，我不介意。&lt;/p&gt;&lt;p&gt;我被认为是性能最好的缓存算法之一，能够自调，并且是低负载的。我也保存着历史对象，这样，我就可以记住那些被移除的对象，同时，也让我可以看到被移除的对象是否可以留下，取而代之的是踢走别的对象。我的记忆力很差，但是我很快，适用性也强。&lt;/p&gt;&lt;p&gt;Most Recently Used（MRU）：&lt;/p&gt;&lt;p&gt;我是 MRU，和 LRU 是对应的。我会移除最近最多被使用的对象，你一定会问我为什么。好吧，让我告诉你，当一次访问过来的时候，有些事情是无法预测的，并且在缓存系统中找出最少最近使用的对象是一项时间复杂度非常高的运算，这就是为什么我是最好的选择。&lt;/p&gt;&lt;p&gt;我是数据库内存缓存中是多么的常见！每当一次缓存记录的使用，我会把它放到栈的顶端。当栈满了的时候，你猜怎么着？我会把栈顶的对象给换成新进来的对象！&lt;/p&gt;&lt;p&gt;First in First out（FIFO）：&lt;/p&gt;&lt;p&gt;我是先进先出，我是一个低负载的算法，并且对缓存对象的管理要求不高。我通过一个队列去跟踪所有的缓存对象，最近最常用的缓存对象放在后面，而更早的缓存对象放在前面，当缓存容量满时，排在前面的缓存对象会被踢走，然后把新的缓存对象加进去。我很快，但是我并不适用。&lt;/p&gt;&lt;p&gt;Second Chance ：&lt;/p&gt;&lt;p&gt;大家好，我是 second chance，我是通过FIFO修改而来的，被大家叫做 second chance 缓存算法，我比 FIFO 好的地方是我改善了 FIFO 的成本。我是 FIFO 一样也是在观察队列的前端，但是很FIFO的立刻踢出不同，我会检查即将要被踢出的对象有没有之前被使用过的标志（1一个bit表示），没有没有被使用 过，我就把他踢出；否则，我会把这个标志位清除，然后把这个缓存对象当做新增缓存对象加入队列。你可以想象就这就像一个环队列。当我再一次在队头碰到这个 对象时，由于他已经没有这个标志位了，所以我立刻就把他踢开了。我在速度上比FIFO快。&lt;/p&gt;&lt;p&gt;CLock ：&lt;/p&gt;&lt;p&gt;我是Clock，一个更好的FIFO，也比 second chance更好。因为我不会像second chance那样把有标志的缓存对象放到队列的尾部，但是也可以达到second chance的效果。&lt;/p&gt;&lt;p&gt;我持有一个装有缓存对象的环形列表，头指针指向列表中最老的缓存对象。当缓存miss发生并且没有新的缓存空间时，我会问问指针指向的缓存对象的标 志位去决定我应该怎么做。如果标志是0，我会直接用新的缓存对象替代这个缓存对象；如果标志位是1，我会把头指针递增，然后重复这个过程，知道新的缓存对 象能够被放入。我比second chance更快。&lt;/p&gt;&lt;p&gt;Simple time-based ：&lt;/p&gt;&lt;p&gt;我是 simple time-based 缓存算法，我通过绝对的时间周期去失效那些缓存对象。对于新增的对象，我会保存特定的时间。我很快，但是我并不适用。&lt;/p&gt;&lt;p&gt;Extended time-based expiration ：&lt;/p&gt;&lt;p&gt;我是 extended time-based expiration 缓存算法，我是通过相对时间去失效缓存对象的；对于新增的缓存对象，我会保存特定的时间，比如是每5分钟，每天的12点。&lt;/p&gt;&lt;p&gt;Sliding time-based expiration ：&lt;/p&gt;&lt;p&gt;我是 sliding time-based expiration，与前面不同的是，被我管理的缓存对象的生命起点是在这个缓存的最后被访问时间算起的。我很快，但是我也不太适用。&lt;/p&gt;&lt;p&gt;好了！听了那么多缓存算法的自我介绍，其他的缓存算法还考虑到了下面几点：&lt;/p&gt;&lt;p&gt;成本。如果缓存对象有不同的成本，应该把那些难以获得的对象保存下来。&lt;br /&gt;
容量。如果缓存对象有不同的大小，应该把那些大的缓存对象清除，这样就可以让更多的小缓存对象进来了。&lt;br /&gt;
时间。一些缓存还保存着缓存的过期时间。电脑会失效他们，因为他们已经过期了。&lt;br /&gt;
根据缓存对象的大小而不管其他的缓存算法可能是有必要的。&lt;/p&gt;&lt;p&gt;Random Cache ：&lt;/p&gt;&lt;p&gt;我是随机缓存，我随意的替换缓存实体，没人敢抱怨。你可以说那个被替换的实体很倒霉。通过这些行为，我随意的去处缓存实体。我比FIFO机制好，在某些情况下，我甚至比 LRU 好，但是，通常LRU都会比我好。&lt;/p&gt;&lt;p&gt;（示例代码略）&lt;/p&gt;&lt;p&gt;http://www.zavakid.com/27&lt;/p&gt;&lt;p&gt;http://www.jtraining.com/component/content/article/35-jtraining-blog/137.html&lt;/p&gt;&lt;p&gt;http://www.infoq.com/cn/presentations/szh-mysql-sns-feed&lt;/p&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/583723272/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723272/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><slash:comments>4</slash:comments><wfw:commentRss>http://daxi.me/feed/2011/07/325/</wfw:commentRss><description>Least Frequently Used（LFU）：

大家好，我是 LFU，我会计算为每个缓存对象计算他们被使用的频率。我会把最不常用的缓存对象踢走。

Least Recently Us...&lt;img src=&quot;http://www1.feedsky.com/t1/583723272/daxi8/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/daxi8/~8662961/583723272/5907172/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><pubDate>Wed, 20 Jul 2011 22:29:00 +0800</pubDate><author>小宝</author><comments>http://daxi.me/2011/07/325/#comments</comments><guid isPermaLink="false">http://daxi.me/2011/07/325/</guid><dc:creator>小宝</dc:creator><fs:srclink>http://daxi.me/2011/07/325/</fs:srclink><fs:srcfeed>http://daxi.me/index.php/feed/</fs:srcfeed><fs:itemid>feedsky/daxi8/~8662961/583723272/5907172</fs:itemid></item></channel></rss>
