2014-09-11 53 views
1

我正在使用MongoDB/pymongo合理複雜的Django應用程序。 在我的本地開發環境中,使用Django服務器,我獲得了不錯的性能。當我轉移到遠程服務器,在Apache下運行時,有pymongo/BSON方法佔用大量時間。在我的本地安裝中,這些方法在所有似乎都不叫。我無法找到導致PyMongo行爲發生變化的顯着差異。影響性能的BSON函數 - 依賴於安裝

下面是從遠程服務器調用中選擇的分析。同樣,這些函數根本不會在本地調用。

ncalls tottime percall cumtime percall filename:lineno(function) 
    ... 
     684 0.007 0.000 10.042 0.015 __init__.py:497(decode_all) 
102704/735 1.193 0.000 10.035 0.014 __init__.py:325(_elements_to_dict) 
546543/4233 2.549 0.000 10.025 0.002 __init__.py:314(_element_to_dict) 
101969/1170 0.450 0.000 9.930 0.008 __init__.py:153(_get_object) 
101448/1045 0.963 0.000 9.917 0.009 __init__.py:168(_get_array) 
+0

事實證明,本地計算機是MacOS與此處的解決方案相關。看到答案。 – Laizer 2014-09-12 11:35:38

回答

2

這可以通過編譯PyMongo和C擴展來解決。 MacOS二進制文件隨附了自動編譯的擴展,如果不滿足依賴關係,Linux安裝將不會安裝它們。

詳情是here

總之 - 安裝依賴:

在Debian:

sudo apt-get install build-essential python-dev 

在RedHat:

sudo yum install gcc python-devel 

然後重新安裝PyMongo有:

pip install --upgrade pymongo 

享受性能改進。