【发布时间】:2018-03-06 18:57:27
【问题描述】:
我有一个使用 Kubernetes 集群进行部署和 MySQL 后端的 Node/React 应用程序。我发现当同时访问相同的路由时,每个连续的请求都会变得相当慢,并且对于一些数据负载稍大的路由(例如,一页返回 330 个 MySQL 行),请求会导致 kubernetes pod 崩溃和请求超时。这会导致服务器错误并使网站无法使用。
请参见下面的 100 个请求(10 个并发)的 ab 测试结果:
Percentage of the requests served within a certain time (ms)
50% 711
66% 850
75% 1105
80% 1199
90% 1562
95% 1763
98% 1831
99% 2102
100% 2102 (longest request)
加载更多数据的页面上的类似请求:只有 10 个请求(10 个并发):
The timeout specified has expired (70007)
谁能建议豆荚崩溃的原因以及如何防止这种情况?老实说,我觉得 330 行数据并不多,即使有 10 个并发请求。
集群规格应该合适:
n1-standard-1 (1 vCPU, 3.75 GB memory)
Total cores
3 vCPUs
Total memory
11.25 GB
同样奇怪的是,我为应用程序的每个组件都有 3 个 pod;前端、网关和后端。只有前端 pod 崩溃了 - 我会考虑后端 pod 是否应该崩溃,因为它们是处理数据库调用的那些。
【问题讨论】:
-
也许你在 nodejs 上达到了 RAM 限制
标签: mysql node.js concurrency kubernetes