TPS/QPS M 吞吐 延时(注意这个和 QPS 不一定 * 核数 /s,还有 IO 时间等等待时间)
nginx
作为代理。文件 1k 情况 24 核,0.1ms. 50 万 pqs.500m/ s 吞吐
http://chenlinux.com/2013/02/…
作为反向代理
proxy_keepalive 的时候 请求 1k。30 万 qps。500M。cpu40%
非 keepalive 时 并发 2400. 就满了 40ms 延时
kafka
基本可以说延时 2ms。单机 1k 大小 十万级 TPS。多线程生产和消费更多。kafka 线程不宜过多。rocketmq 稳定(100 8 万和 1008000 的差别)。
对于这些测试,我有六台机器,每台都有以下规格
具有六个内核的 Intel Xeon 2.5 GHz 处理器
六个 7200 RPM SATA 驱动器
32GB 的 RAM
1Gb 以太网
Kafka 集群设置在三台机器上。六个驱动器直接安装,没有 RAID(JBOD 样式)。剩余的三台机器我用于 Zookeeper 并用于生成负载。
https://engineering.linkedin….
生产者
单线程 3x 异步 100B 时 80 万 pqs.80m/s 1K 时 10 万 qps,100m/s
同步单副本 40 万。40m
3 线程 200 万。200m
小字节更难处理(100B)
单一消费者
每秒 940,521 条记录
(89.7 MB / 秒)
三个消费者
每秒 2,615,968 条记录
(249.5 MB / 秒)
端到端延迟(副本复制)
2 毫秒(中位数)
3 毫秒(第 99 百分位数)
14 毫秒(99.9 百分位数)
我们已经谈了很多吞吐量,但是消息传递的延迟是多少?也就是说,我们发送的消息需要多长时间才能传递给消费者?对于此测试,我们将创建生产者和消费者,并重复计算生产者将消息发送到 kafka 集群然后由我们的消费者接收所需的时间。
请注意,Kafka 仅在完全同步的副本集确认消息时才向消费者发出消息。因此,无论我们使用同步还是异步复制,此测试都会给出相同的结果,因为该设置仅影响对生产者的确认。
文件
以下均为 1M
内存 顺序 0.25ms. 非顺序 1ms 5G/S 随机比 SSD 块 20 倍 顺序 5 倍
SSD 顺序 1ms. 非顺序 30ms. 最快 1G/S。平时单词少量可以说 0.1ms 了。数据小会更快。
普通磁盘 顺序读 30ms. 一次寻道 10ms。最快应该是 10ms,无论大小. 目前是 3ms
同城跨机房网络延时:5ms
同机房网络延时:0.5ms
跨城北京到广州:30ms
mysql 慢请求设置:100ms。正常单主键 0.5ms。带复杂语句 50ms
主从延时:1ms。不超过 10ms
二级库延时:10ms
redis 慢查询。按照万 / s 无睡眠,猜测在 0.1ms 以下
mysql 写入千条 /s,读万应该没问题。redis 写入 万条 /s 7M/s(k+v 700bytes,双核) 读是写入的 1.4 倍 mem 3gb 2 核。这两个网上搜的,不保证正确,就看个大概吧。
SSD 上 rocksdb 随机和顺序的性能差不多,写要比读性能稍好。随机读写 1.7 万条 /s 14M/s(32 核)。batch_write/read 下 SSD 单线程会好 8 倍。普通 write 只快 1.2 倍。