我的后端是一个运行在ubuntu Linux中的nodejs应用程序。当有来自客户端的请求时,它需要spawn
nodejs子进程。子过程通常需要不到20秒的时间来完成。如果有许多并发请求进入,则需要管理这些进程。我正在考虑将spawn
进程移动到docker容器中。这意味着将创建一个新的docker容器来运行流程,如果有来自客户端的请求。这样,我就可以使用kubernetes来管理这些docker容器。我不确定这是不是一个好的设计。是否将进程放入docker容器会导致任何性能问题。
我之所以考虑使用docker容器而不是spawn
是因为kubernetes
提供了管理这些容器的所有功能。例如,如果有太多的请求,自动缩放,限制docker容器的cpu和内存,调度器,监视等等。如果我使用spawn
我必须实现这些逻辑。
您可以轻松地测量开销:获取任何基本的docker映像(例如,Debian基映像)并运行
time bash -c true
time docker run debian bash -c true
(每次运行几次,忽略第一次运行。)
这将给你启动和清理成本。在实际运行时,可以忽略不计/没有进一步的开销。
问题内容: 您可以在几秒钟内用Dockerfile构建一个容器,那么为什么人们需要在Docker容器内安装虚拟环境? 就像虚拟机中的“虚拟机”? 问题答案: 我正在Docker中使用virtualenvs,我认为有以下几个原因: 您可能想将应用程序与系统的python软件包隔离 您可能想运行自定义版本的python,但仍保持系统软件包不变 您可能需要针对特定应用安装的软件包进行精细控制 您可能
问题内容: 我正在构建一个在docker容器中运行的nodejs应用… 这是我用来运行容器的命令… 在命令行上方执行,得到以下输出。 由于该应用将调用第三方api,因此请求模块是必需的。每次调用请求时,都会出现以下错误… 我知道也许是因为localhost条目,但是如何更改呢? 问题答案: 您是否将第三方api托管在localhost上的docker容器中?如果是,那么您需要确保第三方api do
为什么。NET 4.0中C#方法的及时编译顺序会影响它们的执行速度?例如,考虑两种等效的方法: 唯一的区别是引入了局部变量,这会影响生成的汇编代码和循环性能。为什么会这样,这本身就是一个问题。 可能更奇怪的是,在x86(而不是x64)上,调用方法的顺序对性能有大约20%的影响。调用如下方法。。。 ...单线测试速度更快。(使用x86版本配置编译,确保启用了“优化代码”设置,并从VS2010外部运行
我们的应用程序由与支持bean和无状态EJB服务交互的网页组成,但也有一个与无状态EJB服务交互的远程客户端。 许多服务查询数据库,然后根据当前用户/调用方筛选结果集(例如,用户有权仅查看某些记录类型);也就是说,它们使用编程安全性而不是声明安全性。 在Web端,我的直觉是将当前登录的用户存储在SessionBean中,但我希望无状态EJB服务根据当前登录的用户筛选结果集,以便筛选也适用于远程客户
如果我们在一台有两个处理器的机器上有两个正在运行的线程,我们调用
问题内容: 如果我将两个不同版本的jar文件放在类路径中,会发生什么? 例如: 保存在classpath中 会发生什么? 问题答案: 尽管我也建议不要这样做,但我仍然想尝试回答您的原始问题: Java具有类加载器层次结构,因此,如果两个JAR都处于层次结构的不同级别,则类加载器将定义其优先级。最受欢迎的示例是Web应用程序类加载器层次结构(例如Tomcat),其中应用程序类的优先级高于容器类的优先