1
我們是在Heroku上運行的Ruby on rails應用程序,我們正在使用Heroku的Postgres解決方案用於我們的數據庫。會在後臺線程上投入昂貴的查詢幫助網站性能?
我們有一個非常昂貴的數據庫查詢。大約需要45秒。我們使用memcache來緩存這個查詢......但是當用戶第一次進入在緩存中24小時後運行這個查詢的頁面時,這個查詢正在運行,這個站點基本上停止了。
我們正在考慮將查詢放在後臺線程上。這會很好地與memcache一起工作,並會幫助網站的性能?數據庫仍在處理大查詢會影響其他頁面的加載嗎?
取決於「網站基本崩潰」的原因。這個大查詢是否導致鎖爭用?餓了其他I/O進程?溢出巨大的臨時文件並導致嚴重的磁盤損壞?您需要從制定系統瓶頸的位置開始,以及減慢其他查詢的速度。查看'pg_locks'並查看http://wiki.postgresql.org/wiki/Lock_Monitoring。使用vmstat,top等(如果你可以在Heroku上)觀察系統的負載。查看'pg_stat_activity'查看是否有很多查詢排隊,如果是,它們處於什麼狀態。 – 2013-03-12 23:55:55