nuxt 框架是不是性能很差?怎么优化呢
发布于 5 天前 作者 hanzichi 1040 次浏览 来自 问答

项目使用了 nuxt 框架,但是 QA 反馈性能很差(通过压力测试)

我本地分别用了 next 和 nuxt 跑了压力测试,采用 helloworld 级别的最小仓库,next 的压测结果吞吐量是 nuxt 的五倍左右

我想问下在用 nuxt 的兄弟,nuxt 性能怎么样?怎么优化呢?

22 回复

试试 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)?

@hanzichi

1)比例问题,控制好首屏模块个数,其实还好。 2)对api做cache。对返回的结果进行精简,最小化,保证吐出到浏览器的内容足够小。

其他能优化的不多了。

@hanzichi

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

nuxt-hackernews:

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)
回到顶部