性能常识 各位大佬,我又碰到知识盲区啦~~~~!!!!

啊神 · 2022年05月09日 · 最后由 啊神 回复于 2022年05月12日 · 6532 次阅读

1、公司网络拓扑图是这样的,1 个 nginx 服务器,2 个应用服务器,2 个数据库服务器。nginx 主要做负载均衡,把请求分发到 2 个应用服务器上。现在甲方大佬抛出需求说要测试出:多大的带宽才能支持 500 用户的一个带宽。

2、我目前的思路是监控对应服务器的速率来进行算出带宽,即假设:500 用户在稳定性场景中在 NGINX 服务器上产生了速率为 50000KB/S 的发送速率,那么我就换算为 “带宽=速率 *8,即 50000/1024*8≈390.8MB/S” 进而得出甲方想要的结果~

3、我的问题就是:“我现在不清楚我到底要不要监控数据库服务器的速率!” 还是只需监控 NGINX 的负载速率就可以了,因为 NGINX 对应的就是直接的前端上传速率。 有大佬解答一下吗?

共收到 7 条回复 时间 点赞

是不是应该都监控上,然后找到瓶颈是 nginx 还是数据库,再换算答案?

王稀饭 回复

😂 ,这方面知识比较薄弱,不知道是合起来算,还是说要找到对应的服务器瓶颈再进行换算。

你这个带宽,是公网带宽还是内网带宽,也就是你这个 nginx 是对内服务还是对公网服务。
如果是对公网提供服务,一般都是应用服务器连数据库,走内部网络。就不需要监控数据库。
根据你的带宽计算值,我觉得你的是个内部 nginx 对内提供服务,所以数据库的地址如果跟应用服务器、nginx 在一个网络里,就需要监控。主要还是看数据库和应用服务器通信是否使用了同一个网络。
人菜,不保证没有误导。。

一般会讨论带宽,说的是公网出网带宽,即数据从你的服务出来,传递到用户的这个部分,因为这个部分机房/云厂商是要找运营商花钱买的。同机房内部服务间交互,不属于公网,一般都默认直接给万兆带宽(反正不额外花钱)。

可以参考腾讯云的: https://cloud.tencent.com/document/product/213/12523

另外,甲方给的需求从性能需求角度,还是不够清晰,建议有几个点你需要确认下:

1、500 用户是指 500 人同时在线,还是 500 个请求同时进来(TPS 500)?如果只是同时在线,那还得做转换,在线状态本身不消耗带宽(除非有心跳包啥的)
2、这里说的带宽,是不是云厂商给的带宽?
3、业务场景里,请求大资源(如图片、音视频、下载文件等)的场景多么?一般纯文字都不怎么占用带宽,都是大文件才会比较占用,所以评估带宽的大头是评估这部分资源的带宽消耗。

至于要不要监控数据库服务器的速率,取决于和数据库服务器交互的部分是否也属于甲方说的带宽评估范围内。

PS:第二点里你换算后的单位不大对。要乘以 8 这个是因为 1 byte = 8 bit ,所以 1MB/s = 8MBps(Bps = bit/s),你这里换算后单位应该是 390.8 MBps 。

陈恒捷 回复

1、500 用户指的就是 500 线程数,不是在线人数或者 TPS 是 500, 甲方想要的就是 500 个线程数并发一段时间内,在这段时间产生的平均带宽是多少。
2、服务器不放在云(例如:阿里云)上也是云厂商的带宽吗?服务器放在内网,然后是通过 internet(网线,宽带?反正服务器是在内网)进行接收发送数据。
3、有道理啊,那按这个业务场景,我是不是考虑压的是前端页面 + 后台接口产生的流量情况?(因为后台的接口全是返回的是字符串数据格式)
按第三点的场景来说,数据库服务器的数据给到应用服务器是内网上产生的带宽,而应用服务器产生的数据是给到 nginx 服务器,也是内网产生的带宽...,只有 nginx 发送给客户端的数据是要经过外网的一个传输,是不是可以认为 nginx 服务器的产生的带宽就是甲方需要的带宽呢~
PS 太细节了,带宽的基本单位是 b(比特)
网速(速率)的基本单位是 B(字节)
1B=8b(1 字节=8 比特)
现在我有 50000KB/S,即带宽为(50000/1024)MB/S * 8= 390M b/s

1、大部分场景下,500 用户!=500 线程数,因为真实的用户并不是像压测工具那样,一个接着一个发请求过来的。可以看看这篇文章:https://developer.aliyun.com/article/709950

2、服务器不放云上,用的就不是云厂商带宽。不过你这段话没看懂,那 nginx 到甲方走的是内网还是公网?

3、要不要压前端页面,取决于你前端页面是不是也走得这个链路给到甲方的,不过大部分情况下前端浏览器自己会缓存资源(js、css 等),所以前端资源除了首次加载外,其他大部分时间不怎么消耗带宽,一般不用特别去评估。
另外,既然用的不是云厂商,那你问清楚甲方需要配置的是出口带宽还是入口带宽,还是两个都要。nginx 发给客户端的只是出口带宽,如果你的业务上传类操作占比比较多,入口带宽可能也要考虑下。

4、PS 部分,你的换算本身没错,只是你的单位写错了,你正文的单位转换后写的是 300MB/s ,这里的 B 看起来是字节,而非比特。

1、说点真实的一些事情吧,其实我们这些测试虽然深入不了这个性能测试,但是还是知道工具的线程数和真实的并发不能相等。真实情况往往是测试人员对接的是甲方的一些非技术人员,他们也不会理线程数是不是就是并发数~,实际情况就是很多人都是为了出一份报告给到领导或者需要这样一份报告,但是他们又不会很专业的来进行对性能测试深入。大概就是我们按他们的要求和想法进行一次 “性能测试”,给出的结果能让他们认为是正确的就行了。
2、其实这个项目是这样的,我们的服务器都是在内网,然后这个系统是一个 APP,客户端通过外网访问,我们就利用 nginx 做一个代理,客户端外网访问--》我们公司外网地址--》nginx--》--》应用服务器
3、一般都是入口带宽,上传类操作基本为 0 呢
PS:其实自己也想做得更专业~但现实是甲方的人员也只是想糊弄过去让项目能正式上线。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册