1

我已经安装在我phpnodejs服务器中。我正在调用nodejs使用node canvas通过的代码php

喜欢:

<?php 
    exec(node path/to/the/js/file);
?>

问题:

由于node canvas. _ _ 因此,如果我的服务器有大约8Gb的内存,那么在任何给定时间点只有32 个用户可以使用该服务,并且如果用户数量超过,服务器也有崩溃的风险。

这个问题有任何可扩展的解决方案吗?

更新由于我的业务需求,我必须使用Canvas服务器端,所以我正在使用node canvas,但它大量消耗内存,这是一个巨大的问题。

4

1 回答 1

1

您的问题是您为每个请求启动了一个新的 node.js 进程,这就是为什么内存占用如此之大,而不是 node.js 的构建目的。
但是 node.js 是为了在一个进程中处理许多不同的请求而构建的,利用它对你有利。

我建议你做的是只启动一个 node.js 进程,并找到另一种方式在你的 PHP 进程和 node.js 进程之间进行通信。

很多不同的方法可以做到这一点,有些比其他的更高效,有些比其他的更难构建。各有利弊,但由于两者都是与网络相关的语言,因此您可以确定两者都支持 HTTP 请求。

所以你应该做的是一个基本的 node.js/Express 服务器,可能只有一个 API 点,它执行你已经做的代码,并返回结果。这很容易做到(特别是如果您使用 JSON 在它们之间进行通信),虽然我不了解 PHP,但我很确定发送 HTTP 请求并解释答案很容易。

如果您准备好深入研究 node.js,您可以尝试使用套接字或 MQ,它们应该会更高效。

这样,您只有一个 node.js 进程,它不应该在内存中增长并处理更多的客户端,不必使用exec,并且第一次尝试使用 Express。

于 2017-04-03T12:36:46.583 回答