Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Nodejs性能优化_Node.js_Express_Redis_Connect_Node Redis - Fatal编程技术网

Node.js Nodejs性能优化

Node.js Nodejs性能优化,node.js,express,redis,connect,node-redis,Node.js,Express,Redis,Connect,Node Redis,我是性能优化新手,虽然我认识到nodejs可能不是最适合初学者的起点,但它是手头的任务 观察:简单的JSONAPI请求在一个无负载的分级服务器和中占用几百毫秒的顺序,而对于这个小场景可能是一个过份,您可能需要考虑剖析。我发现nodetime.com服务非常有用。传递–nouse\u idle\u notification标志将告诉V8忽略来自节点的空闲通知调用,这是请求V8立即运行GC的请求,因为节点进程当前处于空闲状态。由于Node对这些调用的攻击性很强(效率会导致白纸黑字),过多的GC可能会

我是性能优化新手,虽然我认识到nodejs可能不是最适合初学者的起点,但它是手头的任务


<>观察:简单的JSONAPI请求在一个无负载的分级服务器和

中占用几百毫秒的顺序,而对于这个小场景可能是一个过份,您可能需要考虑剖析。我发现nodetime.com服务非常有用。

传递
–nouse\u idle\u notification
标志将告诉V8忽略来自节点的空闲通知调用,这是请求V8立即运行GC的请求,因为节点进程当前处于空闲状态。由于Node对这些调用的攻击性很强(效率会导致白纸黑字),过多的GC可能会降低应用程序的速度。请注意,使用此标志不会禁用GC;GC只是运行得不那么频繁。在适当的情况下,此技术可以提高性能。

您如何初始化
req.user
?这里确实没有足够的信息来猜测您遇到了什么问题。请指定您的服务(节点、redis、mongo)的物理显示位置。提供实际执行的较大代码段。另外,在执行的脚本中添加console.log(new Date())通常很容易识别耗时的操作。@jibsales我应该提到我使用的是Express/PassportJS(和mongoose)。这是passport.deserializeUser:@igorpavlov你是在问redis/mongo/在app.js中出现的顺序吗/在点击exports.get_user之前,请求会遍历哪些其他中间件?我在nodetime上的/api/get_user上运行了一个事务配置文件,得到了12.9ms:。但chrome开发工具上的相同请求显示607ms:。由于nodetime只是测量node生成请求所需的时间,我是否应该假设差异是请求在开放互联网上传输所需的时间?是的,这是一个合理的假设。我不知道有关部署拓扑的详细信息。您的线路可能有延迟,或者您可能只是在dns解析上花费时间。此外,您可能需要测量丢弃前几个请求的连续请求流,由于加载时间的原因,这往往需要更长的时间。我发现nginx的limit_req指令限制性太强,导致了大部分延迟。谢谢
exports.get_user = function(req, res) {
  return res.json(req.user)
}