- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试让 OpenShift 的 HAProxy 扩展与任何 NodeJS Express 4 应用程序一起使用(它本质上是一个 REST API),但我运气不佳。
我正在使用 loader.io 的压力测试工具,每分钟只有 100 个用户(从 0 开始上升),因为我确信至少 NodeJS/Express 应该能够处理这个问题。现在,这确实会在 60 秒内生成大约 10-20k 个请求,但仍然如此。
请求开始冲击服务器后会发生什么,我可以看到 CPU 上升,内存保持相当稳定,HAProxy 的日志文件让我知道它即将扩展。
从来没有。 HAProxy 在扩展之前崩溃,然后我失去了与 OpenShift 主机的 SSH 连接。不过过了一段时间它就会回来。
有一次我确实看到它达到了默认的 128 个连接限制,然后尝试启动另一个齿轮,但由于请求不断传入,我猜它无法处理它?</p >
起初我以为这是由于使用了小齿轮,因为我在“top”运行,发现 CPU 负载激增,最终断开连接。
我删除了该应用程序并切换到small.highcpu gears(每小时收费)。
当它应该扩展时(并发用户少于 100 个)仍然崩溃。
small.highcpu gear 确实做了一些不同的事情,因为它重新启动后,它添加了一个新的 gear,但它不会缩小(即使所有流量都停止了),所以我必须手动缩小
如果我保持第二档并尝试在 1 分钟内再次对 100 个用户进行压力测试,HAProxy 仍然会下降(内存使用和 CPU 似乎没问题),并且不久之后我就会失去 SSH 连接。而且,这一次它不会自己出现。我还在我的 NodeJS 应用程序中收到以下错误:
{ [Error: socket hang up] code: 'ECONNRESET' }
{ [Error: socket hang up] code: 'ECONNRESET', sslError: undefined }
如果我在此之后手动重新启动 HAProxy(我有点必须这样做,因为它没有出现),我可以看到本地齿轮已关闭,而第二个齿轮已启动,这意味着我的 NodeJS 应用程序在第一个齿轮上崩溃了,但仍保持在线状态。
这真的是有意的行为吗?在处理 NodeJS 和 HAProxy 时我应该采取不同的做法吗?
如果我什至无法每分钟处理 100 个用户,我真的无法证明为这样的服务付费是合理的,因为我确信我最终会达到远远超过 100 个用户的峰值。
更新:这是一个 loader.io 图表/报告,它显示了 HAProxy 何时放弃: http://ldr.io/1tV2iwj
更新2:我尝试使用 Blitz 而不是 loader.io,只是为了确定 HAProxy 何时变得疯狂。 Blitz 最终命中 12,000 次,错误 26,000 次,超时 4,000 次。
此外,HAProxy 宕机了,而且似乎永远不会恢复。这次我决定等待,几分钟后,本地设备确实恢复了。不过,它并没有带来任何额外的装备。
这也是 Blitz 测试发生时 HAProxy 告诉我的内容(在它崩溃并且我断开连接之前):
==> app-root/logs/haproxy_ctld.log <==
I, [2014-10-13T07:14:48.857616 #74934] INFO -- : add-gear - capacity: 143.75% gear_count: 1 sessions: 23 up_thresh: 90.0%
==> app-root/logs/haproxy.log <==
[WARNING] 285/071506 (74918) : Server express/local-gear is DOWN, reason: Layer7 timeout, check duration: 10002ms. 0 active and 0 backup servers left. 128 sessions active, 0 requeued, 0 remaining in queue.
[ALERT] 285/071506 (74918) : proxy 'express' has no server available!
[WARNING] 285/071511 (74918) : Server express/local-gear is DOWN for maintenance.
更新 3:再次尝试使用 Blitz,这次 HAProxy/NodeJS 没有恢复,而是卡在以下行上(我仍然可以通过 SSH 连接):
DEBUG: Sending SIGTERM to child...
这里没有太多的模式,除了 HAProxy 没有做它应该做的事情:扩展。我相当有信心这不是我的 NodeJS 应用程序的问题,因为它没有报告任何错误(到日志文件或 New Relic)。
最佳答案
您的设备内存不足,因此您的所有进程都将被终止。 (这就是为什么你也会被踢出你的 ssh session 。)当发生这种情况时,它可能会使 haproxy 配置处于错误状态,如果它在重新启动时没有自动修复,我会认为这是一个错误.
关于node.js - OpenShift HAProxy 扩展不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26338092/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!