當交通有點高(30-40用戶)時,我有一個奇怪的滯後問題與一個sinatra薄應用程序。 這是一個使用長輪詢的小遊戲,所以http IO可以比用戶數量高。與sinatra薄應用遲鈍
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
和30更準確地在[17 /月/ 2015:16:50:31 -0400]
(獲取/更新是longpolling請求,因此可能需要長達40秒) Everythings在10到11之間停止12秒。在此期間收到的所有請求似乎都是同時處理的。
我開始這樣
thin start -p 80
能不能薄問題的應用程序? 我需要自定義瘦配置文件嗎? 我需要nginx嗎?
任何指示,歡迎...
編輯: 錯誤,我在ObectSpace [SystemStackError,1] [NoMemoryError,1]找到[IO錯誤,1]
謝謝你的回答。我做了一些壓力測試,100個代理隨機播放......並且一切都很好(在小於prod服務器的VM上)。但這些代理不使用長輪詢請求。所以這似乎是問題所在。感謝鏈接,我認爲這將是有用的。 – jpt