我是node.js的新手,仍然试图理解它背后的哲学。据我所知,node.js只在一个进程中运行,而不是php,它为每个请求打开一个进程\线程。尽管你可以说节点对于I/O来说是“非阻塞”的,但它阻塞了请求(由于每个新请求都没有新的线程,所以请求堆积起来),理论上如果你写了一个node.js应用程序对于遇到麻烦的每个请求都不能很快处理。Node.js非阻塞性质
我的问题是这样的 - 我如何判断某个请求的处理时间是否过长,以至于它会阻止所有其他请求太长而妨碍我的应用的性能?
我知道服务器上的所有“重”操作(db查询,文件系统搜索)都是通过回调完成的,因此无法阻止节点。但是,如果由服务器同步完成的处理请求的所有其他操作只需要很长时间?
例如,服务器需要写很多html到响应中。然后会发生什么?
节点程序员如何知道他是否对某个请求做了太多的事情(以阻塞的方式),它是经验,直觉还是有明确的指导方法?
我对Node.js也很新,但我认为你应该对所有操作使用异步回调。您不应该在Node.js服务器上进行任何同步操作。 – Bardo
假设你的node.js写了一个html文件 - long.html,它有很多很多的行,你这样做的方式(尽我所知)是通过将请求路由到一些处理器,最终必须执行一些处理比如:response.write(“
......所以就我所见,你在某些时候不能这样做,至少据我所知 –你的处理程序要做的是返回将HTML传递给一个回调函数,这些回调函数将把这个HTML文件发布到客户端,但是不会从你的服务器代码中提取出来。 – Bardo