python - 带有apache和django的virtualbox linux guest太慢了

标签 python linux django apache

我有一个在 virtualbox 中运行的 CentOS 客户机。它运行 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 动态分配。

最佳答案

问题是 Windows 主机目录。

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

我的建议是将所有文件都放在客户操作系统中,这应该会大大提高速度。

替代方案完全抛弃 Windows,在客户操作系统中运行整个开发环境。

关于python - 带有apache和django的virtualbox linux guest太慢了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21300838/

相关文章:

python - 使用 Python 从维基百科页面中提取主要文章文本

linux - 如何正则表达式跟踪过程?

python - 在 Django 中,如何将 "This field is required."更改为 "Name is required"?

python - 当我运行单个单元测试时,为什么 Django Behave 测试运行程序显示 "ignoring label with dot"?

linux - IPC msgsnd 意外等待

django - list_allowed_methods和detail_allowed_methods之间的Tastypie区别

python - 无法在 Windows 中的 python 中安装 MySQL

python - 如何在 matplotlib 中将变量名打印为标题

python - 在 Python 中模拟套接字连接

c++ - 增加 X11 R6 中的字体大小和属性