我有以下问题。 使用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中的最大连接值之间应该是什么关系?如果我将连接池增加到更多的连接数,我的结果会更差。
有关如何扩展的任何建议?
谢谢!
答案 0 :(得分:1)
(这个数学不太正确,但它有点明确......)你不能有效地运行比从4 + 1 + 1“同时”连接中获得的更快。 (实际上,你可以,但不是300!)
典型的基准测试试图找出有多少“连接”(或其他)导致系统过度使用。那些难以阅读的截图表示每秒约有7个 是限制。
我也用“同时”这个词狡辩。唯一接近“同步”(在您的系统中)的是“同时”使用4个核心的能力。每个其他指标都涉及资源共享。根据你的说法,......
有两个有趣的指标:
尝试10个“同时”连接并报告回来。尝试7.尝试其他一些小数字。