天天看点

树莓派 4b 可执行文件 无法双击运行_树莓派的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 .

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

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

网络性能测试

Pi3

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

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

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

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

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

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

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

pi4b-as-iperf-server

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

workstation-as-iperf-client

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

我们再看下CPU使用情况:

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

pi4b-cpu-reading

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

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页面. 下面是测试结果:

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...
树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

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

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

结果如下:

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...
树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

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

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

wordpress 性能测试

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

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...
树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

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

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

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

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

结论

所以, 最终结论就是:

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

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

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

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

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

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

树莓派 4b 可执行文件 无法双击运行_树莓派的100种玩法 0 - 树莓派4B能当作web服务器吗? - 树莓派4B网络性能测试...

继续阅读