关于Nodejs的IO异步操作以及eggjs处理耗时任务的疑问
在nodejs中IO操作是使用线程池进程异步操作的,那么假如我向nodejs请求读取一个大文件,是不是会持续占用线程导致降低服务器处理其他请求的能力。 在Eggjs中有什么机制来避免大文件访问造成服务器性能下降的办法吗
4 回复
- Stream
- 大文件你应该丢 OSS 去
我的理解是,读写文件不会阻塞node主进程,就是不会导致不让其他人进行访问。 但是服务器的资源是有限的,拿出一部分处理读写文件,那么其他服务的资源就会相对减少。
node.js读取文件本身就是异步的,单机的情况下的确会影响机器性能,所以专门搞个文件存储服务器?
问一个小白的问题: 假如单线程Node在运行的时候,上一个请求尚未处理完是不是下一个发来的请求就会一直处于未处理状态?扩展来看,就算使用了cluster集群,在单机上开启多个线程,倘若每个线程都正在处理我提到的耗时任务(比如读取视频文件,或者其他类似任务),是否会让网站处于半瘫痪状态?一般是怎么处理这种情况的呢,有什么好的解决办法或者OSS的替代办法吗?