【发布时间】:2023-03-30 06:07:02
【问题描述】:
当流量有点高(30-40 个用户)时,我在使用 sinatra 瘦应用程序时遇到了一些奇怪的滞后问题。 这是一款使用长轮询的小游戏,因此与用户数量相比,http IO 可能会很高。
CPU 负载保持在较低水平,并且有大量可用内存。
以下是一些典型的延迟发生时的日志行:
1 - [17/Jul/2015:16:50:17 -0400] "POST /play?next=word HTTP/1.1" 200 1 0.0018
2 - [17/Jul/2015:16:50:17 -0400] "GET /update?_=1437166100579 HTTP/1.1" 200 304 15.0046
3 - [17/Jul/2015:16:50:17 -0400] "GET /update?_=1437166102348 HTTP/1.1" 200 286 15.0045
4 - [17/Jul/2015:16:50:17 -0400] "POST /accept_replay? HTTP/1.1" 200 - 0.0021
5 - [17/Jul/2015:16:50:18 -0400] "GET /core HTTP/1.1" 200 3719 0.0015
6 - [17/Jul/2015:16:50:18 -0400] "GET /join HTTP/1.1" 302 - 0.0640
7 - [17/Jul/2015:16:50:18 -0400] "GET /core HTTP/1.1" 200 3719 0.0024
8 - [17/Jul/2015:16:50:19 -0400] "POST /play?next=word HTTP/1.1" 200 1 0.0034
9 - [17/Jul/2015:16:50:19 -0400] "GET /update?_=1437166215907 HTTP/1.1" 200 248 10.0018
10- [17/Jul/2015:16:50:19 -0400] "GET /update?_=1437166222579 HTTP/1.1" 200 252 11.0029
11- [17/Jul/2015:16:50:31 -0400] "GET /core HTTP/1.1" 200 3719 0.0034
12- [17/Jul/2015:16:50:31 -0400] "POST /sentiment/bad? HTTP/1.1" 200 - 0.0024
13- [17/Jul/2015:16:50:31 -0400] "GET / HTTP/1.1" 200 4449 0.0086
14- [17/Jul/2015:16:50:31 -0400] "POST /decline_replay HTTP/1.1" 302 - 0.0020
在 [17/Jul/2015:16:50:31 -0400] 时还有 30 个更准确的时间
(get /update 是长轮询请求,因此最多可能需要 40 秒) 一切都在 10 点到 11 点之间停止了 12 秒。在此期间收到的所有请求似乎都在同时处理。
我以这种方式启动应用程序
thin start -p 80
这可能是一个薄问题吗? 我需要一个自定义的瘦配置文件吗? 我需要 nginx 吗?
欢迎任何指示...
编辑: 我在 ObectSpace [SystemStackError, 1][NoMemoryError, 1][IOError, 1] 中发现的错误
【问题讨论】: