首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对Django web应用程序的请求挂起;简单的调试技巧?

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

Stack Overflow用户
提问于 2011-01-13 11:03:59
回答 1查看 3.1K关注 0票数 0

更新-解决

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

非常感谢你的评论和帮助,并对此表示歉意.我将研究在任何情况下从mod-python升级:-)

摘要

我正在维护一个Django网络应用程序,直到几天前它还在运行,但是现在所有的web请求都挂了很长时间。我不知道有什么变化,所以问题可能很简单。

我尝试过重新启动and服务器,并重新启动httpd。“‘top”显示服务器在CPU和内存方面做得很好。

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

详细信息

我没有创建web服务器,因此不幸的是,我并不完全确定详细信息,也不确定在哪里查找所有日志等等。我知道web服务器由以下组件组成:使用Django实现;在Linux服务器上运行;使用PostgreSQL数据库;用于静态内容;Apache处理传入的HTTP请求并通过mod_python传递给Django;使用memcached缓存呈现的页面。我确实可以完全访问Linux服务器和数据库,所以如果我知道在哪里查找,就可以愉快地查看任何东西。

当我提出新请求时,/var/log/httpd/access_log和error_log显示如下行。我不知道mod_python行是否表示错误(当我搜索这个日志时,没有明显的错误)。

access_log:

代码语言:javascript
复制
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)"

error_log:

代码语言:javascript
复制
[Thu Jan 13 10:34:19 2011] [notice] mod_python: (Re)importing module 'django.core.handlers.modpython'

运行开发服务器的输出

代码语言:javascript
复制
# 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输出中没有看到该页面:

代码语言:javascript
复制
# 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/重定向到./testrunX/坏/页1/)。

代码语言:javascript
复制
// This trace, on a different server but with a similar setup, shows that the
// 301 redirect is expected, and is not the source of the problem
[server2]# 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:47:59] "GET /testruns HTTP/1.1" 301 0
[13/Jan/2011 14:47:59] "GET /testruns/ HTTP/1.1" 200 11568
[13/Jan/2011 14:47:59] "GET /static/myapp.css HTTP/1.1" 404 1131
[13/Jan/2011 14:47:59] "GET /static/myapp_print.css HTTP/1.1" 404 1131
[13/Jan/2011 14:47:59] "GET /static/star.png HTTP/1.1" 404 1131
[13/Jan/2011 14:47:59] "GET /static/myapp_ticks_crosses.css HTTP/1.1" 404 1131
[13/Jan/2011 14:47:59] "GET /static/star.png HTTP/1.1" 404 1131
[13/Jan/2011 14:48:02] "GET /static/star.png HTTP/1.1" 404 1131

[13/Jan/2011 14:48:12] "GET /testruns/testrun1879/ HTTP/1.1" 301 0
[13/Jan/2011 14:48:12] "GET /testruns/testrun1879/broken/page1/ HTTP/1.1" 200 309477
[13/Jan/2011 14:48:12] "GET /static/myapp.css HTTP/1.1" 404 1131
[13/Jan/2011 14:48:12] "GET /static/myapp_print.css HTTP/1.1" 404 1131
[13/Jan/2011 14:48:13] "GET /static/myapp_ticks_crosses.css HTTP/1.1" 404 1131

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

memcached info

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

坏服务器:

代码语言:javascript
复制
// 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

好服务器:

代码语言:javascript
复制
// 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
EN

回答 1

Stack Overflow用户

发布于 2011-01-13 11:23:15

我只想提几点:

  • 您应该尽快避免使用mod_python,因为它的使用是不推荐的,以后django将不支持它。
  • 您能使用开发服务器再现问题吗?
  • 您能使用不同的数据库后端复制它吗?
  • 尝试使用django-调试-工具栏检查是否发生过复杂的数据库查询或类似的问题!
  • 错误日志不表示错误中的行!
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4679336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档