把自己的小房间收拾好了

三 7th, 2010 | Posted by | Filed under 随笔日记

昨天我买的书架和从学校快递过来的包裹都到了,晚上就组装了一下,把书整理了一下。
今天晚上再稍微打扫下,呵呵。
硬硬的床板终于有垫子了,厚被子也来了,哈哈~
今天睡得很舒服。

阅读全文…

标签:

每周推特 2010-03-07

三 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支持

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

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

  mystat.pl (56.8 KiB, 949 hits)

标签:

MySQL的CAST和IFNULL函数的问题

三 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负载的分析

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