提问者:小点点

为生产环境中的nodejs(kubernetes)启用--检查是个好主意吗?


我有一个在kubernetes正式生产环境中运行的nodejs pod。此外,在运行相同应用程序的同一集群中还有暂存和审查环境。我最近在dockerfile中的start命令中添加了--检查,该命令将部署到所有环境中。我的问题是,如果我在生产中也启用调试,它会影响性能或内存使用吗?这通常是一个好的做法吗?否则我需要为生产创建一个单独的dockerfile。


共3个答案

匿名用户

它会影响性能或内存使用吗?

如果只是启用了标志,两者可能都可以忽略不计,如果实际进行实时调试,里程可能会有所不同。

是好的做法吗

我会说不,它确实有安全隐患。虽然,这只有在您要设置公共IP时才会出现问题,但默认情况下只允许在localhost上进行调试。

我的建议是为prod创建一个单独的Dockerfile。

匿名用户

虽然不执行上述任何操作,但您始终可以通过向进程发送信号来启用调试器,而无需重新启动应用程序:

kill-usr1${PID}

匿名用户

您可以使用Rookout。这是一个平台,可让您在生产过程中调试代码,而无需停止运行时——它还支持库伯内特斯。

基本上,您可以通过安装其npm包来安装RookoutSDK:

npm install --save rookout

或者(如果您使用纱线)

yarn add rookout

然后,只需使用提供的令牌在代码中启动sdk:

const rookout = require('rookout');

rookout.start({
    token: 'YOUR_ROOKOUT_TOKEN'
});

然后只需重新部署您的应用程序,您就不必再次重新部署进行调试。您只需登录Rookout WebIDE,然后您就可以放置非中断断点,从代码中获取所需的任何数据。

此外,需要注意的是,使用Rookout对性能几乎没有影响。在性能方面,它与设置控制台. log语句几乎相同;几乎不明显。