作者文章: Fenng

About Oracle 10g/11g AWR

Oracle 10g 开始 引入了AWR (Automatic Workload Repository). Oracle 建议用户用这个取代 Statspack。不过这个需要注意的是使用 AWR 需要有 Diagnostic Pack License。Oracle 后来推出了一个解决方案可以禁止掉该特性。

在 Note. 436386.1 有说明:

SQL> @dbms_awr.plb

然后执行:

dbms_awr.disable_awr();

如果用 sys 之外的用户创建 AWR 报告,则需要进行合适的授权。否则会报告错误 PACKAGE 执行错误。

CONNECT / AS SYSDBA;
GRANT ADVISOR TO foo;
GRANT SELECT_CATALOG_ROLE TO foo;
GRANT EXECUTE ON sys.dbms_workload_repository TO foo;

注意 Bug 4597354 在创建基线数据的时候,对性能有很大影响。在一个非常繁忙的系统上不要进行此操作。

如果结合企业管理器用 AWR 是很方便的,如果用手工方式收集性能数据,多了很多可供调整的地方,是更加方便了呢?还是更加麻烦了?

EOF

今天

昨天已经约好了今天集团几个 DBA 到上海与盛大的同行进行技术交流。今天还算起的早,到创业大厦楼下等同事。大门口已经热闹非凡,红彤彤一片。很多同事在那里摆 Pose “敲上市钟”,还有很多排队买纪念品(接下来还有抽奖活动,没我的份儿了)。差 5 分钟 9:30 ,我们出发了 — 没看到宣布上市那一刹那的沸腾场面。

一下午都在盛大参加讨论,盛大作为游戏厂商的领头羊,运维技术自有独到之处,讨论气氛也比较热烈,当然这一天下来也比较累。在盛大的园区用手机拍了几张照片(出大门的时候看到陈天桥领着一群人进来参观)。晚上住的地方……别说了,堪称今年出差最差的一次。一个有趣的插曲是,吃完晚饭出来,我们几个看到路边有卖DVD的,Biti 买了一张《色戒》,小贩告诉他是香港影院录下来的枪版…..路上 Biti 说”如不是,肯定打车回去找那个小贩”。结果,经过仔细检验,结论是100%的国内影院录的枪版

晚上回来,看看新闻,市场反应出乎大多数人的预料。好多人对财富榜开始津津乐道,好多旧故事、旧的细节又被翻了出来,有些我都快能背下来了。这一天就过去了。

嗯,2007 年 11 月 6 日,阿里巴巴 B2B 业务香港成功上市!

EOF

世说新语: 汉语编程

很多人问我雅虎有没有可能在搜索领域赶上谷歌,我明确地回答–没有,因为雅虎不可能专注在这个领域。有时,一个好的公司不能完全按华尔街的意愿办事
–Google 吴军

支持方言编程!
–在 Twitter 上有人讨论到”汉语编程”这个笑话一般的话题. Yining 干脆来个荒谬到底.

大唐今天倒闭,我们明天就能用上3G
–网友 xlight 针对明白了大唐 3G 为啥不行的留言.

辞职完全属于员工自愿,没有公司强迫行为。绝大部分员工会通过竞岗回到原来的岗位
–华为回应媒体报道的”华为让万人辞职、重新签订合同”事件

抄一段独白:

该死的
整整一代人都在当加油工、招待员或者白领奴隶
广告诱惑我们追逐汽车和时尚
于是我们拼命工作
买那些没用的狗屎
我们是被历史遗忘的一代
没有目的、没有地位
没有世界大战、也没有经济大萧条
我们的战争就是心灵的战争
我们的生活就是经济大萧条
我们看着电视
相信有一天我们会成为百万富翁、影帝或是摇滚明星
但是
我们不会
这就是我们渐渐面对的现实
所以
我们真他妈的被激怒了

继续阅读

Twitter 的架构扩展: 100 倍性能提升

Twitter 是我最近一段时间用的最多的网络服务之一.还记得刚开始有段时间发消息速度那叫一个慢. 难得的是 Twitter 的开发者在用户激增的情况下性能提升的不错, 据说,相比当初有 100 倍的性能提升, 那我们就来看看他们都做了什么.(发现我这个 Blog 快成了 High Scalability 的中文镜像站了.)

是否真的是 100 倍性能提升, 大可不必较真, 但 Twitter 的一些经验是足以借鉴的.

Ruby on rails

似乎 Twitter 是用 RoR 开发的流量最大的站点(有待于求证). 开始使用DRb (“Distributed Ruby”.), 该库可以通过 TCP/IP 从远程 Ruby 对象发送接收消息, 其缺点是不那么好用,并且没有冗余, 于是转向 Rinda , Rinda 基于 DRb 开发, 使用简单. Twitter 也证明了 Ror 应用同样可以支撑比较繁忙的站点, 工具没有对于错,关键是否能运用好.

twitter_drb.png

图片来源. (这里面我非常疑惑的一点是据说只有两台DB(Master/Slave),可要支撑这么大的并发更新似乎有些难度.)

ETag

Twitter 对于Etag 的态度让不少人疑惑. 这恰恰是因技术制宜的一个体现, 因为 Etag 不是万能药. 另外一点比较重要的原因是 Twitter 有超过 90% 的流量来自 API, 而 多数 API 客户端不支持 Etag.

数据库方面的经验

尽可能的索引(Fenng补充:不要过度索引). 因为 RoR 应用的特殊性, 索引是在代码中向 DB 提交的. 另外一个值得议题的是, 反范式. 严格遵守范式是要吃苦头的.建立可行的测试方法,明确的知道你的SQL都在用什么方式运行.(另外,我有个疑问是 rails 不支持 2 阶段提交的吧?)

避免资源过度被占用

哪个站点都不避免的有“水葫芦用户”,对于这样的 Spam 类型用户, 肯定会影响原有的应用处理资源. 该处理就要处理掉. 另一个方面,对于间歇性占用系统资源过多的进程用 Monit 处理.

另外一个很重要的环节是 Cache, 不废话了,没有好的Cache机制怕这样的站点不会成功的. (建议阅读车东辛苦翻译的这篇面向站长和网站管理员的Web缓存加速指南[翻译]). Twitter 运营的一个可取之处是能够积极听取社区的意见并改进, 同时社区上也有很多用户给他们提供了不少技术支持. 这也是开放而带来的好处吧.

EOF