后台用express做web服务。有一个需求是需要将动态内容生成静态页面。也就是express读取所有的文章,然后将文章写成html。这个过程中,程序没有做任务限制。当生成1万篇文章的过程中。在访问一些需要express处理的动态功能,发现都在等待状态了。是不是这一个生成的任务,把cpu全占了?导致其他的业务都只能等待。那应该怎么解决这个问题呢?### 问题描述
后台用express做web服务。有一个需求是需要将动态内容生成静态页面。也就是express读取所有的文章,然后将文章写成html。这个过程中,程序没有做任务限制。当生成1万篇文章的过程中。在访问一些需要express处理的动态功能,发现都在等待状态了。是不是这一个生成的任务,把cpu全占了?导致其他的业务都只能等待。那应该怎么解决这个问题呢?### 问题描述
nodejs是单线程的,所以一个response挂住的话,所有的都需要等
可以使用eggjs,其本身就是多实例/线程的;或者pm2js来启动多个实例/线程
不过如果你开了8个实例,结果每一个都有一个巨型的response挂住了的话,那就只有等了
nodejs适合短快的处理,不适合一个response可能需要等很久的那种
3 回答2.6k 阅读✓ 已解决
1 回答900 阅读✓ 已解决
2 回答1.2k 阅读
1 回答845 阅读✓ 已解决
2 回答1.6k 阅读
2 回答589 阅读✓ 已解决
2 回答1k 阅读
这种操作建议单独开一个进程来跑,可以试下 child_process