【问题标题】:BSON functions affecting performance - installation dependent影响性能的 BSON 函数 - 取决于安装
【发布时间】:2014-11-05 08:54:19
【问题描述】:

我正在使用 MongoDB/pymongo 处理一个相当复杂的 Django 应用程序。 在我的本地开发环境中,使用 Django 服务器,我获得了不错的性能。当我转移到在 Apache 下运行的远程服务器时,有一些 pymongo/BSON 方法会占用大量时间。在我的本地安装中,这些方法似乎根本没有被调用。。我很难找到导致 PyMongo 行为发生这种变化的显着差异。

这里是从远程服务器调用中选择的分析。同样,这些函数根本不会在本地调用。

   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)

【问题讨论】:

  • 原来MacOS的本地机器与这里的解决方案有关。查看答案。

标签: python django pymongo bson


【解决方案1】:

这可以通过使用 C 扩展编译 PyMongo 来解决。 MacOS 二进制文件带有这些自动编译的扩展,如果不满足依赖关系,Linux 安装将不会安装它们。

详情为here

简而言之 - 安装依赖项:

在 Debian 上:

sudo apt-get install build-essential python-dev

在红帽上:

sudo yum install gcc python-devel

然后重新安装 PyMongo:

pip install --upgrade pymongo

并享受性能改进。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-30
    • 1970-01-01
    • 2014-10-16
    • 2012-01-29
    相关资源
    最近更新 更多