【问题标题】:virtualbox linux guest with apache and django is too slow带有apache和django的virtualbox linux guest太慢了
【发布时间】:2014-02-13 13:38:02
【问题描述】:

我有一个 CentOS 来宾在 virtualbox 中运行。它运行 apache 和 django。我所有的 django 网站源文件都在 windows 主机目录中。我在 CentOS 中安装了这个目录。文件系统为 vboxsf。

问题是,当我在 Windows 主机浏览器中访问来宾 Apache url 时,它的加载速度非常慢。我的意思是浏览器等待时间大约是页面加载前 17 秒。

为了对此进行调查,我使用了 python 分析,但无法使用此分析器数据找到问题。请在探查器数据下方找到。

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
      578    4.300    0.007    7.650    0.013 /usr/local/python2.7/lib/python2.7/zipfile.py:755(_RealGetContents)
   345837    1.146    0.000    1.520    0.000 /usr/local/python2.7/lib/python2.7/zipfile.py:277(__init__)
  1383348    0.752    0.000    0.752    0.000 {method 'read' of 'cStringIO.StringI' objects}
      578    0.560    0.001    9.182    0.016 build/bdist.linux-x86_64/egg/pkg_resources.py:1452(build_zipmanifest)
   347095    0.417    0.000    0.417    0.000 {_struct.unpack}
      575    0.285    0.000    9.738    0.017 build/bdist.linux-x86_64/egg/pkg_resources.py:887(resource_stream)
   345837    0.273    0.000    0.273    0.000 /usr/local/python2.7/lib/python2.7/zipfile.py:368(_decodeExtra)
   345837    0.258    0.000    0.401    0.000 /usr/local/python2.7/lib/python2.7/zipfile.py:854(getinfo)
   769042    0.248    0.000    0.248    0.000 {method 'append' of 'list' objects}
   345906    0.212    0.000    0.212    0.000 {method 'find' of 'str' objects}
   345837    0.207    0.000    0.207    0.000 /usr/local/python2.7/lib/python2.7/zipfile.py:362(_decodeFilename)
   346850    0.205    0.000    0.205    0.000 {method 'replace' of 'str' objects}
      578    0.204    0.000    0.292    0.001 /usr/local/python2.7/lib/python2.7/zipfile.py:822(namelist)
 2579/621    0.173    0.000    0.363    0.001 /usr/local/python2.7/lib/python2.7/sre_parse.py:379(_parse)
   345957    0.162    0.000    0.162    0.000 {chr}
   356098    0.153    0.000    0.153    0.000 {method 'get' of 'dict' objects}
    22293    0.084    0.000    0.096    0.000 /usr/local/python2.7/lib/python2.7/sre_parse.py:182(__next)
      600    0.080    0.000    0.080    0.000 {method 'get_data' of 'zipimport.zipimporter' objects}
 3896/608    0.071    0.000    0.193    0.000 /usr/local/python2.7/lib/python2.7/sre_compile.py:32(_compile)
        1    0.068    0.068    0.068    0.068 /usr/local/python2.7/lib/python2.7/site-packages/celery-3.0.16-py2.7.egg/celery/backends/base.py:15()
      578    0.056    0.000    9.291    0.016 build/bdist.linux-x86_64/egg/pkg_resources.py:1490(__init__)
5054/1785    0.052    0.000    0.062    0.000 /usr/local/python2.7/lib/python2.7/sre_parse.py:140(getwidth)
      894    0.052    0.000    0.806    0.001 /usr/local/python2.7/lib/python2.7/re.py:226(_compile)
      608    0.052    0.000    0.143    0.000 /usr/local/python2.7/lib/python2.7/sre_compile.py:361(_compile_info)
     1287    0.040    0.000    0.083    0.000 /usr/local/python2.7/lib/python2.7/sre_compile.py:207(_optimize_charset)
        1    0.039    0.039    0.060    0.060 /usr/local/python2.7/lib/python2.7/site-packages/ZSI-2.1_a1-py2.7.egg/ZSI/wstools/WSDLTools.py:10()
    37496    0.039    0.000    0.039    0.000 {isinstance}
  383/164    0.038    0.000   11.982    0.073 {__import__}
        1    0.037    0.037    0.190    0.190 /usr/local/python2.7/lib/python2.7/site-packages/ZSI-2.1_a1-py2.7.egg/ZSI/__init__.py:6()
      575    0.036    0.000    9.841    0.017 /usr/local/python2.7/lib/python2.7/site-packages/pytz-2012h-py2.7.egg/pytz/__init__.py:84(open_resource)
        5    0.032    0.006    0.032    0.006 {method 'commit' of '_mysql.connection' objects}
        3    0.031    0.010    0.033    0.011 /usr/local/python2.7/lib/python2.7/site-packages/django/core/cache/backends/memcached.py:153(__init__)

我认为是共享文件系统导致了问题,所以我只是将整个代码库复制到本地 CentOS 来宾,但是,我又遇到了同样的性能问题。

任何帮助将不胜感激。谢谢。

编辑: 访客规格

操作系统:CentOS 5.8

内存:2GB

存储空间:10GB 动态分配。

【问题讨论】:

  • 您没有提及您的客人的规格。
  • @BurhanKhalid 添加了规范。
  • 您用来访问访客的 IP 是什么?使用仅限主机的网络,而不是客人的默认 NAT 接口。

标签: python linux django apache


【解决方案1】:

问题是 Windows 主机目录。

当您从 Apache 请求文件时,它很可能会派生一个新的 UNIX 进程,该进程需要将整个 Python + Django 堆栈加载到内存中。执行此往返文件系统会从 Windows 分区读取 SMB 网络文件系统,这非常昂贵。

我的建议是将所有文件都放在来宾操作系统中,这样可以大大提高速度。

完全放弃 Windows 并在来宾操作系统中运行您的整个开发环境。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 2023-03-11
    • 2015-01-08
    相关资源
    最近更新 更多