2015-07-20 50 views
0

我使用Glassfish v3來提供大文件(glassfish也用於業務邏輯 - 僅供參考)我知道Glassfish採用了Grizzily Web服務器。我在同步模式下使用灰熊隊。意思是,如果有100個線程只允許100次下載。其餘的請求將排隊。但是,我想爲由於缺少工作線程(100 max)而無法提供服務的HTTP客戶端設置503。確定Web服務器上是否有HTTP資源可用

問題

  1. 如果該請求被允許,甚至到排隊時沒有工作線程可用
  2. 我怎麼知道什麼時候工作線程被耗盡?手動計數器?
  3. 在代碼(過濾器,servlet?)中應該在哪裏設置錯誤代碼以及重試頭數據?

回答

1

通常這些是容器特定的功能。您可以使用屬性server.http-service.connection-pool.max-pending-count = 100配置請求隊列大小。超過100的所有請求都將被拒絕。

欲瞭解更多信息,請瀏覽:

Glassfish tuning keepalive requests

+0

Thnx,我正在尋找類似的線路。此外,拒絕時,我的要求是發送HTTP 503以及設置HTTP「Retry-After」標題。你認爲在servlet過濾器中這樣做嗎? –

0

Servlet 3.0規範引入了對異步請求處理的支持,您可以利用它。 您可以引入基於應用程序的線程池,並在那裏處理長時間的任務,這樣您就可以完全控制線程池大小,並在線程池達到一定限制時採取適當的操作。

+0

異步處理正值的內存成本,不是它。順便說一句,我覺得你的解決方案基於應用程序的線程池很有趣該解決方案是否適用於同步處理。你能解釋一下嗎? –

相關問題