【发布时间】:2018-04-05 21:14:47
【问题描述】:
我有以下问题。 使用 REST,我通过 NodeJS Express 应用程序从 MySql 数据库获取二进制内容 (BLOB)。 一切正常,但我在扩展解决方案时遇到问题。
我将 NodeJS 实例的数量增加到 3 个:它们运行端口 4000,4001,4002。 在同一台机器上,我安装并配置了 Nginx,以在我的 3 个实例之间进行负载平衡。 我正在使用 Apache Bench 进行一些性能测试。 请看附图。
假设我有一个虚拟 GET REST 进入数据库,读取 blob(大小约为 600KB)并将其返回(全部为 http),我将同时进行 300 次调用。我原以为使用 nginx 分发请求会使其更快,但事实并非如此。
为什么会这样? 我假设它与MySql有关? 我的 NodeJs 应用程序正在使用一个限制设置为 100 个连接的连接池。这个值和Mysql中的最大连接值应该是什么关系?如果我将连接池增加到更多的连接数,我会得到更糟糕的结果。
关于如何扩展的任何建议?
谢谢!
【问题讨论】:
-
这台机器有多少 CPU 内核?你在同一个机器上运行 MySQL 吗?
-
i7-6700, 4 cores : 此服务器托管 nodeJS 应用程序 (3) + nginx。 MySQL 服务器在不同的盒子上。
-
然而,我能够改进查询 - 现在我能够看到一些改进。大约 600 个请求在大约 90 秒内完成(直接调用一个到 NodeJs)。如果我通过 nginx(带有 3 个 NodeJs 应用程序),大约 600 个请求在大约 60 秒内完成。所以,它看起来更好。
标签: mysql node.js performance nginx performance-testing