我想为我的快递应用程序启用线程式存储,每分钟处理约100到300个API调用。我使用了continuation-local-storage(和我在Node 8.9.0上的cls-hooked),但是CPU峰值非常高(500x正常且没有级别)并且已经崩溃了服务器。端点主要进行CPU光同步计算(例如调用API,进行查找,很少进行I / O密集型任务)
有没有人有使用Express大规模运行csl的经验?
答案 0 :(得分:2)
最近,我在玩cls-rtracer,这是我的Express和Koa小型图书馆。该库只是建立在cls-hooked之上的轻量级中间件的集合。因此,基本上,我正在测试cls-hooked(和Async Hooks API的占用空间,因为我使用的是Node.js版本8)。
我实现了一个非常简单的Express应用程序,并在有无CLS的计算机上对其进行了测试。使用CLS的情况如下:
负载是由ab实用程序生成的。我当时使用的是Windows 10和Node.js 10,但也在具有Node.js 8的Ubuntu VM上进行了测试,并得到了类似的结果。
结果,在打开请求ID和CLS的情况下,我的RPS(每秒请求数)下降了约10-15%。至于CPU利用率,我发现这两种情况之间没有任何重大差异,例如突然的峰值。
我已经按照要点发布了我的测试应用:https://gist.github.com/puzpuzpuz/3c2a36ca0835906ad50dbd22c72df974
看起来像是迟来的回应,但将来可能会对某人有所帮助。这些场景应该非常接近实际应用。