Thursday, January 08, 2009

吃饭与性能

今天中午吃饭,有同事闲打饭的效率太低,让我给点建议怎么调优。。。。
我立即给出一个建议:增加打饭员工的人数,不过好像有点浪费:)
其实打饭这个环节,我们还可以做另外的tuning,比如预先准备好足够的米饭,供客户索取,不必每次都需要客户向打饭的阿姨索要,有时候米饭少了还要重新添。
这个道理其实就像是对系统做Cache,米饭对吃饭的人来讲,每一碗基本没有什么差别,预先准备好足够的饭,这样加快了客户取饭的速度,也减缓了打饭阿姨的压力。
如果每次吃饭的人都来一个挨一个的问打饭阿姨要,那么如同每次发送的request都需要访问一次DB去取数据,而每次取得的数据几乎没有差别(都是一碗米饭),增加了DB的压力,给性能带来不好的影响。
当然预先准备好足够的米饭也有一些不足之处,比如,长时间放置米饭会凉,(cache会过期),那一般系统会有一些机制去控制cache过期,比如加exprie header,或者是版本控制,来防止客户可以取得想要的数据。
总之,在吃饭高峰之前,打饭阿姨把尽量多的米饭准备好,这样,打饭的效率就会高了:)

当然,如果是打菜的话,就不像准备米饭那么简单,菜的花样多,人的口味和偏好也不一样,组合也多种多样,提高处理效率还是用几个阿姨同时为客户打菜的好。

批处理:买饭票的例子可以说明这个原理,比如大家吃饭买票,一般都是把钱给一个人拖他买票,其他人去排队,而不是每个人都去买票,这样的结果是所有人都会在买完票时发现吃饭的队伍已经排的很长了。one mistake of performance practice:Chatty instead of Batch processing

No comments:

Post a Comment