.net 单表一对多关系配置_程序员开发的系统到底有多快

7f00c888df8901b22ef28dfbcfb60a9c.png

编辑搜图

请点击输入图片描述

大家都知道。

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

但是

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

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

而不是仅凭感觉去确认

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

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

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

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

针对流量的可拓展。

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

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

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

而应该对硬件进行拓展。

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

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

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

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


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

通用标准

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

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

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

Mysql

单端口读:1000/s

单端口写:700/s

单表容量:5000万条

Redis

单端口读:40000/s

单端口写:40000/s

单端口内存容量: 32GB

KafKa

单机读:30000/s

单机写:5000/s

DB2

单机读峰值:20000/s

单机写峰值:20000/s

单表容量:1亿条数据


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

寄存器和内存

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

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

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

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

硬盘I/O

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

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

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

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

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

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

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

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

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

网络I/O

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

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

数据库

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

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

IDC

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

异地计方来回:30-100ms。

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

网络

网页加载为秒级别

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

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

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

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

组合计算和估算

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

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

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

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

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

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

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


主要的性能指标就这些。

当你设计系统时要注意。

开发功能时也要注意。

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

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

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

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

不同配置性能不同。

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

一切已实际为准。

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

祝大家的系统越来越快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值