冲着AWS的名头,从最开始就用的EC2,推荐用的t类型的instance。AWS的文档太多太长,推荐用哪个就用哪个。测试,使用,一直都好好的。 1 t1 R% I) e4 ?0 Q9 S5 K* }: [) W% D+ w. N6 b; [
结果突然一天,服务器卡死了。以为是我们算法问题,各种查找。后来发现AWS有credit机制。比如给你的机器是2GHz的,但只是名义上的,其实给你的只是其中的一部分,比如说30%,也就是600MHz。如果你用的低于这个,给你credit(有封顶100),高于这个,就要消费credit。当credit为0了,就要卡你性能了,服务器就慢的受不了了。+ P: z/ w \9 ^8 a7 _. s5 M$ Z
& S) S$ v$ i0 p. B( y$ _3 G开通花钱买credit的服务,暂时缓解了问题。后来就彻底抛弃了t类型,使用其他没有burst机制的类型,比如m。虽然贵,但是用着放心。9 Q, o9 F2 Q5 a: W5 x( z3 e
( y# w) }; M& k' ~& f去年给系统架构解耦,把数据库转移到了RDS。吃一堑长一智,特意不能选t类型,各种检查,没问题,转过去了。转过去就发现有坑了。他虽然不限制CPU了,但是给IO搞了一个类似的机制,还没的选,也没法花钱买credit。有一个服务reserve一定的IOPS,但是巨贵,而且IOPS不高。唯一的方法,是他的credit计算和你用的Disk大小相关,你提高硬盘空间,IOPS会提高一点点。所以我数据库就30G左右,一次次的提高到了500G。而且很坑爹的是,他的credit上限100太低里。我一天就晚上用三四个小时,别的时候基本用的很少,但是credit都浪费了,到晚上很快100 credit就花光了。他的上限如果是200或者300,我的满够用的。0 T$ @" b. w: U