February 2009 Archives

Linux 下分析性能 nmon 也挺好用

| 2 Comments

以前在 AIX 下,有的时候祭起 nmon ,比 topas 好用多了(去年 AIX 干脆集成了 nmon )。在 Linux 下,top 命令基本也是摆设。如果遇到某些机器没有安装 SYSSTAT 包, 直接把 nmon 抓回来还是挺方便的,省去了安装的麻烦。

NMON.png

最方便的就是能迅速抽取不同维度的性能概览数据。想想其实一个日常用的工具也有很多创新的,nmon 和 topas 读取的数据源是一样的(Perfstat API),但细节上做得更为到位(看来 Nigel 对用户体验也"略懂"阿)。nmon 抓取的数据很容易输出为 Round-Robin Database (RRD) 格式。便于进一步做数据展现。

AIX 提供的 Perfstat API 很赞,如果自己有兴趣,也可以自己写工具调用数据用以运维数据参考。我以前还写了两个山寨小工具,一个抽取网卡数据吞吐量,一个抽取磁盘 I/O 量。不会 C 也能照猫画虎弄出来。

--EOF--

GNU Bash, version 4.0

| 3 Comments

GNU Bash(Bourne-Again SHell) 发布了 4.0 版本。新增加了不少特性。最近大半年基本上很少在终端里了,不过还是要关注一下。

新特性不完全列表

列出几个日常使用有关的:

  • 新的环境变量 $BASHPID 用以返回当前进程 PID。
  • 新的 'checkjobs' 命令检查报告 Job 运行的情况。
  • 如因为缺少资源而创建子进程失败,bash 再尝试几次之后再报错(这个怎么觉得有点傻?)
  • 'ulimit' 内建新选项 -b (socket buffer size) 与 -T (number of threads)。
  • 新的 &>> 重定向操作符,追加标准输出与标准错误到指定文件中。

其他新功能多和 Bash 下的 Shell 编程有关,感兴趣的可以仔细看一下说明文件

此外,Readline 有了比较大的功能增强。大家用的最多的命令行历史,现在有了新的 history-size 变量用来设定。

--EOF--

很多写 Blog 的朋友还是喜欢投放 Google Adsense 广告的。不过有的时候广告内容可控制程度比较低,牛皮癣广告一下子都跑了出来。假如你的朋友在看你的 Blog ,页面旁边显示一些什么"某某女子医院" 或者是"某某男科" 之类的东西,人家还以为你这人趣味比较低,多少挺恶心人的。

我自己先收集了几个杭州地区的地址(现在人家都能精确定点投放牛皮癣了),附件这个 AntiAdsenseSpam.txt 是暂时的几个不想用的广告地址。在 Adsense 管理页面 Competitive Ad Filter -> AdSense for Content filters 或是 AdSense for Feeds filters 粘贴进去就行了。我总觉得 Competitive Ad Filter 这个名字起得不好,Google 可以考虑修改成 Porn info Filter 之类的,HOho

如果你也在投放 Adsense 广告,不妨把你看到的牛皮癣广告地址发过来(留言或者用 Twitter 给我消息 @Fenng ),我定期加入到AntiAdsenseSpam 文件中,大家统一设置,总体上节省不少人工成本。这也算我的社会化协作实验的一部分。

--EOF--

看到 Smugmug 的 CEO Don MacAskill 写的一篇关于使用 Sun 软件栈的经验。Web 2.0 公司用 Sun 这套东西的真的不多见。

Smugmug 解决方案前后对比
旧方案 新方案
Linux OpenSolaris
MySQL 5.0 MySQL 5.1
LVM2 + EXT3 ZFS
硬 RAID 软 RAID
非压缩 GZip9 卷压缩

其实从一个技术体系迁移到另一个技术体系,最合理的理由就是能得到哪些收益。整个项目看下来,ZFS 是其中最大的亮点。管理简单,功能丰富,足够稳定。此外,ZFS 的备份、压缩功能也是非常值得称赞之处。

至于 OpenSolaris 的启用,倒是有一些潜在的隐患,比如 GNU 工具的集成使用上,缺少经验可能会给用户带来不少麻烦。其实 Sun 也是的,干脆把 ZFS 和 Dtrace 移植到 Linux 上算了。何必抱残守缺呢? 说起 Dtrace ,这可是好东西,性能 Tuning ,那可是屠龙刀。值得一提的是,以 OpenSolaris 衍生的Nexenta 项目似乎很有趣。

--EOF--

Lighttpd 的 spawn-fcgi 成为独立项目

| 3 Comments

收到邮件说 Spawn-fcgi 成为独立项目,并且预发布了 1.6 版本。

原来很多人都用 Lighttpd 的 Spawn-fcgi 进行 FastCGI 模式下的管理工作,不过有不少缺点。而 PHP-fpm 的出现多少缓解了一些问题,但 PHP-fpm 有个缺点就是要重新编译,这对于一些已经运行的环境可能有不小的风险(refer)。

原来 spawn-fcgi 版本也比较乱的,期待独立后的项目能更稳定一些。这会给很多 Web 站点带来便利。

--EOF--

Jobs Digg 互助找工作

| 20 Comments

昨天晚饭后在家里上网,偶然想到最近不少朋友托我发招聘信息,一时兴起打算干脆搭个站点好了。临时想了几个域名,最后注册了这个 JobsDigg.com。Jobs + Digg ,挖工作有关的信息。

建站思路采取山寨模式--最近流行这个嘛。空间就用 Dreamhost 提供的,看了一下提供一键安装的各种程序,感觉 Pligg 刚好基本满足需求,花了几分钟评估了一下,觉得可行,安装、调试、修改界面文字,修改了一下 CSS 。大约不到一个小时的时间就基本可用了。

在 Twitter 上发了一条消息,很快有了第一个注册用户,有了第一条留言,接着有了第一则新闻提交。感谢推友们大力支持! 今天又稍微修正了几个小问题,继续调整了点界面。

弄这个站点做什么? 在这篇 关于 Jobs Digg 中大致说明了一下,希望能做到帮助用人单位招聘,帮助朋友求职,顺便进行网络多人协作模式探索。 但是不欢迎猎头上来发帖,如果是不注明招聘公司信息和招聘信息来源 URL 的,一律删除。如果非要发,那么交费好了。

接下来期待第一个通过 JobsDigg 找到工作的网友现身。

--EOF--

BTW: 如果有意来支付宝乃至阿里集团工作,请给我发简历,我代为推荐。发邮件给:[email protected] 『注明期望职位,务必』

现在用户数超过 100 了 :)
Updated: 2008 02 18 注册人数超过 400 .

Web Analytics 方法

| 2 Comments

Web Analytics 的几种方法中,分析 Web 服务器日志(Logfile Analysis) 与页面标记方法(Page Tagging/JavaScript Tagging, 也有称之为"打点")相对更常见一些。今天发现一个关于二者的对比表格,感觉还是挺有帮助的,粗翻了一下,留作参考。

Web Analysis Compare.png
(点击可看大图)

Page Tagging 的方式对业务控制(比如特定业务预警)更为灵活一些。其他的方法比如 Web Beacons(Web Bug) 的方法在 Web 1.0 的时候还是挺普遍的,对付当前的各种新型 Web 应用已经无能为力。

在设计 Web 应用的初期架构师就应该考虑 Web 分析的方法接口,就像在程序中预置性能调试接口那样,早点考虑,会少许多麻烦。

关于 Web Analytics,仍然存在许多误解与误用。冷暖自知吧。

--EOF--

Greenplum 短板

| 9 Comments

初接触 Greenplum 的确让人挺惊艳的,计算能力给习惯于 RDBMS 传统处理能力的 DBA 会留下很深刻的印象。有点一招鲜吃遍天的感觉。

Greenplum 还可以结合 Solaris 进行虚拟化 -- Sun 任何时候都能搭配上自己的东西。

GreenPlum Solaris.jpg

看上去都很美,问题就是海量数据每天怎么导入到 Greenplum 中来? 借助传统的 ETL 工具(Informatica / DataStage ...) 或者自己写 ETL 功能脚本来做。这就是个麻烦事。海量数据的载入与导出,对于 Greenplum 来说,似乎只能用传统的老办法。如果 Greenplum 带一个 ETL 工具就真的强了。

在大哥大电话刚流行的年代,有个笑话说,发明家发明了一款超小超轻的手机,向另外一个人推销,价格还贼便宜。顾客买下刚要走,被发明家叫住:这里还有个大箱子是送给你的。这是什么? 这是这个手机的电池......

--EOF--

Greenplum 支持的这个 Bizgres 最近两年倒是好像停滞了。免费的午餐不是没有,但不会长久倒是真的。

2008年数据库技术领域掠影

| 7 Comments
此为《程序员》杂志投稿。应该刊登在 2009 年第二期。

"预测"不是件容易的事儿,"回顾"就好操作的多。2008 年发生了很多大事,相比之下,数据库技术领域的这些事儿多少有些微不足道。

0) Sun 收购 MySQL

2008 年初第一笔业界大并购,在上一波.com 大潮中 Sun 赚得盆满钵满,在这一波 Web 2.0 大潮中,Sun 还要做 Web 2.0 中的这个"点"(Dot)? 我个人对此并不看好

这是今年数据库领域的最大的事件,但也仅此而已,一年下来,MySQL 联合创始人 David Axmark 都因为"痛恨每天都要遵守的各种制度"从而离开了 Sun ,而到目前为止也没看到 Sun 针对 MySQL有什么新东西拿出来,倒是狂推预装了各项软件的硬件盒子。前不久发布的 MySQL 5.1 GA 质量更无法让人满意,很多 MySQL 旧将纷纷抱怨,连著名的 MySQL Performance Blog 也不失时机的抛出"MySQL 质量将不再如昔"的论断,大浇冷水。

1) Amazon 推出 SimpleDB

云计算喊了一整年, Amazon 也没闲着,不停地推出新服务。SimpleDB 服务让Jeff Bezos 把手伸向数据库服务,现在仍看不到该服务有大行其道的趋势,但是"提供数据索引与查询的核心数据库功能的 Web 服务" 无疑会逐渐吸引更多潜在的用户。到了年底,Amazon 干脆打出了在一段时间内 SimpleDB 免费的服务来招徕用户,用心良苦。

最近若干分析家下了论断 "未来网络产业将仅剩亚马逊与 Google 两强相争",的确,Amazon 的技术实力不容小视,在 2009 年相信有更多精彩。

2) 主流存储厂商试水 SSD

让人没料到的是 EMC 作为业界存储领头羊,会率先推出支持 固态硬盘(Solid-State Drives, SSD) 的存储设备,Sun 、HP 等厂商也都不甘落后,纷纷宣布将拥抱 SSD。确实,SSD 的某些特性表现是如此抢眼,很多 DBA 都等着它来解决或者缓解 I/O 问题呢,毕竟这是近年来能看到的最大的硬件领域的突破。"钱能解决的问题就不是技术问题",可惜,目前光有钱,买回来的 SSD 可能还是解决不了问题。SSD 的可擦写次数问题仍然让很多用户心下狐疑。

相信2009 年会是 SSD 爆发的一年,主流存储厂商都会纷纷推出支持 SSD 的产品。假以时日,SSD 应该不负众望。

3) Oracle 联手 HP 进军硬件领域

今年 Oracle 整体在 DB 方面实在没什么亮点,如果非要说有,那么在 Open World 上亮相的 Exadata Storage Server 倒是值得一提。

微软和 IBM 这一年来尽管都有升级产品推出,但实际上也就是升级产品推出而已,仍看不出什么新生机。其实很多用户已经非常厌倦不停地增加新功能的软件新版本,每发布一个版本不失时机的宣布打破什么 TPC-C 记录之类的事情已经难以引起用户兴奋。如何在廉价硬件上实现大规模平滑扩展是所有的数据库厂商必须要面对的问题。

4)面向列存储的数据库技术

面向列的数据库(Column-Oriented Database)这不是什么新技术,但是非常适合某些数据分析或者统计类的应用需求。常见的RDBMS 都是面向行(Row-Oriented Database)存储的,在对某一列汇总计算的时候几乎不可避免的要进行额外的 I/O 寻址扫描,而面向列存储的DB 能够连续进行 I/O 操作,减少了 I/O 开销,从而达到数量级上的性能提升。

其实在 Google BigTable / Hadoop HBase 中很早就看到这一思想的运用,在过去这一年中,列存储数据库也更多的引起了重视。

5) GreenPlum= MapReduce + SQL

MapReduce ,让很多面向数据分析的 DBA 还是挺眼馋的,GreenPlum 的出现把 MapReduce 和 SQL 有机的衔接起来,给海量数据分析能力带来了新的可能。年末的时候, GreenPlum 又宣布进军中国市场,不知道用户实际接受程度如何。

顺便说一下,GreenPlum 背后的大东家是 Sun。

6) 从 Drizzle 到 Percona XtraDB 存储引擎

MySQL 的生命力不在大公司手中,而是来自开源技术、Web 2.0 网站的需求上。Drizzle 这个"精简 MySQL" 版本的出现多少证明了这一点。Percona XtraDB 存储引擎的推出也值得 MySQL DBA 惊喜。

除此之外,DRBD、MySQL Proxy 与 Memcached 等 MySQL 相关组件的灵活搭配与定制,给用户解决超大规模应用上带来了更大的可能。数据库市场不可能不受经济危机的影响,商业数据库厂商日子要吃紧是可以想见的事情。

7)Hadoop 的生命力

Yahoo! 公司在 2008 年表现不佳,但是 Yahoo! 支持的 Hadoop 项目可是左右逢源,再一次让我们认识到开放带来的生命力。Facebook、Amazon、AOL、阿里巴巴等公司(当然也包括 Yahoo!)都在纷纷构建 Hadoop 集群来解决大规模数据处理与分析问题!。期待在 2009 年 Doug Cutting,这位 Hadoop 项目的带头人不要被 Google 挖角。

N)2009 年会怎么样? 谁知道呢。

--EOF--

后记:这算是 2008 年末的时候数据库技术小观察吧。因为投稿的缘故,现在才发出来。在过去这短时间里,自己一些观点可能也有所变化。如有时间,再做补充或者修订。请注意该文的时效性。

补充:对于 SSD,最近一件重要的事件是 Steve Wozniak 加入了 SSD 厂商 Fusion-IO

作者:孙毓波 (AKCMS 作者)

SQLite 是一个类似Access的轻量级数据库系统,但是更小、更快、容量更大,并发更高。为什么说 SQLite 最适合做 CMS (内容管理系统)呢?并不是说其他数据库不好, Oracle、MySQL、SQLServer 也都是非常优秀的 DBS,只不过他们设计目标不同,特性不同,所以只有更适用某个应用场景,没有绝对的好坏之分。

我归纳的中小型站点的CMS的特点如下:

  • 1、数据量不超过10万
  • 2、日页面访问量不超过10万
  • 3、 一部分网站全部生成静态页面,一部分网站实时查询数据库动态访问
  • 4、 站长不懂技术,不懂得复杂的数据库维护,只会用 FTP 管理网站
  • 5 、个人站点基本上是一个人管理,一般情况下只有一个人在访问后台,没有并发
  • 6、 对数据库来说是读多写少,只有在站长访问后台的时候才会写入
  • 7、 多运行于虚拟主机,大部分PHP主机均同时支持MySQL,小部分PHP主机需要单独购买MySQL,PHP+MySQL的主机价格较PHP主机价格高。 (以万网为例:最便宜的PHP空间780元,最便宜的PHP+MySQL的PHP空间1150元)
  • 8、 多数中小站点的HTTP服务与MySQL部署在同一服务器上

SQLite 的优点在中小网站CMS应用场景下表现突出:

  • 1、与MySQL相比,它更彻底的免费,并且没有任何使用上的限制
  • 2、非常小巧,PHP5以上版本中无需任何配置即可支持SQLite
  • 3、无需单独购买数据库服务,无服务器进程,配置成本为零
  • 4、整个数据库存储在一个单个的文件中,数据导入导出备份恢复都是复制文件,维护难度为零
  • 5、读速度快,在数据量不是很大的情况下速度较快,更重要的是:省掉了一次数据库远程链接没有复杂的权限验证,打开就能操作

SQLite的缺点在中小网站 CMS 应用场景下被规避:

  • 1、并发低 动态访问时当访问量不超过10万PV的时候,SQLite 超过 Access 的并发能力已经绰绰有余;生成静态页后更无需考虑数据库的并发问题
  • 2、在大数据量的情况下表现较差 但是中小站点一般情况下数据量不超过10万,而SQlite 在 100 万数据量之下表现还不错,因为省掉了对数据库服务器的远程连接甚至会更快
  • 3、写入较慢 默认配置下的 SQlite 的写入速度比MySQL慢了很多,但是 CMS 应用场景的写入操作较少。在插入新文章的时候基本感受不到慢。集中的写数据库操作只有在安装的时候会出现,不过只出现一次,可以忽略
  • 4、为已有的表加索引较慢 但是在中小站点CMS中不会有这样的需求,可以忽略
  • 5、无法将 MySQL 部署到与前端机不同的服务器上,但是中小站点也没有分开部署的需求

综上所述:在中小站点 CMS 的应用场景下 SQLite 能最大限度的降低建站成本,降低维护难度,又很好得规避了自身的缺点。所以我认为未来支持 SQLite 的 CMS 系统一定会大行其道。

--EOF--


Fenng 注:这是网友来稿,转载请注明本文作者。刊载此文不代表我赞同文中所有观点。其实,我觉得 Berkeley DB 或许也不错。另外,如果一个 CMS 日访问量小于 10 万,通过一些 Web 前端优化,后端的压力就会非常之小。

专访 Amoeba 项目开发者陈思儒

| 9 Comments
老文。去年受泰稳之托做的采访。这是我整理的稿件。另请参见 InfoQ 中文站上关于 此文的更多信息

可能 MySQL Proxy 很多数据库技术人员都比较熟悉了,在前不久,国内也有开发者发布了一个Amoeba(变形虫)项目(http://sourceforge.net/projects/amoeba),这个项目专注分布式数据库 Proxy 开发,引起了广泛的关注。 DBA notes( http://www.dbanotes.net ) 站长Fenng 有幸采访了阿米巴项目的开发者陈思儒,以下是采访全文。

Fenng:你好,思儒,很高兴能接受采访,简要介绍一下自己吧?
陈思儒: 我目前是盛大计算机(上海)有限公司的一位高级研究员。 在就业生涯中从事分布式消息系统、分布式应用、多层框架设计、规则引擎开发框架研究,以及 Java 2D MMORPG框架研究。

Fenng: 说一下当初开发 Amoeba 项目的缘由如何,估计其中也会有不少小故事吧? 我可是非常好奇。
陈思儒: 其实 Amoeba 的前身是网络数据包分析代理,之所以 Amoeba 能够快速稳定发展也是因为个人在前期使用这些技术分析过一些游戏的数据包(这儿不方便透露一些细节,这些都只是个人爱好而已,并没有破坏那些被我研究过的游戏 :D )。

为什么会有 Amoeba 这个产品,这个话题的确非常有意思,我关注 MySQL Proxy 也有一段时间了。MySQL Proxy 的这种想法做的非常棒,它能够根据自己的想法去构造目标的 MySQL Proxy 应用,比如监控 SQL 执行、数据流量、读写分离。但由于我们使用 MySQL Proxy 并不能非常轻易的解决一些问题(读写分离、数据切分、水平切分、负载均衡),而是需要写大量的Lua Script,这些 Lua 并不是现成的而是自己需要去写。这个工作对于并不熟悉 MySQL Proxy 内置变量、MySQL Protocol 来说是非常困难的。

因此带着这个想法我就设想做一个非常容易使用、可移植性非常强的软件。Amoeba就因此诞生了。为什么叫Amoeba? 其实这个想法我是突然想到的,Amoeba中文意思是"变形虫",Amoeba被设想为数据库代理的开发框架,它可以为符合Amoeba框架的任何数据库开发代理层。因此也比较象"变形虫"一样能够变成目标数据库的代理层软件。

Fenng: 我观察到 Amoeba 与 Oracle 交互的时候似乎还是模拟 MySQL 的驱动器, 实际情况是否如此?
陈思儒:目前Amoeba有2个产品:Amoeba for MySQL,Amoeba for Aladdin 。这2个产品有不同的适用范围:

  • Amoeba for MySQL:被代理的只有MySQL数据库,需要分析 MySQL网络协议,它的代价比Aladdin会小很多,而且性能也较高;
  • Amoeba for Aladdin:被代理的可以是目前提供Jdbc driver的所有数据库,这些数据库可以同时并存于Amoeba for Aladdin后端。

其实在我上一家公司的时候也正在研发 Amoeba for Oracle,这个产品目前还正在研发状态。这个产品性能也跟 Amoeba for MySQL 一样出色。

就 Amoeba for Aladdin 产品来说,后端的任何数据与 Aladdin 交互采用 JDBC Driver. 对于 Aladdin来说,数据库的协议是透明的,而应用跟 Aladdin 的交互则采用 MySQL 协议,这个做法很多人有不明白,其实做这个决定主要是想借助 MySQL 使用的广泛程度以及对各种 开发语言的支持。因此对前端的应用来说 Aladdin 就是一个虚拟的 MySQL 数据库。你这个问题应该是问使用 Aladdin 的时候。

Fenng: 是的,是在看了你的 Aladdin 架构图后产生的疑惑。你比我严谨多了(笑)。能否冒昧问一下 Amoeba 项目当前的局限?
陈思儒:虽然 Amoeba 能够很好的解决水平切分、垂直切分等,但还是会存在一些局限性,这些局限性是因为我们在设计目标的数据库架构的时候就必须考虑到我们未来的数据库框架(可以线性扩容的数据库架构)。因此也有些查询将不支持,比如跨数据库服务器进行Join,我们要尽量避免类似的业务出现,也可以通过多次查询来解决这类问题。

Fenng: 你在前面也说到了 MySQL Proxy,能否简单的说说 Amoeba 与 MySQL Proxy的区别?
陈思儒:其实说与MySQL Proxy的区别应该是Amoeba for MySQL与 MySQL Proxy 的区别,在上面表述的第二点应该都涉及到了:

  • Amoeba只是目标数据库代理的开发框架。
  • Amoeba for Aladdin 是另外一个类似Amoeba for MySQL的产品。他们共同点是都可以做负载均衡(HA、ROUNDROBIN,WEIGHTBASED)、读写分离、数据切分(垂直、水平)、failOver。

Fenng: 据说你也分析过 Oracle 的 TNS 协议,你认为可靠性如何?
陈思儒:的确,我在上一家公司为做 Amoeba for Oracle 分析过 TNS协议,可靠性以及安全方面都是没什么问题,Oracle 还提供了一些网络层的性能参数,用来改变Oracle的网络吞吐量。但是 Oracle 的数据部封包做法让我和老同事在分析 Oracle 数据包的时候伤透脑筋, 我觉得 Oracle 如果想在协议上面升级版本将不是一件容易的事情。而MySQL 的协议封包的做法我比较赞同。

Fenng: 对于分析 TNS 的可行性,我的看法倒是和你类似。顺便问一下,现在 Amoeba 是否已经有了成功案例, 方便的话能否举几个?
陈思儒:Amoeba for MySQL 的成功案例,目前就网友直接跟我说的有几个,但我还没具体了解他们具体的公司名称,以后知道了我再透露。

Fenng: 到时候千万要通知我一下。对了,能否说一下 Amoeba 项目的愿景以及下一步的目标? 陈思儒:目前距离Amoeba发展目标还有一点距离,Amoeba 未来将是一个更加容易使用、可管理、可动态装载配置、Amoeba集群等。

如果未来可行的话,我将补充 MySQL 协议,做一个用于负载均衡的"重定向路由器"(类似F5功能,但它只是做连接跳转)。

Fenng: 现在开发者主要是你一个人? 是否还有其他维护者 ?
陈思儒:Amoeba 框架、Amoeba for MySQL、Amoeba for Aladdin 目前的开发就我一个人。

Fenng: 很高兴你接受我的采访。期待 Amoeba 项目取得更大的成就,也祝你工作愉快!
陈思儒:客气!也希望有更多的开源爱好者或是数据库技术爱好者加入到这个项目的开发中来。关于 Amoeba 项目的进展我会在 "Amoeba 开发者博客"上更新,欢迎订阅。

--EOF--

旧文重发,期待新的一年这个项目能有更大的发展,能有更多公司从该项目中受益。

关于这篇归档

This page is an archive of entries from February 2009 listed from newest to oldest.

January 2009 is the previous archive.

March 2009 is the next archive.

Find recent content on the main index or look in the archives to find all content.