簡體   English   中英

Rails應用程序連接池大小,避免最大池大小問題

[英]Rails app connection pool size, avoiding max pool size issues

我正在運行JRuby on Rails應用程序。 我在日志中隨機看到了很多內容:

The max pool size is currently 5; consider increasing it

我知道我可以增加配置中的最大池大小來解決這個問題。 我想解決的問題是要了解最佳數量應該是多少。 我試圖避免連接的爭用問題。 顯然將這個數字設置為令人討厭的大小也無濟於事。

是否有一般協議可以了解您的應用程序最佳池大小設置?

這里開始

線程池的最佳大小取決於可用處理器的數量以及工作隊列上任務的性質。 在用於工作隊列的N處理器系統上,它將保存完全由計算限制的任務,通常使用N或N + 1個線程的線程池實現最大CPU利用率。

對於可能等待I / O完成的任務 - 例如,從套接字讀取HTTP請求的任務 - 您將希望將池大小增加到超過可用處理器的數量,因為並非所有線程都能正常工作每時每刻。 使用分析,您可以估計典型請求的等待時間(WT)與服務時間(ST)的比率。 如果我們將此比率稱為WT / ST,對於N處理器系統,您將需要大約N *(1 + WT / ST)線程來保持處理器的充分利用。

處理器利用率不是調整線程池大小的唯一考慮因素。 隨着線程池的增長,您可能會遇到調度程序,可用內存或其他系統資源的限制,例如套接字,打開文件句柄或數據庫連接的數量。

因此,如果您的線程主要是cpu綁定,那么配置您的應用程序,然后將線程池大小設置為核心數或核心數+ 1.如果您花費大部分時間等待數據庫調用完成,那么請嘗試使用相當多的線程,並查看應用程序的執行情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM