我有一个在kubernetes正式生产环境中运行的nodejs pod。此外,在运行相同应用程序的同一集群中还有暂存和审查环境。我最近在dockerfile中的start命令中添加了--检查,该命令将部署到所有环境中。我的问题是,如果我在生产中也启用调试,它会影响性能或内存使用吗?这通常是一个好的做法吗?否则我需要为生产创建一个单独的dockerfile。
它会影响性能或内存使用吗?
如果只是启用了标志,两者可能都可以忽略不计,如果实际进行实时调试,里程可能会有所不同。
是好的做法吗
我会说不,它确实有安全隐患。虽然,这只有在您要设置公共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
语句几乎相同;几乎不明显。