gos*_*vka 11 javascript json node.js stringify
我的服务返回非常大的JSON对象的响应 - 大约60MB.经过一些分析后,我发现它几乎一直在进行JSON.stringify()调用,用于转换为字符串并将其作为响应发送.我尝试过stringify的自定义实现,它们甚至更慢.
这对我的服务来说是一个瓶颈.我希望能够每秒处理尽可能多的请求 - 目前1个请求需要700毫秒.
我的问题是:
1)我可以优化响应部分的发送吗?有没有比对字符串化和发送响应更有效的方法?
2)使用异步模块并JSON.stringify()在单独的线程中执行会改善整体请求数/秒(假设超过90%的时间花在该呼叫上)?
Jas*_*son 10
你有两个选择:
1)找到一个JSON模块,它允许您流式化stringify操作,并以块的形式处理它.我不知道这样的模块是否在那里,如果它不是你必须建立它.编辑:感谢Reinard Mavronicolas在评论中指出JSONStream.对于不同的用例,我实际上已经把它放在我的后面,以寻找类似的东西.
2)async不使用线程.您需要使用cluster或其他一些实际的线程模块将处理放入单独的线程中.需要注意的是,您仍在处理大量数据,使用线程获得带宽,但根据您的流量,您仍可能达到限制.
一年后,这个问题对第一个问题有了新的答案:yieldable-json lib。正如Gireesh Punathil(IBM印度)在本次演讲中所描述的那样,该库可以评估60MB的JSON,而不会阻塞node.js的事件循环,让您接受新请求以提高吞吐量。
对于第二个阶段,在实验阶段使用node.js 11,您可以使用worker线程来提高您的Web服务器吞吐量。
| 归档时间: |
|
| 查看次数: |
12991 次 |
| 最近记录: |