Node.js 应用程序的分析

Posted

技术标签:

【中文标题】Node.js 应用程序的分析【英文标题】:Profiling for Node.js Application 【发布时间】:2020-02-04 14:11:56 【问题描述】:

我点击此链接 https://nodejs.org/uk/docs/guides/simple-profiling/,在我的应用 (Expressjs) 中分析特定端点。

端点将从s3 下载pdf,使用线程池(4 个worker_threads 的池)用数据填充pdf(我使用HummusJS 填充pdf),然后将填充的文件上传到s3 和以signedUrl 回复已填充的文件。

测试由apache benchmark完成:

ab -p req.json -T application/json -c 20 -n 2000 http://endpoint

profiling 的输出是这样的:

 [Bottom up (heavy) profile]:
  Note: percentage shows a share of a particular caller in the total
  amount of its parent calls.
  Callers occupying less than 1.0% are not shown.

   ticks parent  name
  287597   89.2%  epoll_pwait
 [Bottom up (heavy) profile]:
  Note: percentage shows a share of a particular caller in the total
  amount of its parent calls.
  Callers occupying less than 1.0% are not shown.

   ticks parent  name
  1515166   98.5%  epoll_wait

所以,我的问题是,epoll_waitepoll_pwait 是什么意思,因为它们几乎占用了程序占用的 CPU 时间的 100%?

【问题讨论】:

【参考方案1】:

见google.com/search?q=epoll_wait。

简而言之,线程正在等待某些东西(可能是网络?可能是另一个线程?)。

【讨论】:

以上是关于Node.js 应用程序的分析的主要内容,如果未能解决你的问题,请参考以下文章

如何推断 node.js 分析结果?

分析 TypeScript Node.js 应用程序

Node.js内存泄漏分析

Node.js性能分析神器Easy-Monitor

Node.js中的内存泄漏分析

内存分析和搜索内存泄漏[关闭]