程序员开发的系统到底有多快

北京治疗白癜风哪家医院专业 http://m.39.net/pf/bdfyy/bjzkbdfyy/

大家都知道。

在设计一个系统时,最重要的非功能质量就是高性能。

但是

你设计一个低性能的系统时也要考虑硬件和中间件的具体情况吧。

有多少流量,需要多少硬件,都需要在开发前认真考虑

而不是仅凭感觉去确认

硬件少了,造成业务流量瓶颈

硬件多了,造成运算的冗余。

下面的数据能够帮助大家更好的在系统设计,功能开发中有效对性能进行评估。

首先明确的是,这个系统一定要可拓展。

针对流量的可拓展。

假设当前设计的业务系统当前用户日访问量在w,

当时突然有一天用户量激增到0w

这时候代码改动应该是极少的

而应该对硬件进行拓展。

在面临这种情况下,了解硬件的具体性能至关重要。

以下标准使用PCX86桌面机器的经验。

不代表线上生产机器的数据,仅供参考。

下面分为应用层和系统层分别介绍

常用应用层性能指标参考标准

通用标准

容量按照峰值的5倍冗余计算

第三方查询接口吞吐量为/s

单条数据库记录占用大约1kb的空间(少整些大字段)

Mysql

单端口读:0/s

单端口写:/s

单表容量:万条

Redis

单端口读:/s

单端口写:/s

单端口内存容量:32GB

KafKa

单机读:/s

单机写:/s

DB2

单机读峰值:/s

单机写峰值:/s

单表容量:1亿条数据

常用的系统层性能指标参考标准

寄存器和内存

寄存器、L2、L3、内存、分支预测失败、互斥量加锁和解锁等耗时为纳秒级别。

内存随机读取可达30万次/s,顺序读取可达万次/s。

内存每秒可以读取GB基本的数据。

读取内存中1MB的数据为ns,为亚毫秒级。

硬盘I/O

普通的SATA机械硬盘IOPS能达到次/s。

普通的SATA机械硬盘顺序读取数据可达M/s。

普通的SATA机械硬盘随机读取数据可达2M/s。

普通的SATA机械硬盘旋转半圈需要3ms。

普通的SATA机械硬盘寻道需要3ms。

普通的SATA机械硬盘在已经寻道后(找到了要读取的磁道,也找到了要读取的扇区),开始读取数据,读取一次数据真正的耗时为2ms。

FusionIO卡(一种高的SSD硬盘套件)可达百万级别的IOPS。

高端机器如IBM,华为等服务器配上高端的存储设备,可以达到每秒GB级别的数据读取,相当于普通内存的读取速度。

固态硬盘访问延迟:0.1~0.2ms,为亚毫秒级别,和内存速度差不多。

网络I/O

常见的千兆网卡的传输速度为0Mbit/s,即Mbit/s。

千兆网卡读取1MB数据:10ms。

数据库

读写数据库中的一条记录在毫秒级别,短则几毫秒,多则几百毫秒,大于ms一般认为超时。

Mysql在4核心,GB内存的机器配置中性价比最好,继续垂直拓展由于体系结构的限制,成本开始增加,提升的性能开始减少,性价比开始降低。

IDC

同一计方网络来回:0.5ms。

异地计方来回:30-ms。

同一机房的RPC服务调用为几个毫秒,有的为几十毫秒或者几百毫秒,一般设置ms以上为超时。

网络

网页加载为秒级别

UV:每日一共有多少用户来访,用CookieSession跟踪。

独立IP访问:每日有多少独立IP来访,同一局域网可看到同一个IP。

PV:每日单独用户的所有页面访问量。如果每日UV为万,那么每秒的平均在线人数为000/24/60/60=人,还要知道这一秒内每个用户都在做什么,如果每秒内都在做一次查询操作,那么需要有一个能承受/s吞吐量的机器。

某社交媒体平台每秒的写入量上万,每秒请求量上百万,每天登录的用户上亿,每天产生的数据量上千亿。

组合计算和估算

普通的SATA机器硬盘一次随机读取的时间为:3ms(磁盘旋转)+3ms(寻道)+2ms(存储的数据延迟)=8ms。

普通的SATA机器硬盘每秒随机读取:0ms/8ms=次IOPS。

IOPS代表磁盘每秒可随机寻址多少次,随机读取速度取决于数据是如何存放的,如果数据按块存放,每块4kb,每秒读取10块,那么随机读取速度为10*4KB*次/s=5M/s。

一次读取内存的时间:0ms/30万次/s=3ns

CPU速度=10倍*内存速度=倍*I/O速度

顺序读取普通SATA机械硬盘1MB的数据:20ms

请记住:2的10次幂=1KB,2的20次幂=1MB,2的30次幂=1GB,2的32次幂=4GB

主要的性能指标就这些。

当你设计系统时要注意。

开发功能时也要注意。

进行框架设计时更要注意。

如何在满足需求于硬件成本上要做好均衡。

以上只是告诉大家一个大概的性能评估的方向

不要照搬,不要照搬,不要照搬

不同配置性能不同。

中间件不同配置性能不同。

一切已实际为准。

以及上面未提到的RabbitMq的速度,ES的速度,MonogoDB的速度,都需要结合具体硬件与应用配置来进行确认。

祝大家的系统越来越快。




转载请注明:http://www.aierlanlan.com/rzdk/4873.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了