每周推特 2010-03-07

3月 7th, 2010 | Posted by | Filed under 生活轨迹
  • 抵杭 #
  • 公司里江西人这么多 #
  • 我已经成了公司宅 #
  • 有点工作的感觉了 #
  • 把博客从Linode上迁移出来了,VPS玩够了,等有人合租再买 #
  • RT @xiaolai: 直接用内嵌的英英词典吧。RT @BoJia: @xiaolai 笑来老师,灵格斯在Mac的最佳代替软件什么呀? #
  • 百阿的培训推迟了,估计新人不到岗都抽不出时间,现在才同时支持3个项目就要耗这么多时间 #
  • 阳哥要来杭州了,以后周末就和阳哥一起学学高数和大物,准备和09级的小朋友们一起考试 #
  • RT @dyf101: RT @Fenng: 大赞 央视春晚会最火爆的“吊带装”(组图) http://ent.enorth.com.cn/system/2010/03/05/004525143.shtml #
  • 迁移了数据库发现这个版本的MYSQL支持CAST和IFNULL有问题…… #
  • mystat更新,支持windows,已经传到服务器上了。 #
  • 到家了,悲剧,坐公司班车不认路 #
  • 未来一周之内温度预计从零下二度飚升至二十六度,这就是南京的霸气! #
  • 貌似有下雪的迹象,下雪就去西湖看看 #
  • mixero这个客户端真不错 #
  • RT @DavidFeng: RT @36172417: 江西省宜春市的旅游政务网打出“宜春,一座叫春的城市”的宣传语,宝鸡市不服了,幸好没有宝鸭市,不然太热闹了。  //我老家,太操蛋了 #
  • 到公司加班中~ #
  • @chndonny 的这三句话经典啊:“认为可能会出问题的事情,一定会出问题。
    没有做过的事情,风险一定非常高。
    着重沟通的细节,让部门间的合作更顺畅。” #
  • 终于可以睡觉了,把书架组装起来了,不得不批评下商家的设计,组装书架耗掉我半条命 #

Powered by Twitter Tools

标签:

mystat脚本更新Windows支持

3月 6th, 2010 | Posted by | Filed under 程序设计

mystat脚本更新为1.1版本,加入了Windows下的支持。
主要因为Linux版本使用了Bash的彩色显示,所以到了Windows下这个就不兼容了,会看到Bash下控制颜色的代码被现实出来,很难看。
于是加入了操作系统的判断,Windows操作系统跳过颜色控制部分,Linux系统则显示。
然后加入了Inert/Update/Delete流量的实时监控。

  mystat.pl (56.8 KiB, 3,173 hits)

标签:

MySQL的CAST和IFNULL函数的问题

3月 5th, 2010 | Posted by | Filed under 程序设计

关于MySQL的一个CAST和IFNULL函数诡异问题,不明原因,记录一下,明天继续分析。

这个是WP-PostView插件的一段SQL

SELECT p.ID, p.post_title,
IFNULL( CAST( pm.meta_value AS UNSIGNED ) , 0 ) AS views
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS pm ON pm.post_id = p.ID
AND pm.meta_key =  "views"
WHERE p.post_date <  "2010-03-05 22:19:55"
AND p.post_status =  "publish"
AND p.post_type =  "post"
AND p.post_password =  ""
ORDER BY views DESC LIMIT 5

在我的数据库上查询结果非常诡异:

ID post_title views
10 [论文]对简易几何机械化证明的进一步研究 9
32 页面总算基本修正好了 9
51 一个很好玩的钢琴Flash游戏 9
60 修改友情链接的排列方式 9
93 UML之父——Ivar Jacobson介紹SMART方法 9

选出来的views列全部是9,不知道为什么。

如果我去掉IFNULL,

SELECT p.ID, p.post_title, 
CAST( pm.meta_value AS UNSIGNED ) AS views
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS pm ON pm.post_id = p.ID
AND pm.meta_key =  "views"
WHERE p.post_date <  "2010-03-05 22:19:55"
AND p.post_status =  "publish"
AND p.post_type =  "post"
AND p.post_password =  ""
ORDER BY views DESC

得到的结果将是对的,
如果去掉CAST,

SELECT p.ID, p.post_title, IFNULL( pm.meta_value, 0 ) AS views
FROM wp_posts AS p
LEFT JOIN wp_postmeta AS pm ON pm.post_id = p.ID
AND pm.meta_key =  "views"
WHERE p.post_date <  "2010-03-05 22:19:55"
AND p.post_status =  "publish"
AND p.post_type =  "post"
AND p.post_password =  ""
ORDER BY views DESC LIMIT 5

得到的就是错的,并且只有2位数一下的结果,2位数以上的结果出不来,但不是9或者99了。

明天继续分析这个问题。
暂时通过去掉IFNULL来解决。

标签: , ,

CPU负载的分析

3月 3rd, 2010 | Posted by | Filed under 操作系统

最近对我的本本(4核8线程)用top命令看系统状况出现了CPU利用率超过200%的情况,非常诧异,查了下相关资料,把这个问题弄清楚了。
首先来分析下CPU Load

load average: 0.09, 0.05, 0.01

分别是1分钟、5分钟、15分钟的平均Load。
Load这个东西怎么理解呢,就像一条马路,有N个车道,如果N个进程进入车道,那么正好一人一个,再多一辆车就占不到车道,要等有一个车空出车道。
在CPU中可以理解为CPU可以并行处理的任务数,那么就是“CPU个数 * 核数”,如果CPU Load = CPU个数 * 核数 那么就是说CPU正好满负载,再多一点,可能就要出问题了,有任务不能被及时分配处理器,那么保证性能的话,最好是小于CPU个数 * 核数 *0.7。

查看CPU核数可以通过:grep ‘model name’ /proc/cpuinfo

那么以哪个平均值为准呢?如果1分钟平均出现大于CPU个数 * 核数的情况,还不用担心,如果5分钟平均也是,那就要警惕了,15分钟平均也是这样,就要分析哪里出问题了,防范于未然
CPU利用率超过100%的问题,也是差不多,top命令应该是把每个核的CPU占用率加起来,算一个和,于是多核情况下会出现超过100%。

另外Context Switch Rate也是个非常值得注意的值,因为线程间切换的代价也是非常高的。

引用一个公式:Context Switch Rate = Interrupt Rate + TPS* N

对于一个多线程的程序,我觉得准备一个控制线程来调度任务是非常必要的,免得线程过于高并发,导致资源的争用和线程切换带来性能问题,最好控制并发的线程数基本等于CPU的总核数,减少这个N,获得更好的处理器性能。

参考了如下几篇文章:
压力测试衡量CPU的三个指标:CPU Utilization、Load Average和Context Switch Rate
理解Load Average做好压力测试
理解 Linux 的处理器负载均值
高性能服务器架构

PS. 最近博客写得少,都要长草了。顺便赞一下阿里的食堂,比我们学校食堂四年不变菜饭还贵好多了。

每周推特 2010-02-28

2月 28th, 2010 | Posted by | Filed under 生活轨迹
  • Discovery那位老头原来叫加来道雄,理论物理学家 #
  • 论文看得好头痛 #
  • name.com注册的域名,修改了指向,很快就在DNS里更新,新网注册,改了2小时了没动静 #
  • 测试了下MySQL使用索引的极限,如果使用索引无法筛掉80%左右的数据,MySQL会选择不走索引。还没有考虑索引长度的问题,明天继续搞清楚。 #
  • 发现MySQL索引的长度对使用索引的决策影响不是特别大,测试了int/mediumint/smallint/tinyint/varchar,大约都是在剩下20%左右结果集的时候开始使用索引。 #
  • where+sort的情况,MySQL走错索引的概率很高。 #
  • mystat脚本就快完善了,Windows下也显示正常,只是无彩色。下一步转成Curses显示,就可以通用了。然后加入socket通讯函数,就可以做成在线呈现的了 #
  • 学生就业搞不懂学校插个什么劲,非得掺和进来 #
  • 明天的人工智能,God Bless,烦死了 #
  • 从Gmail上Down课件,慢的要死,转发到QQ邮箱,下载飞速,我无语了,GFW发威了么 #
  • 天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤,空伐其身,行弗乱其所为,所以动心忍性,曾益其所不能。再艰难也要挺过这段时期,曾益吾所不能。 #
  • 百感交集的夜晚,要烦协议的事情,要安慰GF,还要备考明天的人工智能 #
  • GF终于睡觉去了,好好看书……博弈树Alpa/Beta剪枝其实蛮简单……代数合一就更简单了……关键要格式对,Prolog命中即终止匹配,期末这里悲剧了15分,不然就过了 #
  • 看A*算法又看到了完备性的博弈,h(x)启发函数控制纵向扩展,速度快,这样可能使搜索不完备,g(x)代价值控制横向扩展,这样可以提高完备性,但效率低。f(x)=g(x)+h(x)就可以控制好横向和纵向的扩展方向,互相牵制。 #
  • 在这个屁股决定脑袋的行政体系里,一切莫名其妙的事情都可能发生。 #
  • 终于领略了3D电影,就是眼睛痛,人工只能Passed,又做完一件事 #

Powered by Twitter Tools

标签: