Tip: 看不到本站引用 Flickr 的图片? 下载 Firefox Access Flickr 插件 | AD: 订阅 DBA notes -- ![]()
2008-09-08 Mon
前两天在一个生产库上出现了大量的US enqueue. 该系统版本为10203,采AUM管理模式。
因为事情发生在美国的白天,所以只能通过一些statspack中的信息去追溯根本原因。
第一感觉觉得可能是online undo segment时产生的US enqueue,这个问题在9205的数据库特别繁忙时频频出现。
因为AUM的管理方式是当系统不是很忙时会offline一些undo segments,而当不够用时,再将其online,不过当系统特别繁忙时在online或者resize时就会出现问题,可以通过10511来解决这个问题,详细信息可以参考我的另外一片文章:10511 event
但奇怪的地方在于当时该数据库并不是特别繁忙,并不是在波峰时段。当查看stats$undostat时,一个参数吸引了我的注意力:UNXPSTEALCNT
我们来看看UNXPSTEALCNT的解释:
UNXPBLKREUCNT: Number of unexpired undo blocks reused by transactions
一般来说该参数都应该等于0,但是这个参数在那段时间是大于0的。因为只有当undo tablespace不够存放undo_retention时间段内的数据的时候,才会发生unexpired undo extents stealing。再去查看stats$rollstat,发现但是RSSIZE和undo tablespace大小是一样的,这就说明当时undo tablespace确实不够用了。
那么为什么在系统不是很繁忙的时候会出现undo不够用的情况呢,如果说不够用,那在波峰时段应该问题更加严重才对。
查看stats$undostat.tuned_undoretention参数发现了问题所在。从10.2版本开始,oracle默认采用自动调整undo retention的方法,根据你undo tablespace的大小以及系统的繁忙程度(v$undostat中信息)自动调整undo_retention参数,所以在10g的数据库上你会经常发现undo tablespace永远是满的,因为当你undo tablespace有空闲空间时,系统自动调大undo_retention来保留更多的undo blocks。这一方法有利于时间长的查询,但是对于典型的OLTP系统来说不太适用,因为OLTP上不太可能跑如此长时间的查询,而且在很繁忙的OLTP上还会导致上面所遇到的问题。oracle真是吃力不讨好。
出问题前一天,数据库做维护被重启过,因为刚起来数据库很空闲,所以v$undostat.tuned_autoretention很大,undo tablespace被撑满,虽然tuned_autoretention一直在降,但是还是没有赶上系统warm up的速度,导致数据库出现了问题。
该功能可以通过_undo_autotune参数被disable,disable后v$undostat不在更新。
_undo_autotune : enable auto tuning of undo_retention
该参数可以在线修改:
alter system set “_undo_autotune” = false;
I'm thinking about ways to store archival data for the long term and wanted to solicit anyone who's been down this road for some input, advice, warnings, etc.
Background
Essentially I'm dealing with a system where "live" and "recently live" data is stored in a set of replicated MySQL servers and queried in real-time. As time goes on, however, older "expired" data is moved to a smaller set of replicated "archive" servers that also happen to be MySQL.
This is problematic for a few reasons, but rather than be all negative, I'll express what I'm trying to do in the form of some goals.
Goals
There are a few high-level things I'd like this archive to handle based on current and future needs:
- Be able to store data for the foreseeable future. That means hundreds of millions of records and, ultimately, billions.
- Fast access to a small set of records. In other words, I like having MySQL and indexes that'll get me what I want in a hurry without having to write a lot of code. The archive needs to be able to handle real-time queries quickly. It does this today and needs to continue to work.
- Future-proof file/data format(s). One problem with simply using MySQL is that there will be schema changes over time. A column may be added or dropped or renamed. That change can't easily be implemented retroactively on a larger data set in a big table or whatnot. But if you don't then code needs to be willing to deal with those changes, NULLs appearing, etc.
- Fault tolerance. In other words, the data has to live in more than once place.
- Support for large scans on the data. This can be to do full-text style searches, looking for patterns that can't easily be indexed, computing statistics, etc.
- It's worth noting that data is added to the archive on a constant basis and it is queried regularly in a variety of ways. But there are no delete or updates occurring. It's a write heavy system most of the time.
Pieces of a Possible Solution
I'm not sure that a single tool or piece of infrastructure will ever solve all the needs, but I'm thinking there may be several open source solutions that can be put to use.
You'll notice that this involves duplicating data, but storage is fairly cheap. And each piece is especially good at solving one or more of our needs.
- MySQL. I still believe there's a need for having a copy of the data either denormalized or in a star schema in a set of replicated MySQL instances using MyISAM. The transactional overhead of InnoDB isn't really needed here. To keep things manageable one might create tables per month or quarter or year. Down the road maybe Drizzle makes sense?
- Sphinx. I've been experimenting with Sphinx for indexing large amounts of textual data (with some numeric attributes) and it works remarkably well. This would be very useful instead of building MySQL full-text indexes or doing painful LIKE queries.
- Hadoop/HDFS and Flat Files or a simple record structure. To facilitate fast batch processing of large chunks of data, it'd be nice to have everything stored in HDFS as part of a small Hadoop cluster where one can use Hadoop Streaming to run jobs over the entire data set. But what's good future-proof file format that's efficient? We could use something like XML (duh), JSON, or even Protocol Buffers. And it may make sense to compress the data with gzip too. Maybe put a month's worth of data per file and compress? Even Pig could be handy down the road.
While it involves some data duplication, I believe these pieces could do a good job of handling a wide variety of use cases: real-time simple queries, full-text searching, and more intense searching or statistical processing that can't be pre-indexed.
So what else is there to consider here? Other tools or considerations when dealing with a growing archive of data whose structure may grow and change over time?
I'm mostly keeping discussion of storage hardware out of this, since it's not the piece I really deal with (a big disk is a big disk for most of my purposes), but if you have thoughts on that, feel free to say so. So far I'm only thinking 64bit Linux boxes with RAID for MySQL and non-RAID for HDFS and Sphinx.
Related Posts
- The Long Term Performance of InnoDB
- Open Source Queueing and Messaging Systems?
- Dumber is Faster with Large Data Sets (and Disk Seeks)
- The Perl UTF-8 and utf8 Encoding Mess
(comments)
We gathered together our ideas of MySQL improvements on this page http://www.percona.com/percona-lab/dev-plan.html
and we are going to implement some of them.
My favorite one is - make InnoDB files .ibd (one created with –innodb-file-per-table=1) movable from one server to another, however it is sort of challenging.
Probably next one patch we want to integrate is Google’s smp-fix or Yasufumi’s rw-locks (we are going to test both before)
On this page http://www.percona.com/percona-lab.html you can find links to our current binaries and patches.
Entry posted by Vadim | 3 comments
Question: I recently used up2date to get the latest kernel for my Red Hat Enterprise Linux 3 system and now I have found out that I need an older version for my application that needs kernel 2.4.21-x. How do I download and install a different or an older kernel version then the one I got from Red Hat Network (RHN)?
Answer: Here’s how to get older kernel versions from Red Hat Network (RHN):
- Log into RHN.
- Select the “Channels” tab then select the “Red Hat Enterprise Linux” channel for your system in the channel name table. [Choose your appropriate channel, Red Hat Enterprise Linux AS, Red Hat Enterprise Linux ES or Red Hat Enterprise Linux WS, the correct version, and the correct architecture.
- Select the “Errata” link between Details and Packages.
- Search for the Kernel Update in the list:
For Red Hat Enterprise Linux version 3:
- RHBA-2003:308 - Updated kernel resolves 32-bit address space issue on AMD64
2003-10-30, on page 1 - RHSA-2003:416 - Updated kernel resolves security vulnerability
- RHSA-2004:017 - Updated kernel packages available for Red Hat Enterprise Linux 3 Update 1
2004-01-16, on page 2 - RHEA-2003:333 - Updated kernel-utils package includes enhanced irqbalance
2004-01-16, on page 3 - RHSA-2004:066 - Updated kernel packages fix security vulnerability
2004-02-20, on page 3 - RHSA-2004:183 - Updated kernel packages fix security vulnerabilities
2004-04-22, on page 4 - RHSA-2004:188 - Updated kernel packages available for Red Hat Enterprise Linux 3 Update 2
2004-05-11, on page 4 - RHBA-2004:187 - Updated kernel-utils package available
2004-05-11, on page 6 - RHBA-2004:231 - Updated kernel-utils package adds dmidecode for ia64
2004-05-30, on page 8 - RHSA-2004:255 - Updated kernel packages fix security vulnerabilities
2004-06-17, on page 9
- RHBA-2003:308 - Updated kernel resolves 32-bit address space issue on AMD64
- Select your appropriate advisory link:
RHBA-2003:308,
RHSA-2003:416,
RHSA-2004:017,
RHEA-2003:333,
RHSA-2004:066,
RHSA-2004:183,
RHBA-2004:187,
RHBA-2004:231, or
RHSA-2004:255. - After that, click on the “Packages” link between Details and Affected Systems.
- You should see a list of all the old kernels. Select the kernel you need, download the .rpm file, and run md5sum filename.
- You can then install kernel RPM packages with the following command:
rpm -ivh
kernel-<version>.<architecture>.rpmExample:
# rpm -ivh kernel-2.4.21-4.0.1.EL.i686.rpm # rpm -ivh kernel-smp-2.4.21-4.0.1.EL.i686.rpm # rpm -ivh kernel-hugemem-2.4.21-4.0.1.EL.i686.rpm
Note: You must reboot your system after the kernel is installed in order to use it.
近一年多博客更新颇为迟缓。一方面,闲言碎语大都发在twitter类网站,另一方面,各类SNS网站也消耗掉一些闲暇时间,而更多精力,我都用来做那本《印象》杂志了。
出于多种原因,算上4期试刊,这本小杂志一共出了9本便中道崩殂,让很多人感觉惋惜。不过,如今想做好一本杂志实在是太难了,就像曾经主编FHM、MAXIM的Ed Needham说的那样:“杂志所面临的真正竞争并非来源于其他杂志,而是来自所有与其争夺读者注意力、时间的事物。”更何况,我们并不具备参与竞争的客观条件……
我是以一种游戏心态来做杂志的,认真严肃但不负责任——这说起来似乎很荒谬,但作为一个只能承担内容制作的主编(可以理解为主力编辑的意思),我想不出其他更适合的态度。面对那些喜欢《印象》的读者(或许只有几百人),我心里充满歉疚。一位读者曾来信说,有一本好杂志,会使生活多一分期待;而我们就这样以一种近乎粗暴的方式,莫名其妙地辜负了他们的期待,说起来真是情何以堪啊~~
纸媒体的日子很艰难,但假如有机会,我仍然愿意尝试做新的杂志。现在,先做好我们的游戏杂志吧,以游戏的心态。

Fenng(dbanotes) posted a photo:
这是我家常驻的第二只猫。前几天本来送人了,可那一家养了几天发现小猫一直不动弹。接回来之后小猫已经不能救了。换了两个宠物医院也没看出来什么毛病。郁闷。
现在眼看着不行了 ... 心里很难受

* 你是谁?
1. 五年以上系统管理经验,或从事系统架构师/运维架构师相关职业三年以上
2. 对于操作系统、网络、存储、监控、数据库乃至程序开发都熟悉,而且至少掌握其中两项
3. 精于容量规划、架构设计、性能优化
4. 了解电子商务
5. 热爱技术、热爱生活
* 我们是谁?
1. 全球领先的网上贸易市场和商人社区 Alibaba.com
2. 香港联合交易所上市公司 1688.HK
3. 我们的办公场所位于风景如画的西子湖畔、钱江两岸
* 我们可以为你提供什么?
1. 世界瞩目的舞台
2. 明确的职业发展路线
3. 有竞争力的待遇
有意者请将简历发送至: fengliang[a]zhidaofenzi.com (合则约见)
这种重复劳动还是让程序自动帮你去做吧。当且仅当有新人加入、有好玩的新话题、有人咬钓上钩时,才告诉你——最好是通过即时消息——“打雷啦,下雨啦,快回组里收衣服啊!”这样岂不是很make sense?哈哈。
我在豆瓣上建了一个杭州书虫小组,组里有700来号人,每天组员人数、讨论帖、小组收藏总计的变化次数在20-30次左右,人工反复去查看实在浪费时间。于是就想到利用脚本,实现通过即时消息告知小组页面更新的功能。具体思路是这样的,每隔3分钟用"lynx --source http://www.douban.com/group/hzbookworm/"命令抓取杭州书虫小组页面源码,再用md5sum命令生成MD5校验值,与前次保存的MD5校验值比对,若一致,则不做任何动作,若不一致,则通过python脚本发送Google Talk即时消息给我,通知页面更新。
首先下载Jabber协议的Python库:xmpppy,并在Linux系统里安装:
localhost ~ # wget http://nchc.dl.sourceforge.net/sourceforge/xmpppy/xmpppy-0.4.0.tar.gz localhost ~ # tar xvfz xmpppy-0.4.0.tar.gz localhost ~ # cd xmpppy-0.4.0 localhost xmpppy-0.4.0 # python setup.py install |
然后在你的普通用户目录里存放一个用于发送Google Talk即时消息的Python脚本(需要调用前面下载的xmpppy库):
|
请将代码中的 loginID 改为你的Google帐号ID,password 改为你的Google帐号密码,发送消息改成“打雷啦,下雨啦,快回组里收衣服啊!”

最后用"crontab -e"命令编辑你的用户定时任务,加入一段:
*/3 * * * * ( if [ `lynx --source http://www.douban.com/group/hzbookworm/ | md5sum -c /tmp/md5sum-douban | grep OK | wc -l` != '1' ]; then lynx --source http://www.douban.com/group/hzbookworm/ | md5sum > /tmp/md5sum-douban ; /usr/bin/python /home/hutuworm/douban/sendgoogletalk.py > /dev/null 2>&1 ; fi ) |
大功告成!从此,每当杭州书虫小组有任何风吹草动,我都会即时收到Google Talk跳出来的消息了。
Google App Engine 这时候就能派上用场了。写个图片转发小程序,把墙外的 FeedCount 图片转发进来展示即可。步骤如下:
1. 编辑 app.yaml,在 handlers: 后面添加以下两行:
|
2. 新建 feedcount.py:
|
3. 更新 App Engine,然后你就可以通过 http://hutux.appspot.com/feedcount 查看墙外的 FeedCount 了。
Google App Engine 允许每个 app 每天免费进出 20 GB 流量,该干啥干啥吧。

《未尽的才情——从 <顾颉刚日记>看顾颉刚的内心世界》为联经版十二卷《顾颉刚日记》而著,承此前两部之余绪,深入挖掘又一位已故大师的历史世界和内心世界。全 书分五节,从顾颉刚与傅斯年、胡适、国民党、新政府、谭慕愚五个角度,分述顾颉刚的事业、学术、立场、遭遇和情感。然脂暝写费搜寻,从六百余万字的《顾颉 刚日记》中爬梳出一个鲜活的顾颉刚,撰六万字长序,使读者于《古史辨》之外,对记忆中的史学大师产生全新的认识。此番辛苦,可谓功不唐捐。
说 起顾颉刚,第一想到的便是其名震江湖的煌煌巨编《古史辨》,“层累地造成的中国古史”说,与“鲧是一条鱼,禹是一条虫”之奇谈妙论。上个世纪二三十年代, 顾颉刚挟史学界疑古之风潮,发表《与钱玄同先生论古史书》,重新考辨上古史诸问题,引起学界内外极大震动。遂发起古史辨运动,与罗根泽、吕思勉、童书业等 先生,陆续整理编纂七大册中国上古史论辩丛书,亦即《古史辨》。顾颉刚的主要学术观点,就是“层累地造成的中国古史”说。他通过分析、考辨各种史籍而得出 结论,“时代越后,知道的古史越前;文籍越无徵,知道的古史越多”,我们如今知道的上古史,乃是历代颇具想象力的祖先们,旁征博引异族神话、结合本土实际 发挥,不断层叠累积创作出来的伪上古史。因此,他主张利用辨伪的方法,去伪存真以重建信史。当然,顾颉刚的想象力也不亚于历代祖师,他以训诂得出“鲧是一 条鱼,禹是一条虫”之奇谈妙论,颇受鲁迅的冷嘲热讽。
顾颉刚不只是作为史学家的顾颉刚。除了整日与之为伍的古籍外,他也有事业心,也有不 幸的遭遇,也有常人的七情六欲,甚至还有激荡以至浪漫的情感。这些都是以往读者所全然不知的。顾颉刚身后幸存这部六百余万字的日记,虽经劫灰,多有删削, 我们还是能从中一窥其内心世界。余英时先生的序言题为《未尽的才情》,其中“才”与“情”分指顾颉刚学术和事业的长才,及其与谭慕愚女士之间的一段未了情 缘。所谓“千古文章未尽才”,说的是顾颉刚早年以《古史辨》暴得大名,四九鼎革之后却屡遭冷落和不幸,晚年企慕王国维的学问境界,恨无以施展其学术事业之 长才,壮志难酬。所谓“堪叹古今情不尽”,说的是顾颉刚与谭慕愚女士之间,缠绵逾半个世纪那一段“柏拉图式的精神恋爱”,却无果而终。
通 观全序,余英时先生取《胡适日记全集》、《吴宓日记》及各种史料文字与《顾颉刚日记》相互印证、补正、参证,颇见功力。如第二节末尾(P49-P51), 余先生考证顾颉刚与胡适关系一段,说到“1957年,胡适大病之后在寓所休养,偶然读到俞平伯《红楼梦辨》的原版(1923年)。勾起旧情,他写了一篇两 千多字的跋文,回顾他在1921-23两年中和顾、俞两人考辨《红楼梦》的往事。”余先生进而“为好奇心所驱遣”,“想知道顾先生在同一天在做什么。恰巧 他也在青岛养病,却正在苦读《历史唯物主义》(《顾颉刚日记》1957年7月23日)”。又为了弄清楚顾先生为何非读此书不可,找到了《吴宓日记续编》 (北京:三联,2006)1956年9月10日所记,原来当时他们都在参加政治学习,进行思想改造,顾先生“虽在养病,仍不得不捧着这部‘文字累赘、不易 通晓’的译本苦苦挣扎”。如此一波三折,令人拍案叫绝。余英时先生此序通过提炼组织六百万字《日记》中主要的传记材料,概括了顾颉刚一生活动的主要范畴, 为我等终日营营碌碌、无暇读书之辈,提供了快速进入顾颉刚内心世界的捷径。另外,随处可见的印证、补正、参证,不仅对《顾颉刚日记》本身进行了一番“辨 伪”,真实还原了顾颉刚的历史境遇和当时心理,也在方法论上于读者多有启迪。
“千古文章未尽才”、“堪叹古今情不尽”,读罢全序,掩卷回想顾颉刚,唯有一声叹息。
(《未尽的才情——从<顾颉刚日记>看顾颉刚的内心世界》,余英时 著,联经出版公司,2007年3月初版)
对曰,在数日间。
佛言,子未能为道。
复问一沙门,人命在几间。
对曰,在饭食间。
佛言,子未能为道。
复问一沙门,人命在几间。
对曰,呼吸之间。
佛言,善哉,子可谓为道者矣。
——《四十二章经》
都说人生如戏。人生就像拍电影,逝去的岁月,一颦一笑,一举手一投足,已在摄影机里不停转动的胶片中定格。亦说人生如梦。当我们追忆往昔,倒转胶片回看过去,虽历历在目,却如梦似幻,伸手而不可及。
《四十二章经》里佛与诸沙门那一段问答,道出了人生的另一个秘密。人命在几间?呼吸之间。再好看的戏,再美妙的梦,终有落幕梦醒的时候。何时落幕,何时梦 醒,全然不由你我掌握。若一口气上不来或者下不去,则就此封镜杀青。好不好看自有他人评说,而你和你的过去,将在时间的胶片中成为一帧帧永恒的画面,不再 有回头删改的机会。
有人以为,中国人平均寿命72岁,自己还有大量时间可以随便挥霍。殊不知,这平均寿命72岁乃是对过去一段时间内死者寿命进行算术平均的结果,最多只能作 为社会老龄化程度的衡量指标,或是反映我国人民卫生保健和社会保障水平的指标,并不能依此预测你我的寿命。天灾人祸随时可能降临,呼吸之间,世界像关灯一 样瞬时寂灭。
庄子说,吾生也有涯,而知也无涯,以有涯随无涯,殆矣。求知固然重要,而人生有限,若没有目标,只是一味地学这学那,浅尝辄止,在前人的窠臼里打滚,重复 发明轮子,却不抓紧时间利用现有的知识、经验和技能,改变一点东西,创造一点东西,终究如宗杲禅师所谓,弄一车兵器不是杀人手段——到头来一事无成,于世 无益。
行走在消逝中,人生的春天转眼就历夏而秋。希望你,我的朋友,珍惜眼前的时光,在即将到来的夏天,绽放你的绚烂,生如夏花。
PDF suitable for framing: Poster version (vertical) or Diploma version (horizontal).
USENIX grants permission to reproduce this Code in any format, provided that thewording is not changed in any way, that signatories LOPSA, USENIX, and SAGE areincluded, and that no other signatory or logo is added without explicit permission from the copyright holders.
---------------------------------------------------------------------------------------------------
我们作为专业的系统管理员,应使自己符合最高标准的道德规范和专业精神,接受本道德准则的指导,并且努力促进所有系统管理员均照此行事。
专业精神:
- 我要在工作中力求保持专业,不允许受个人情感或信念左右,从而导致不公平或不专业地对待他人。
自身正直:
- 我要在我的专业工作中恪守诚信,对于我具备的才干和我所犯错误的影响,均坦白面对。当需要时,我会寻求他人的帮助。
- 无论如何,我都要努力避免由兴趣和成见所导致的抵触情绪。当被征询意见时,如果我有此类抵触情绪,我会在合适的时机声明,若有必要的话则要求撤换自己。
保护隐私:
- 我只在技术工作的必要过程中访问电脑系统里的私有信息。无论通过何种方式知道了那些我可访问的任何信息,我会对此保守机密。
守法合规:
- 我要以实际行动教育自己和他人遵守相关法律、法规与政策。
保持沟通:
- 我要与管理层、用户及同事就技术问题和共同利益保持沟通。我会努力倾听和了解各方需求。
系统完整:
- 我要努力保证我所负责系统的完整性、可靠性和可用性。
- 我会设计并维持每个系统各自实现该系统之于整体的价值。
教学相长:
- 我要不断更新和增强我的技术知识,以及与工作相关的技能。我会将我的知识和经验与他人分享。
行业责任:
- 我会与更大的行业团体合作,以保持网络和计算资源的完整性。
社会责任:
- 作为消息灵通的专业人士,我会推动与这些道德准则诉求一致的相关政策和法律得以起草并颁行。
道德责任:
- 我要努力创建和维护一个安全、健康及富有生产力的工作场所。
- 我会尽全力作出与保障社区和公众的安全性、隐密性与舒适性等价值诉求相一致的决定,随时揭露那些貌似未经检查确认的风险和危险因素。
- 我会恰如其分地针对技术工作接受或提出富有诚意的批评意见,并将他人的贡献完全归功于他人。
- 我要以身作则,在全部工作实践中维持高标准的道德规范和专业精神。我会支持全体同仁遵循本道德准则。
---------------------------------------------------------------------------------------------------
Draft of September 12, 2003, approved September 18, 2003, by the SAGE Executive Committee and September 30, 2003, by the Ethics Working Group.
Co-signed by LOPSA, USENIX, and SAGE 2006.
---------------------------------------------------------------------------------------------------
于是就想到利用 xmpppy 来制作一个 en2zh 命令行工具,实现自动翻译。好在 xmpppy 已经提供了 xtalk.py 代码样例,只要略作修改即可:
|
或者直接下载修改后的 en2zh.py: http://github.com/hutuworm/minitrue/tree/master/en2zh.py
然后按以下步骤设置并使用:
0. 安装 xmpppy: $ easy_install xmpppy
1. 在 home 目录中创建 .xtalk 配置文件,设定你的 Google Talk 用户名和密码,为了安全起见,必须将该文件权限设为 0600:
$ cat .xtalk #Uncomment fields before use and type in correct credentials. #JID=romeo@montague.net/resource (/resource is optional) #PASSWORD=juliet JID=your-id@gmail.com PASSWORD=your-password $ chmod 0600 .xtalk |
2. 测试翻译:
$ python en2zh.py "Bosnia and Herzegovina" 波斯尼亚和黑塞哥维那 |
3. 自行编写任意命令代码,调用 en2zh.py 完成自动翻译工作。(注意:Google Talk en2zh bot 比较适合翻译名词、短语,翻译完毕之后无论如何一定要检查一遍。)
李零从小就喜欢书法、绘画、篆刻,家人都认为他是个美术坯子,期望他长大后成为一位画家。而人生往往事与愿违,如其前言所述,后来并没有走上画家之路,却阴差阳错地成了考古学家。辗转多年,现在又供职于北京大学中文系。五年前应邀赴香港中文大学艺术系担任客座教授,终于以这份研究成果圆了艺术研究之梦。当然,这篇长文并非仅仅是作者个人的圆梦之作,就“复古艺术”这个主题而言,作者收集资料之完备、展示图例之丰富、立论逻辑之谨严、创获见解之精辟,令人不得不由衷钦佩。
记得 包伟民先生曾在一次讲座中偶然提及,中国古代建筑多为木结构或砖木结构,核心架构均是木制构件。受制于木料本身的脆弱,火焚、水浸、风蚀、虫蛀都会使木构件损毁,难以延续千年。自古以来,在古建筑修复中有一种最高级的方法,便是“落架大修”。所谓“落架大修”,是将原古建筑所有构件逐一编号落架,用新材料复制毁损构件之后,再按原样组装整座古建筑的复杂过程。我们如今见到的不少古建筑,原来均为历代“落架大修”所得的假古董。比如岳阳楼,始建于唐玄宗开元四年(716),北宋庆历六年(1046)滕子京重修,明崇祯十一年(1639)毁于战火,翌年重修,清光绪六年(1880)大修,本朝三十五年(1983)落架大修,五十九年(2007)又由地方政府斥资3.2亿元大修。忆及此处,心中顿生疑窦:即便依照“修旧如旧”的原则来进行落架大修,以岳阳楼为例,今年这次大修究竟该“如”哪个“旧”,唐、宋、明、清,还是本朝三十五年的“旧”?历朝历代的多次大修、重修、落架大修,已篡改甚至消灭了唐代岳阳楼原建筑中的太多细节。仔细想想,我们眼前这座焕然一新的“古建筑”,其合法性真的十分可疑。
此书题旨,便是要研究中国艺术史上的复古问题,用考古发现来解析复古艺术的审美趣味,分析其间托古、悖古、法古、作古的成分,以及人们怎样接受和认可这种审美标准的过程。作者发现,复古艺术的典型个案一般包含三个步骤:考古、仿古和变古。前二者有时不太明显,变古则是必不可少的——“借尸还魂的目的,是要突出新意”。此外,穿凿附会的古迹、张冠李戴的坟冢,亦如吴带当风的美女、慈眉善目的偶像,都是为了满足人类想像的代用品。地不爱宝,古已不存,后人只能依据古代遗留的片鳞只爪,用当代的材料和技术,反复描摹对古代的想像。何况仿古制品,就算假古迹,流传千年,也会变成真古迹。回看焕然一新的岳阳楼,与其指摘主事者“形象工程、政绩工程”,毋宁说“古已如此,于今为烈”罢了。
接下来作者分别以“王莽时期的文物古迹”、“宋代金石学”与“宋以来的文人艺术(以篆刻为例)”为标本,举例分析。王莽托古改制,以“古”为名,朝代却是以“新”为号。反映到王莽时代的遗址遗物:半据礼书想像,却又半考式盘、博局而设的明堂;货币以西汉五铢钱为基础,却又模仿战国的刀币和布币;度量衡器除嘉量出于复古想像,其余皆为汉代风格。可见王莽难以摆脱他身处其中的“现代性”和先天承受的现实遗产,与梦想中的周公渐行渐远。宋代金石学亦复如是:用于铭文考释的《汗简》,以东汉隶书记录的战国文字读法为基础,释读更早的文字,过程基本靠摸;而据以制器的《三礼图》,因名图器,器形完全从礼文揣测,跟真实器物差距很大,更无异于盲人摸象。后来虽有《考古图》、《博古图》等因器定名的金石图录,但无式可遵时,宋人还是会依据《三礼图》,利用铜、玉、陶、瓷等材质和当时工艺,孜孜不倦地制作仿古器物,以对古代的想像填补知识上的空白。宋以来的文人艺术虽与以往的复古艺术有所不同,但还是逃不出古人的规矩和传统:诗文必法汉唐,书翰之推钟王,篆刻追摹汉晋,凡此种种,复古的结果却往往是去古甚远。
由是观之,古今之变繁复如斯,岂是太史公一句话,说“通古今之变”就能“通”的。矛盾在于,“人们总是希望复原古代,但古代却不可复原”。学者吹毛求疵,苛求细节,不过是五十步笑百步。复古艺术说到底,毕竟还是艺术。“了解之同情”,或曰“温情与敬意”,以普通人的平常心看待“铄古铸今”,才是解毒良剂。
(《铄古铸今——考古发现和复古艺术》 李零 著,生活·读书·新知 三联书店,2007年8月)
话题挺有趣。第一天晚上讲的是“剽窃与版权”,事起王天成诉周叶中剽窃案。北京市第二中级人民法院一审判决书,把界定的标准不断放松,将涉及抄袭的范围不断缩小,最后竟全盘推翻抄袭指控,原告败诉,几视著作权法为一纸具文。而具文,又何尝不是我国法律的一大特点呢?冯先生举出最高人民法院应用法学研究所编纂的《人民法院案例选》中两则案例,一则是死者家属诉酒厂出品酒瓶上无显著标识导致受害人饮酒过量致死案,一则为家长诉LG电子有限公司广告画面出现恐怖形象导致受害儿童精神损失赔偿案。两案依据地方法院的判决,酒厂遵守了国家有关技术标准,法院也无权判断国家技术标准;LG广告符合广告法规定,法院亦无权定义“恐怖”,因此均判被告无罪,原告败诉。而《人民法院案例选》的责任编辑杨洪逵先生(已故)却另有见解,虽就法律条文论,地方法院的判决都正确合法,但出于社会公义考虑,此类案件有公益诉讼的性质,因此法官完全可以且应当走价值判断的路子,为弱势一方争取权益,并由此推动法律和司法的发展。同样,周叶中的案子也应参考公益诉讼的办法,一个符合公义的判决,有利于推动当下的大学改革、教育改革,有利于惩治学术科研腐败、净化学界环境,更有利于展现法律的生命力,推动法制自身前进。冯先生指出,法律条文永远不可能完善,我们不能把所有责任和问题都推给立法,改革开放之所以走到今天,主要就在于不断解放思想,突破既有的条条框框,不断超越僵化而机械的固有体制。价值判断应先于法理判断,让有违公义、有害公理的问题得到处理(不一定能立刻解决),追求实现作为公平的正义,则善莫大焉。
第二天晚上从西溪校区转到了紫金港校区。这次的题目更好玩,“宪法也是个好东西”,呼应俞可平《民主是个好东西》一文(《学习时报》第367期)。开场首先提到了北大巩献田教授此前撰公开信反对《物权法》草案,直指该法案违宪,而随即得到有关部门甚至中央领导的高度重视,召集国内法学家七次开会讨论修订草案一事。时至今日,宪法终于“也是个好东西”了,中国历史上似乎从未有人把违宪当回事,如今竟然因学者指责违宪而导致一部法律草案接连修改七次才正式出台,说明中国社会确实有了一点进步。冯先生引述德州大学Austin分校 Paul Woodruff 教授的新著 First Democracy - The Challenge of an Ancient Idea (Oxford Press,2006)中,关于雅典民主的七项要素:自由(Freedom from Tyranny)、和谐(Harmony)、法制(Rule of Law)、平等(Natural Equality)、民智(Citizen Wisdom)、辩论(Reasoning without Knowledge)、教育(Education)。只有具备了这七项要素,才有可能培育出“雅典公民”,也只有当出现一大批“雅典公民”时,社会才有可能孕育出好的民主体制。环顾全球,当今世界多数国家是民主国家,而其中多数民主国家是社会混乱、多数民众受苦的国家,民主并不是万灵药。回到开场的话题,现在允许学者公开辩论、公开指责某法律草案违宪,并且领导同志会因担心该法案违宪而推迟法案出台,召集法学家反复讨论修订,才慎重推出定稿。在这里,《物权法》草案违宪与否并非问题要点,关键在于,宪法的权威得到了维护,法制的力量得到了彰显,价值层面的判断高于技术层面的操作,这是走向好的民主体制的开端。
冯象先生颇有大家风范,语调温和,娓娓道来,又不乏针砭时弊,间或点缀几句妙语,引起满场共鸣,不时爆出笑声和掌声。虽然我更希望听他讲尘土亚当、译经故事,但两个晚上到浙大赶场子听他讲法律,还是觉得大有收获。他深厚的学养、优雅的风度、精微的思辨、深刻的洞察,为后学晚辈树立了学习进取的路标。而那种淡定超然的心态,恐怕一时半会儿学也学不来的。惟愿冯象先生身体健康,一切安好。
所谓系统管理员,第一要务当然是保证所维护系统安全可靠地稳定运行。如果系统不稳定,三天两头要么当机,要么被骇客随意进出,可用性不是若干个9而是若干个8,那这位系统管理员现在不滚,又更待何时。系统管理员日常处理的事务既多且杂,一定要有良好的时间管理习 惯,根据事项的轻重缓急区分不同优先级,安排时间一一落实。系统管理员在系统中具有至高无上的权力,在虚拟世界里,系统管理员就是上帝,谁要敢说用户是上 帝,系统管理员(俗称网管)一脚就可以把他踹出系统外面去。系统管理员所接触的设备和数据对于公司来说,都至关重要,稍有闪失,恐怕会危及公司命脉,因 此,系统管理员必须具备良好的道德修养, 自身正直、保护隐私、守法合规,处处体现专业精神。所以前述视“客户第一”如狗屁的系统管理员,应该自觉卷铺盖回家。系统管理员直接面对真实世界、复杂系 统里的诸多复杂问题,需要系统管理员不仅具有精湛的技术、广博的知识、沉稳的心理素质,细致严谨、随机应变,更要有敏锐的嗅觉、前瞻的意识,以及架构设计、容量规划、性能分 析、故障排查等多种综合能力。
真的猛士,除了要敢于正视淋漓的鲜血之外,还要敢于直面惨淡的人生。系统管理员实施网络切换、系统调整、 IDC搬迁等重大项目,一般都在深夜或者国定长假期间。别人休息的时候,系统管理员在拼命工作。而别人工作时,看到系统管理员要么面对黑底绿字的终端窗 口,神神鬼鬼地不知捣鼓什么东东,要么干脆连个人影都不见,大白天不来上班,都在家睡大觉。古来圣贤皆寂寞,唯有饮者留其名。系统管理员连个饮者都算不 上,系统稳定运转的时候没有人知道,出了问题便首先想到找系统管理员,系统管理员的辛酸,谁人知晓。
说到这里,公司要系统管理员干嘛,还用问么?
这些年来,耶鲁大学历史系教授、美国历史学会前主席 史景迁(Jonathan Spence),已成为两岸出版界热捧的明星历史学家。上海远东出版社自2001年始,接连出版了“史景迁中国研究系列”丛书九种。此外,加上中央编译、北京大学、三联书店各出一种,史景迁教授在大陆出版的著作总计有十二种之多。台湾方面则由时报出版公司掌旗,陆续印行了史景迁著作的系列台湾译本。出于众所周知的原因,史景迁著作大陆译本都有不同程度的删节,如时报出版《追寻现代中国》三卷本,其相应的上海远东译本只有一册,近一半内容删节,堪称阉本中的阉本。可是,自诩“不读洁本、不读阉本、少读译本”如我,也忍不住买来几本“洁阉译”俱全的史景迁作品拜读。
为何两岸如此热衷于出版史景迁著作,即使删节一半,还有出版社硬是要出,还有傻读者愣是要读?令人不禁惶惑。王海龙先生新作《遭遇史景迁》对此提供了一种解答。史景迁少年时代便钟情于研究中国文明,先后转益多师,跟随耶鲁大学莱特教授夫妇、哈佛大学费正清教授、澳洲国立大学房兆楹教授夫妇学习汉学。“这些导师的言传身教,潜移默化中陶冶了史景迁的性情,使他对遥远东方的这个有五千年历史的国度产生了景仰和憧憬之心。” (p.5)特别是房兆楹教授对他的严格指导,让史景迁终身难忘:“有一次房教授读他写的文章后深觉满意,给他批回时用打字机留言批道:‘看上去有了很大的进步’,批完以后房教授斟酌再三,觉得这次批得太过慷慨,于是他又仔细用墨笔将‘很大的’几字划去,换上了‘不小的’几个字。这件事让史景迁感触至深,使他深知做学问的不易。学无止境,应该严谨再严谨。”(p.6)在诸位汉学名家门下多年求学的经历,给史景迁打下了扎实的学术基础。
此后,史景迁不断拓展其治学领域,“他古今兼治,中西双擅;以治明清思想史和文化史为经,以治西方汉学史为纬,纵横交错,东西兼顾,从而在这宏观的背景上编织出深远的、富史诗般意境的中西文化交流的新篇章。”(p.8)“除了是深刻的思想家和历史学家以外,史景迁还是一位十分杰出、流行的作家型学者,他的文笔十分波俏优雅,富有英国式的幽默和美国式的清新开朗。他力图把古老、枯燥的汉学带入当代社会。他文采斐然,妙笔生花,在西方社会一般层面上极大地拓宽了汉学的视野和影响力,开掘了读者群。”(p.9)当然,从“信史不文”的中国传统史学眼光来看,史景迁的生花妙笔不啻为“历史小说”。可是别忘了,子曾经曰过:“言之无文,行而不远”(《左传·襄公二十五年》)——说话写字没有文采,跑都跑不远,更别指望流传百世了。而且子曾经还曰过:“质胜文则野,文胜质则史”(《论语·雍也第六》)——有人说史景迁这种写法是“野路子”,却忘了孔夫子的教诲:“文胜质”才是“史”啊!“景”仰司马“迁”的史景迁教授,所承袭的正是自司马迁以降的中国古典史传文学传统。
不过话说回来,作者指出:“史景迁的汉语根底不如一般中国学人,甚至不如程度好一些的中文系师生。史景迁的中国史学基础强不过中国一般综合性大学历史专业的本科生。史景迁写高头讲章的功力比中国一般大学的一般的副教授也过硬不了多少。”(p.49)那么,史景迁到底凭什么在中国这么热门?作者认为,史景迁一是凭其“隔”,从洋人眼中看我们烂熟于胸的中国史,别有一番异国情调;二是缘自“时下中国读者的好奇、跟风和附庸风雅”,看老外写中国史,与看西洋镜、听大山说相声是一个意思。
《遭遇史景迁》,为陆灏策划的上海书店“悦读”小丛书之一种。作者王海龙先生是哥大东亚语言文化系教授,与史景迁多有过从。全书由三部分组成:第一部分 “遭遇史景迁”,为史景迁所受“历史小说家”之讥评而正名、声辩;第二部分“史景迁五章”,作者获赠史景迁的一份演讲稿版权(封面背景即为王海龙致史景迁,确认受赠《To Change Europe: The First Chinese in France, 1680 - 1735》版权的信函),遂拟史氏笔法,译成故事五章,载入本书;第三部分“汉学的悲剧”,则是一篇长文,介绍西方汉学史上的中国,由“想像的异邦”一步步沦为“怪物公司”的屈辱历程。书中间或展示多幅插图、漫画,为文字作注脚。
(《遭遇史景迁》,王海龙 著,上海书店出版社,2007年6月)
最近,北大李零教授出了一本新书,题为《丧家狗——我读<论语 >》。读了才知道,原来犬儒主义的发祥地并非古希腊,而是在我们伟大的祖国。这一流派的大宗师,便是身为万世师表的大成至圣文宣王——孔仲尼先生。该书封面顶头三行红字,写得清清楚楚:“任何怀抱理想,在现实世界找不到精神家园的人,都是丧家狗。”名为儒,实为狗,外儒内狗,儒与狗乃是一体之两面。封面底部还引述了《史记·孔子世家》里的一段八卦:“孔子适郑,与弟子相失,孔子独立郭东门。郑人或谓子贡曰:‘东门有人,其颡似尧,其项类皋陶,其肩类子产,然自要(腰)以下不及禹三寸,累累若丧家之狗。’子贡以实告孔子。孔子欣然笑曰:‘形状,末也。而谓似丧家之狗,然哉!然哉!’”孔子既自承“丧家之狗”,那么由此推论,其徒子徒孙继承道统,自然都是“犬”儒了。
从李零的视角出发再读《论语》,顿觉孔夫子所论所语,怎么看都像是一个犬儒主义者的自白。子曰:“饭疏食,饮水,曲肱而枕之,乐亦在其中矣。不义而富且贵,于我如浮云。”(《述而第七》)孔子安贫乐道,摈弃不义之财。子曰: “居处恭,执事敬,与人忠。虽之夷狄,不可弃也。”(《子路第十三》)孔子洁身自好,勤奋敬业,待人忠诚。子曰:“巧言令色,鲜矣仁。”(《学而第一》)孔子最讨厌谄媚的人。子曰:“何以报德?以直报怨,以德报德。”(《宪问第十四》)孔子主张直来直去。子曰:“已矣乎!吾未见好德如好色者也。”(《卫灵公第十五》)孔子喜欢实话实说。子曰:“有教无类。”(《卫灵公第十五》)孔子对待学生一视同仁。子曰:“躬自厚而薄责于人,则远怨矣。”(《卫灵公第十五》)孔子提倡严于律己、宽以待人。子曰:“由,知德者鲜矣。”(《卫灵公第十五》)孔子也常常感到孤独。这些话,与当时(甚至现在)的社会都是格格不入的。
古希腊早期的犬儒主义者颇类孔子及其门人:生活简朴,“一箪食,一瓢饮,在陋巷,人不堪其忧,回也不改其乐”(《雍也第六》);约束自我,追求道德理想, “克己复礼为仁”(《颜渊第十二》);抨击权贵,“八佾舞于庭,是可忍也,孰不可忍也”(《八佾第三》);批评社会,揭穿世间的一切伪善,“乡原(愿),德之贼也”(《阳货第十七》)。同样,《论语》里的孔子,依据自己的道德准则,抨击当时礼崩乐坏的世俗社会,希望回到古圣先贤统治的时代。正如李零在其序中所言:“孔子不是圣,只是人,一个出身卑贱,却以古代贵族(真君子)为立身标准的人;一个好古敏求,学而不厌、诲人不倦,传递古代文化,教人阅读经典的人;一个有道德学问,却无权无势,敢于批评当世权贵的人;一个四处游说,替统治者操心,拼命劝他们改邪归正的人;一个古道热肠,梦想恢复周公之治,安定天下百姓的人。他很栖惶,也很无奈,唇焦口燥,颠沛流离,像条无家可归的流浪狗。”于是就出现了郑国都城东门的那一幕。
人有智、愚、贤、不肖之分,狗也有忠、谄、义、媚惑之别,犬儒亦复如是。余英时先生与陆扬论及国内时兴的“《论语》热”,特别提到有人把“民无信不立”一句,“信”字居然解作“信仰”,历史之何其惊人相似也!当年在台湾,徐复观先生就曾痛斥那些将“信”字解作“信仰”之人为无耻。而李零此番重读《论语》,读原典,“用孔子本人的话来讲话——不跟知识分子起哄,也不给人民群众拍马屁”,不啻给时下的“《论语》热”来了一针清醒剂。同时也给那些无耻妄解《论语》的人,特别是那些挂羊头卖狗肉的不肖“犬儒”们,当头泼了一盆冷水。
(《丧家狗——我读<论语>》,李零 著,山西人民出版社,2007年5月)
言归正传。最近某个应用产品团队突然提出要增加数十台服务器,让兄弟我大出了一身冷汗。现在机架空间紧张的很,我们预算也有限,怎么能你说加几十台服务器 就给加几十台?为什么?凭什么?给个理由先?对方回答,说是根据最近一段时间对其应用集群平均负载的观察结果,以及运营方面预估的访问量增长趋势数据,得 出要加几十台服务器的结论。那么问题来了,且不论运营方面怎么预估访问量增长,用当前的平均负载作为基数来估算服务器增长,靠谱么?
我们首先来看看平均负载(Load Average)到底是什么?这个问题似乎从未有人清楚地阐释过,我也只知道所谓平均负载,就是指当前Running和Runnable队列里的任务总数 摊到每个逻辑CPU的平均数。貌似多数UNIX/Linux教材、书籍里谈到平均负载这个概念时,都是这么忽悠人的,甚至讲的比前面这句更为含糊。幸好 Linux Kernel开放源码,我们既然碰到了问题,就不妨做个愣头青,直接去源码里找找答案。
仔细一找,果然发现 kernel/timer.c 里这段疑似代码:
|





