我有一个Apache2 + mod_python设置已经开始响应不可能从某些日子开始 - 对于我的应用程序的任何请求,处理器时间为2秒。 一些有趣的观点:
我知道在哪里可以看到吗?
答案 0 :(得分:1)
假设它有一个无限循环。你怎么会找到它?
我想你只是暂停它在调试器中并查看堆栈各个级别的代码,因为你知道循环在堆栈的某个地方。正确?
假设循环不是无限,只需要很长时间。这有什么不同吗?
无论出现什么问题,如果它花费你一些百分比的时间,比如90%,或50%,或20%,那么当你暂停时,你就会抓住它。所以如果你暂停几次,你就会看到它。越糟糕,你需要暂停和观看的次数越少。很明显。
所以忘记时间安排。 Just find out what it's doing.
在回答问题时,这里有一些mod_python doc:
5.4.1 PythonEnablePdb语法:
PythonEnablePdb {On,Off}
默认值:PythonEnablePdb关闭
上下文:服务器 配置,虚拟主机,目录, htaccess覆盖:不是无模块: mod python.c当On,mod python将 执行其中的处理函数 使用Python的Python调试器pdb pdb.runcall()函数。因为pdb是 一个交互式工具,从httpd开始 带-DONE的命令行 使用此时的PROCESS选项 指示。一旦你的处理程序 输入代码后,您将看到一个Pdb 提示允许您单步执行 代码和检查变量。5.4.2 PythonDebug语法:
PythonDebug {On,Off}默认值:PythonDebug Off 上下文:服务器配置,虚拟主机, 目录,htaccess覆盖:不是无 模块:mod python.c通常, 由...产生的回溯输出 未捕获的Python错误被发送到 错误日志。使用PythonDebug On 指令指定,输出将 被送到客户端(以及 log),除非错误是IOError 在写作时,在这种情况下它会 转到错误日志。这个指令是 在开发过程中非常有用 处理。建议你这样做 不要将它用作生产环境 它可能会向客户透露 无意的,可能是敏感的 安全信息。
答案 1 :(得分:0)
分析应用是一个很好的起点(https://code.djangoproject.com/wiki/ProfilingDjango)。
在查看配置文件统计信息之前,请确保您知道django(或您正在使用的任何框架)的请求/响应周期。
大多数情况下,事情在视图中搞砸了,对于其他情况,它可能在中间件层中。观察您正在分析哪个层,功能明智或请求/响应中涉及的所有内容。
其他技巧如比较dev / prod模式之间的性能也可能有用。尝试使用django开发服务器来确保apache / mod_python不是罪魁祸首。
答案 2 :(得分:-1)
只需简介应用程序。有完整的指南here