2015年7月21日 星期二 阴

之前我在SAE上用的大都是自娱自乐的玩具,我没期望有多少用户来玩,所以一直没有在意。最近第做了一个简单的商用网站,才发现sae还真不靠谱啊。这几年来,我遇到mySql、memcache和kvdb出错,但kvdb报错是我见得最多的了,我偶尔看到的都联系官方微博反应了,在做这个网站的时候才发现问题是很严重的。SAE官方的技术论坛上也有很多人报。

一开始我还不知道,硬件每10分钟发一次数据上来,如果硬件没收到的话,会延时重发或者重启,我一开始看网站request返回的都是200,觉得网站没有问题。当然硬件第一次没有做好,第二次做了之后,软件也各种优化,硬件知道如果是每隔13秒,就表示网站可能出错了,我在后台看到的都是200的返回。

直到有一次,有人看到网站报错,拍照给我看,我看了一眼就知道是kvdb出错了。我增加了memcache,对kvdb做了一层封装,没想到之后硬件就一直运行良好了,这几天没有再出问题,我再观察看看。

今天在sae后台搜exception111,看到基本上连续9个多小时,基本每次请求都有报“Exception=No write server available”,无语了。我觉得新浪心不在云上,他们这几年没把云做好,就想着怎么赚钱了。

[code] def getkv(k): obj = None if k: try: obj = mc.get(str(k)) except Exception,e: print ‘getkv(%s) exception111=%s’ % (str(k),e)

try: if not obj: obj = kv.get(str(k)) if obj: mc.set(str(k),obj) except Exception,e: print ‘getkv(%s) exception222=%s’ % (str(k),e) return obj

def setkv(k,v): if k and v: try: mc.set(str(k),v) if kv.set(str(k),v): print ‘[KVDB] set %s OK’ % (k) return True except Exception,e: print ‘setkv(%s) exception=%s’ % (str(k),e) return False

def delkv(k): if k: try: mc.delete(str(k)) kv.delete(str(k)) print ‘[KVDB] del %s OK’ % (k) return True except Exception,e: print ‘delkv(%s) exception=%s’ % (str(k),e) return False [/code]