对Django web应用程序的请求正在挂起;简单的调试技巧?

对Django web应用程序的请求正在挂起;简单的调试技巧?,django,apache,webserver,mod-python,Django,Apache,Webserver,Mod Python,更新-已解决 问题是服务器的挂载指向本周早些时候退役的文件服务器;因此,毕竟与django/mod python/etc没有关系。更新挂载解决了这个问题 非常感谢您的评论和帮助,并为白费力气而道歉。。。我将研究在任何情况下升级mod python:-) 摘要 我正在维护一个Django web应用程序,它在几天前还可以正常工作,但现在所有的web请求都会挂起很长时间。我不知道有什么变化,所以问题可能很简单 我已尝试重新启动Web服务器,并重新启动httpd。”“顶部”显示服务器在CPU和内存方面

更新-已解决

问题是服务器的挂载指向本周早些时候退役的文件服务器;因此,毕竟与django/mod python/etc没有关系。更新挂载解决了这个问题

非常感谢您的评论和帮助,并为白费力气而道歉。。。我将研究在任何情况下升级mod python:-)

摘要

我正在维护一个Django web应用程序,它在几天前还可以正常工作,但现在所有的web请求都会挂起很长时间。我不知道有什么变化,所以问题可能很简单

我已尝试重新启动Web服务器,并重新启动httpd。”“顶部”显示服务器在CPU和内存方面运行良好

有人能建议其他容易出错的简单事情,或者其他需要检查的事情吗

更多详细信息

我没有创建web服务器,因此不幸的是,我不能完全确定全部细节,或者在哪里查找所有日志等。我知道web服务器由以下组件组成:使用Django实现;在Linux服务器上运行;使用PostgreSQL数据库;lighttpd用于静态内容;Apache处理传入的HTTP请求,并通过mod_python将它们传递给Django;使用memcached缓存呈现的页面。我确实可以完全访问Linux服务器和数据库,所以如果我知道去哪里看,我可以很高兴地到处看看

/每当我发出新请求时,var/log/httpd/access\u log和error\u log都会显示如下行。我不知道mod_python行是否指示错误(当我在谷歌上搜索这个日志时,没有什么明显的)

访问日志:

127.0.0.1 - - [13/Jan/2011:10:56:11 +0000] "GET /testruns/testrun2176/ HTTP/1.0" 301 - "http://myapp/testruns/" "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)"
错误日志:

[Thu Jan 13 10:34:19 2011] [notice] mod_python: (Re)importing module 'django.core.handlers.modpython'
运行开发服务器的输出

# python manage.py runserver 0.0.0.0:8088
Validating models...
0 errors found

Django version 1.0-final-SVN-unknown, using settings 'myapp.settings'
Development server is running at http://0.0.0.0:8088/
Quit the server with CONTROL-C.
[13/Jan/2011 14:23:31] "GET /testruns/testrun2176/ HTTP/1.1" 301 0
然后什么也没发生。网页被卡住了

我可以加载一个稍微简单一点的页面。通过开发版本,图片不会加载,但在其他方面也可以。简单页面位于/testruns/——但由于某些原因,我在runserver输出中没有看到该页面:

# python manage.py runserver 0.0.0.0:8088
Validating models...
0 errors found

Django version 1.0-final-SVN-unknown, using settings 'myapp.settings'
Development server is running at http://0.0.0.0:8088/
Quit the server with CONTROL-C.
[13/Jan/2011 14:27:42] "GET /static/myapp.css HTTP/1.1" 404 1113
[13/Jan/2011 14:27:42] "GET /static/myapp_print.css HTTP/1.1" 404 1113
[13/Jan/2011 14:27:42] "GET /static/myapp_ticks_crosses.css HTTP/1.1" 404 1113
我要再次指出,几天前一切都很顺利。从那时起,我就没有明确地更改过任何内容——我只是突然发现所需的页面无法加载,我正在试图找出原因

/var/log/httpd/log文件似乎没有显示任何特别有趣的内容,我不确定还应该看什么


我们正在运行第二台服务器,它可以处理不同的测试结果集。在上运行开发服务器表明需要301重定向(…/testrunX/redirects to…/testrunX/break/page1/)

所以我不认为存在无限循环。由于某种原因,请求/数据库查询/其他内容花费的时间太长或完全卡住

memcached info

坏服务器上的memcached看起来非常空。但如果web请求失败,这可能是意料之中的,即没有返回任何内容存储在缓存中(缓存过期时间为12小时)

坏服务器:

// Top - only using 6K memory (VIRT)
PID   USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
30743 nobody    15   0  6640 4972  476 S  0.0  1.9   0:00.01 memcached

// memcache-top from http://code.google.com/p/memcache-top/
// only using 0.2% available space
memcache-top v0.6       (default port: 11211, color: on, refresh: 3 seconds)
INSTANCE                USAGE   HIT %   CONN    TIME    EVICT/s READ/s  WRITE/s
127.0.0.1:11211         0.2%    0.0%    5       0.8ms   0.0     2       161
AVERAGE:                0.2%    0.0%    5       0.8ms   0.0     2       161
TOTAL:         111.0KB/ 64.0MB          5       0.8ms   0.0     2       161
好服务器:

// Top - using ~68K memory (VIRT)
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2503 nobody    15   0 67900 8256  396 S  0.0  3.2   0:01.68 memcached

// memcache-top - using 63% space
memcache-top v0.6       (default port: 11211, color: on, refresh: 3 seconds)
INSTANCE                USAGE   HIT %   CONN    TIME    EVICT/s READ/s  WRITE/s
127.0.0.1:11211         63.2%   0.0%    3       1.2ms   0.0     0       0
AVERAGE:                63.2%   0.0%    3       1.2ms   0.0     0       0
TOTAL:          40.5MB/ 64.0MB          3       1.2ms   0.0     0       0

我只想提几点:

  • 您应该尽快避免使用mod_python,因为它的用法已被弃用,而且django将来也不支持它
  • 您可以使用开发服务器重现问题吗
  • 您可以使用不同的数据库后端复制它吗
  • 尝试使用检查是否出现过复杂的数据库查询或类似问题
  • 错误日志中的行
只需提及以下几点:

  • 您应该尽快避免使用mod_python,因为它的用法已被弃用,而且django将来也不支持它
  • 您可以使用开发服务器重现问题吗
  • 您可以使用不同的数据库后端复制它吗
  • 尝试使用检查是否出现过复杂的数据库查询或类似问题
  • 错误日志中的行
运行开发服务器遇到相同的问题-请求挂起。目前,我正试图集中精力解释为什么这在几天前不起作用。我认为任何设置都没有改变;除非数据库中可能有更多的数据。从更长远的角度来看,离开mod_python可能是一种选择,但在此期间,我不认为这会导致当前的问题。@sam,你说你尝试了runserver。请求页面时,runserver的输出是什么。如果您没有看到任何输出,则可能存在防火墙或其他连接问题。您可能试图使用错误的url访问页面。@Skirmantas-我已更新问题以显示此输出。我很确定这不是URL/防火墙等问题,因为直到昨天为止一切都正常。运行开发服务器遇到了同样的问题-请求挂起。目前,我正试图集中精力解释为什么这在几天前不起作用。我认为任何设置都没有改变;除非数据库中可能有更多的数据。从更长远的角度来看,离开mod_python可能是一种选择,但在此期间,我不认为这会导致当前的问题。@sam,你说你尝试了runserver。请求页面时,runserver的输出是什么。如果您没有看到任何输出,则可能存在防火墙或其他连接问题。您可能试图使用错误的url访问页面。@Skirmantas-我已更新问题以显示此输出。我很确定这不是URL/防火墙等问题,因为直到昨天为止一切正常。301 resonse建议重定向…似乎URL可能会导致无限循环,如果在开发服务器上图像无法显示,您很可能缺少正确配置的静态视图来服务它们!正如您所描述的问题,它可能与url配置和您的视图更相关…301 resonse建议重定向…s
// Top - using ~68K memory (VIRT)
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
 2503 nobody    15   0 67900 8256  396 S  0.0  3.2   0:01.68 memcached

// memcache-top - using 63% space
memcache-top v0.6       (default port: 11211, color: on, refresh: 3 seconds)
INSTANCE                USAGE   HIT %   CONN    TIME    EVICT/s READ/s  WRITE/s
127.0.0.1:11211         63.2%   0.0%    3       1.2ms   0.0     0       0
AVERAGE:                63.2%   0.0%    3       1.2ms   0.0     0       0
TOTAL:          40.5MB/ 64.0MB          3       1.2ms   0.0     0       0