我的快递服务器做了一项非常简单的工作 - 将请求网址保存到文件中(通过fs.appendFile)。
我认为它在没有使用pm2时工作正常,因为它只有一个进程,所以没有其他进程/线程同时保存同一个文件。
但是当使用pm2时,我不知道是否会发生两个进程同时写入同一个文件?感谢。
答案 0 :(得分:2)
在
pm2
模式下使用cluster
时,会发生请求路由 使用Round Robin
算法。这意味着群集master
接受了 所有传入的连接并将它们路由到子进程 (对一个子进程的一个请求)。
因此,一个请求将被路由到一个子进程,同一个请求将不会被另一个进程处理。
对于上述情况,当您收到来自两个不同客户的两个不同请求时,它们将由两个不同的进程处理。
只要你有一个逻辑来创建一个唯一的文件名,即使请求同时处理,你也不会遇到任何问题。
只有当您尝试使用相同文件名的两个不同进程编写文件时,才会出现问题。
如果您使用不同的文件名从不同的客户端编写不同的文件,则不会出现问题。
注意:由于来自一个客户端的请求将由一个进程处理,因此两个或多个进程将不处理相同的请求,并且不会两次写入相同的文件。
如果您使用相同的文件名从不同的客户端编写不同的文件,则会出现此问题。
希望你明白: - )
答案 1 :(得分:0)
是的,当多个进程同时写入/附加同一文件时,它可能会混乱。那么最好的方法是只使用一个进程来写文件,或者你必须同步它们