我的服务器中安装了php
和nodejs
。我正在调用nodejs
代码,该代码通过node canvas
php
喜欢:
<?php
exec(node path/to/the/js/file);
?>
问题:
由于node canvas
,此执行的每个进程都会消耗 250 Mb 的内存。因此,如果我的服务器具有 8Gb 的内存,则只有 32 用户可以在任何给定的时间点使用该服务,并且如果数量存在,则存在服务器崩溃的风险用户超过。
这个问题是否有可扩展的解决方案?
更新由于我的业务需求,我必须使用Canvas
服务器端,所以我使用的是node canvas
,但它占用了大量内存问题
答案 0 :(得分:1)
您的问题是您为每个请求启动了一个新的node.js进程,这就是为什么内存占用空间如此巨大,并且不是为什么构建node.js。
但是node.js是为了在一个进程中处理大量不同的请求而构建的,使用它对您有利。
我建议你做的是只启动一个node.js进程,并找到另一种在PHP进程和node.js进程之间进行通信的方法。
有一种很多有不同的方法可以做到这一点,有些方法比其他方法更有效,有些方法比其他更难建。所有这些都有利有弊,但由于两者都是与Web相关的语言,因此您可以确定HTTP请求都支持。
所以你应该做的是一个基本的node.js / Express服务器,可能只有一个API点,它执行你已经完成的代码,然后返回结果。这很容易做到(特别是如果你使用JSON在它们之间进行通信),虽然我不了解PHP,但我很确定发送HTTP请求并解释答案很容易。
如果您准备深入了解node.js,您可以尝试套接字或MQ,这应该更高效。
这样,你只有一个node.js进程,它不应该在内存中增长并处理更多客户端,不必使用exec
,并且首先尝试使用Express。