首发于KCORES

树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试

本文看点:

  • 树莓派4B能跑满千兆吗?
  • 树莓派4B作为web服务器最大能达到多少QPS?

测试环境

被测对象当然是:

树莓派4B 4G, Ubuntu Server 18.04 .

想要测试性能, 测试平台的性能肯定要比被测对象的性能要高, 才能测出被测对象的最大性能. 所以这里测试平台是:

Lenovo ThinkStation C30 工作站 E5-2680v2 2.8GHz x2 总计20核心40线程, 64G内存, CentOS7 .

颇有这种感觉【手动滑稽】

网络性能测试

Pi3的以太网是妥妥到不了千兆了, 直接看图:

可以看到以太网接口是走 LAN9514 的, 这个IC集成了 USB2.0 HUB 和百兆以太网, 因此没办法提供千兆以太网.

而Pi4B 的以太网控制器是 BCM54213. 是可以提供千兆以太网的.

那么就来实际测试一下树莓派4B的实际网络性能.

测试使用 iperf 2.0.10. 使用 Pi4B 作为服务端, 双路 E5 的工作站作为客户端压测. 首先为了对应 Pi4B 的核心数量, 我们压测参数采用4线程, 60秒.

pi4b-as-iperf-server
workstation-as-iperf-client

934Mbits/sec, 差一丢丢, 基本"算"是千兆了.

我们再看下CPU使用情况:

pi4b-cpu-reading
workstation-cpu-reading

emmmm, 工作站波澜不惊, 但是树莓派的CPU使用是非常明显的, Load 达到了 0.71. 如果测试运行更长时间, 甚至Load会达到1.1以上. 这意味着跑满千兆流量, 光是系统IO就会消耗掉一个核心, 留给业务只剩3个核心了.
实际上为了业务平稳运行, 肯定要预留出一些CPU, 这样可用Load就更有限了.

WEB 性能测试

我们直接在树莓派4B安装apt下的nginx 1.14.0, 用原始配置, 不做任何改动.
然后在工作站上用wrk进行压测. 我们直接测试nginx默认的Welcome to nginx页面. 下面是测试结果:

可以看到, 连接数80左右就可以达到最大性能, 此时QPS在 30K左右. 此时Load已经达到了4以上. 再增加连接数也不会增加QPS(即处理能力了), 因为性能大概就是这样了. 如果连接数继续增加, 达到1280以上, 这时候就开始出现 Socket error了, 包括连接失败, 读取失败, 超时.

我们接下来尝试做一些简单的优化. 优化内容包括 worker_rlimit_nofile, worker_connections, multi_accept, open_file_cache, keepalive_timeout 等.

结果如下:

可以看到优化效果非常显著, QPS结果直接从30K上升到了40K. 但不出现 Socket error 的连接数仍然在 1280 左右. 证明系统极限在这里.

我们接下来弄一些真实负载试一下. 毕竟大家的服务器也不可能只有个helloWorld静态页面.

wordpress 性能测试

我们来测试真实场景, wordpress. 为了简便, 我直接用docker运行了 wordpress 和 MariaDB. 这个 wordpress 里面是个 Apache, 性能不会太好, 但主要瓶颈还是机器本身.

可以看到在并发量至160的区间, 服务延时不断增大, 最终达到了超过1500ms+ 的延时. 而 QPS 始终在 不到50. 也就是说, 这块树莓派4B, 弄个wordpress, 最多可以支持同时160个用户访问. 不过, 超过 160 并发后, 为啥 QPS 反而上升了呢? 答案在这里, 我们把500错误量和socker 错误量也一起绘制到一个表格里面:

可以看到, 超过160 并发, HTTP 500 错误瞬间爆发, 简单来讲, 就是 "扛不住挂了", 在小于160并发的时候, 访问这个树莓派4B上的网站, 意味着你可能会等1.5秒才能看到页面, 但大于160并发的时候, 你访问直接就看到了 HTTP 500. 而且是极大概率看到 500. 看看曲线就知道了. 黄色的 500 是那么的多, 访问看到的就是这样:

结论

所以, 最终结论就是:


树莓派的千兆网口绝对够用了, 大多数web应用都打不满这个千兆口 (当NAS用应该还是可以的).

树莓派运行带数据库的网站, 并发能承受也就 100+, QPS < 50. 如果运行个个人博客, 并发访问在160以下, 可以不用担心, 树莓派4B完全够用. 不如说对于绝大多数人都够用了. 50QPS的情况, 连续一小时就代表着18万的PV, 很多人的博客一年可能都没这么大访问量......

如果真的想用树莓派做服务器, 那么支持10K的并发, 需要多少块树莓派4B呢? 答案如图:

Load 达到了 150. 树莓派4B 是4核心, 我们直接简单计算: 150/4 = 37.5, 38块树莓派4B, 就可以支撑 10K 并发的网站了, 为此需要投入: 440*38 = 16720 CNY. 这么玩究竟值不值, 就仁者见仁智者见智了.

最后欢迎加入讨论群, 群里啥都讨论, 话题上到100T NAS不封顶, 下到PHP是不是最好的语言 【手动滑稽】

编辑于 10-16

文章被以下专栏收录