收集了一些量化的数据,后面持续补充完善
一、硬盘与内存
SATA硬盘IOPS:100
SAS硬盘IOPS:200
SSD:硬盘IOPS:30000
RAM IOPS:800,000
二、用户体验
《细节决定交互设计的成败》一书中提出了0.1秒,1秒,10秒这3个关键时间节点。书中指出如果用户在进行某个操作后能够在0.1秒的时间内知道自己的操作结果,那么用户就不会感觉到任何的滞后,用户会感觉这是一个直接的操作;而当用户操作后响应时间超过1秒时,就会打断用户原来的思路与想法,从而降低用户操作效率;而当响应时间超过10秒时,就会有大量用户失去耐心转而去做其它事情
三、Mysql数据库
Mysql单表数据量:
纯int不超过1000W
含char不超过500W
单库不要超过300-400个表,单表字段数控制在20-50个
load data比insert快20倍
索引最好不要超过字段数的20%
同一字段将or改为in
Or的效率:O(n)
In的效率:O(lgn)
四、Linux系统负载
在系统负荷方面,多核CPU与多CPU效果类似,所以考虑系统负荷的时候,必须考虑这台电脑有几个CPU、每个CPU有几个核心。然后,把系统负荷除以总的核心数,只要每个核心的负荷不超过1.0,就表明电脑正常运行,比如C1的机器有8个核,所以保证机器正常运行负荷必须在8以下
"cat /proc/cpuinfo"命令,可以查看CPU信息。"grep -c 'model name' /proc/cpuinfo"命令,直接返回CPU的总核心数
五、网络
1、Ethernet II 中Ethernet帧最大1518,除去18(6DA+6SA+2EtherType+4CRC),MTU为1500
2、802.3ac增加了对vlan的支持,在有vlan时在SA后增加4个字节,最大帧就成了原来的1518+4=1522,MTU仍为1500
3、后来未来在Ethernet上计费方便,引入了传统上用于计费的PPP,于是就出现了PPPoE,就Ethernet承载PPP,虽然Ethernet和PPP都是链路层技术,但事实上,并不一定要求本层协议一定要承载上一层的协议,虽然这看起来使得PPPoE有点奇怪。这样PPP协议就会占用8个字节,于是就有了很多SOHO路由器在PPPoE拨号时MTU只能填成最大1492(1500-8)了
4、那么1460是怎么来的呢?一般1460是指默认的TCP MSS,即TCP数据包单包最大携带数据量。该1460=1500-20-20. 其中的第一个20是IP报头,第二个是TCP报头
六、其它
UDP收包量 :70-100K/s
内存顺序读:4GB/s
Pthread_create:50-100K/s
Socket:100-500k/s
Shmat :400k/s
Memset 1K :1.5M/s
Gettimeofday:4000K/s
如果一条记录频繁被访问,就应该放到内存里,否则的话就应该待在硬盘上按需再访问,这个临界点是5分钟 (5分钟法则)