项目使用了 nuxt 框架,但是 QA 反馈性能很差(通过压力测试)
我本地分别用了 next 和 nuxt 跑了压力测试,采用 helloworld 级别的最小仓库,next 的压测结果吞吐量是 nuxt 的五倍左右
我想问下在用 nuxt 的兄弟,nuxt 性能怎么样?怎么优化呢?
试试 https://github.com/ykfe/egg-react-ssr 这个。4核8g单机150以上
是这样的,一般用 nuxt ssr 只是给搜索引擎用。 用户通过DNS 解析到 CDN 节点,nuxt SPA。 爬虫通过DNS解析到渲染服务器,nuxt SSR
@i5ting 谢谢狼叔回复,目前的疑问是,nuxt 是否真的如我测试的性能这么差?还是我测试有误?如果确定后,再转其他方案
@zuohuadong 谢谢回复,所以 nuxt 真的如我测试的性能这么差吗?那如果这样,纯的 nuxt 应用是否很难应用于并发量高的场景,都需要做两套方案吗(爬虫 ssr,普通用户 spa)?
2018年见过vue ssr,很少突破50 qps的。今年没关注。
@i5ting 目前测试的是 nuxt 的 helloworld 代码,本地测试结果吞吐量比 next 差好多倍,是否能说明 vue ssr 确实不太行?
@hanzichi ssr 渲染也比较局限。某些组件不支持。 nuxt 减少了首屏页面的大小,通过 云存储和 CDN 实际算下来要比 ssr 快不少。
@zuohuadong >通过 云存储和 CDN 实际算下来要比 ssr 快不少 说的是 spa 实际比 ssr 快不少的意思吗?
我觉得可以参考一下,总的来说react的生态圈总是比vue繁荣一些,虽然我用的是vue… https://segmentfault.com/a/1190000019067086?utm_source=tuicool&utm_medium=referral
去年用过 nuxt 现在已经基本弃坑了,性能太差
@hanzichi 没看过nuxt源码,不过之前试了一下直接用vue提供的api来做ssr性能还可以,建议你可以自己用最简单方式直接用vue的api来做ssr压测一下。官方的benchmark的数据vuessr的性能是比react好一丢丢的
@hanzichi 不是~ SPA 首屏渲染还是要比 SSR 的慢。 只是综合下来,网络、缓存。
nuxt 慢好久了
用pm2起过多个端口给nuxt,并发高的时候有端口直接被kill
即使用了组件缓存,优化效果也并不理想
目前正在用nuxt,4c4g 单机 200TPS,跟原来的 java web 持平,没跟 next 对比过 ~ 生态确实不理想,加上会报一些迷之bug
@mosaic101 tps是每秒事务个数吧?
发一下监控截图看看。如果是200qps还是很不错的。
@i5ting 200qps 就算不错了嘛?我加了页面缓存,然后qps勉强 300 多。。。正常嘛?
@i5ting 只有一个 request,压得一个首屏页面(SEO+首屏数据)~ 截图没了,下次再压一次看看
@hanzichi 建议你跑一个 nuxt-hackernews 试试,这个是官方极致优化过的,看看能快点不
另外注意下是跑在dev模式下还是production模式下?要用 npm run build && npm run start
来测试而不是 npm run dev
我在本机用两个框架跑helloworld实测数据给你参考下: nuxt:
Server Software:
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /
Document Length: 1395 bytes
Concurrency Level: 200
Time taken for tests: 7.438 seconds
Complete requests: 3000
Failed requests: 0
Total transferred: 4851000 bytes
HTML transferred: 4185000 bytes
Requests per second: 403.32 [#/sec] (mean)
Time per request: 495.885 [ms] (mean)
Time per request: 2.479 [ms] (mean, across all concurrent requests)
Transfer rate: 636.88 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 1
Processing: 94 477 70.1 470 697
Waiting: 43 442 66.9 441 609
Total: 94 477 70.1 470 697
Server Software:
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /
Document Length: 0 bytes
Concurrency Level: 200
Time taken for tests: 3.679 seconds
Complete requests: 3000
Failed requests: 0
Non-2xx responses: 3000
Total transferred: 285000 bytes
HTML transferred: 0 bytes
Requests per second: 815.40 [#/sec] (mean)
Time per request: 245.280 [ms] (mean)
Time per request: 1.226 [ms] (mean, across all concurrent requests)
Transfer rate: 75.65 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 1
Processing: 105 233 37.3 235 324
Waiting: 35 210 35.8 213 294
Total: 105 233 37.3 235 324
Percentage of the requests served within a certain time (ms)
50% 235
66% 248
75% 257
80% 262
90% 282
95% 290
98% 304
99% 311
100% 324 (longest request)
next:
Server Software:
Server Hostname: 127.0.0.1
Server Port: 3000
Document Path: /
Document Length: 1383 bytes
Concurrency Level: 200
Time taken for tests: 4.105 seconds
Complete requests: 3000
Failed requests: 0
Total transferred: 4947000 bytes
HTML transferred: 4149000 bytes
Requests per second: 730.73 [#/sec] (mean)
Time per request: 273.699 [ms] (mean)
Time per request: 1.368 [ms] (mean, across all concurrent requests)
Transfer rate: 1176.73 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.3 0 1
Processing: 65 266 32.2 264 385
Waiting: 7 249 31.8 245 373
Total: 66 266 32.2 265 385
Percentage of the requests served within a certain time (ms)
50% 265
66% 271
75% 277
80% 288
90% 310
95% 322
98% 343
99% 363
100% 385 (longest request)