我的數據庫非常受cpu限制,我無法找到問題的根本原因。我目前有兩個應用程序服務器,每個應用程序服務器都通過Rails API通過ruby-pg gem連接到PostgreSQL。這兩個應用程序服務器還有sidekiq運行後臺作業,並且我有一些支持服務器通過sidekiq處理來自全國訂閱源的新帖子。如果我內存不足,解決方案看起來會很簡單。任何一般的想法,爲什麼我受到CPU限制?爲什麼我的PostgreSQL服務器cpu受到限制?
數據庫規格:
- Rackspace的8GB性能層級雲VM(8GB RAM,8倍核心CPU,SSD)
- 的Debian 7喘息Linux操作系統
- 的PostgreSQL 9.1在PostGIS擴展
可能的問題:
- PostgreSQL 9.1的索引不好
數據庫有近10GB的索引。我將把我的數據庫升級到PostgreSQL版本> = 9.2。在9.2版中,引入了僅索引掃描。
- 連接太多
在postgresql.conf,我已經設置爲 '500' 最大連接。通常全天只使用175個連接,但在高峯時段,sidekiq任務會將當前連接數增加到350個。建議使用8GB服務器實例建議多少個連接?
- 偶像連接
當我看一看在PSQL控制檯和pg_stat_activity,我看到sidekiq是留下了很多空閒連接。這些連接可能導致CPU通貨膨脹嗎?該修補程序是否存在於api或sidekiq中?
- 需要一個更強大的服務器
也許沒有一個bug。我可能需要簡單地增加服務器實例。如果我受到記憶限制,這又會更有意義。但是,這兩個應用程序服務器和3個支持sidekiq服務器都是4gb性能層實例。本質上,與數據庫交互的服務器合併的數據庫資源是其兩倍多。這應該甚麼?
其他問題:
- 我應該使用什麼工具/技術來解決這個問題?
- postgresql.conf中有關cpu使用情況的任何基本設置?
- 是否有任何與rails,sidekiq或pg gem相關的已知問題可能是促成因素? (我沒有看到任何未解決的問題。)
- 是否有任何一般的CPU使用情況的postgreSQL準則?
- 任何其他想法可能有助於我的搜索想法?
CPU會去postgres,ruby,sidekiq或其他東西嗎? 「頂」顯示你什麼?如果postgres,它是哪個進程? (使用頂部的'c'來顯示所謂的命令行。) – jjanes
是的,它是postgres。 –
22882 postgres 20 0 2238m 2.0g 2.0g S 21.4 25.7 16:58.12 postgres:xxadmin mysite_production 192.xxx.x.xx(41009)空閒交易 –